基本的Apacheconfiguration

在新鲜的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权限的正确方法是什么?

我可以想到两个可能的问题:

  1. 实际的目录权限被搞砸了。 通过更改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 
  2. 您正试图通过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>