在新鲜的linux安装中,apache的文档根目录指向/ var / www / html
user apache group apache DocumentRoot /var/www/html <Directory /var/www/html> # ... </Directory>
我想我的documentRoot指向“/home/myapp/release/1.0.0/src/public”,所以我做了这个改变:
DocumentRoot /home/myapp/release/1.0.0/src/public <Directory /home/myapp/release/1.0.0/src/public> # ... </Directory>
但是现在我得到了“禁止”的错误信息。 那么为了在生产环境中解决这个问题,configuration权限的正确方法是什么?
我可以想到两个可能的问题:
实际的目录权限被搞砸了。 通过更改Apache运行的用户并尝试列出该目录(假设Apache被configuration为以“www-data”运行),可以非常容易地进行testing:
sudo su -s /bin/sh www-data ls /home/myapp/release/1.0.0/src/public/
如果Apache用户无权访问,path中的每个目录(从/开始)都需要具有对Apache用户或“其他”的读取和执行权限:
sudo chmod o+rx /home /home/myapp /home/myapp/release /home/myapp/release/1.0.0 \ /home/myapp/release/1.0.0/src /home/myapp/release/1.0.0/src/public
您正试图通过Apache访问一个不包含索引文件的目录,而且您还没有启用“索引”。 通过查看/home/myapp/release/1.0.0/src/public是否存在名为index.html (或.php,.htm等)的文件,也很容易testing。 如果没有,请添加一个或添加Options +Indexes到<Directory /home/myapp/release/1.0.0/src/public>块。
Apache用户必须具有该目录中的读取权限。 还包括这些指令:
<Directory /home/myapp/release/1.0.0/src/public> # ... Order Allow,Deny Allow from all </Directory>