基本 Apache 配置

基本 Apache 配置

在全新安装的 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

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

  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
    
  2. 您正尝试通过 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>

相关内容