在全新安装的 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>
但现在我收到了“禁止”错误消息。那么,在生产环境中,如何正确配置权限才能解决此问题呢?
答案1
我能想到两个可能的问题:
实际目录权限被搞砸了。这很容易测试,只需更改为 Apache 运行的用户并尝试列出该目录(假设 Apache 配置为以“www-data”运行):
sudo su -s /bin/sh www-data ls /home/myapp/release/1.0.0/src/public/
如果 Apache 用户没有访问权限,则路径中的每个目录(从开始)
/
都需要具有 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 访问不包含索引文件的目录,并且您未启用“索引”。这也很容易测试,只需查看
index.html
中是否有名为 (或 .php、.htm 等) 的文件/home/myapp/release/1.0.0/src/public
即可。如果没有,请添加一个或添加Options +Indexes
到<Directory /home/myapp/release/1.0.0/src/public>
阻止中。
答案2
apache 用户必须具有该目录的读取权限。还包括以下指令:
<Directory /home/myapp/release/1.0.0/src/public>
# ...
Order Allow,Deny
Allow from all
</Directory>