Apache Virtualhosts 权限被拒绝。我试过所有我能想到的方法

Apache Virtualhosts 权限被拒绝。我试过所有我能想到的方法

我正在使用 apache 虚拟主机来运行几个我想在 ubuntu 14.04 服务器上运行的网站。如果网站位于以下位置,我的设置可以正常工作,/var/www但如果我尝试在以下位置运行一个网站,/home/myuser/www/sitename/则会收到 403 权限错误。我一次又一次地检查了权限。我的 /home 目录权限是

drwxr-xr-x 5 root root 4096 Mar 7 02:05 .

这是来自 home/myuser/www 的 ls -al

    myuser@zeppelin:~/www$ ls -al
    total 24
    drwxrwxr-x  3 myuser www-data 4096 Sep  3 19:39 .
    drwxrwxr-x 18 myuser myuser     4096 Sep  3 19:29 ..
    -rwxr-xr-x  1 myuser www-data 4096 Sep  3 19:39 ._.DS_Store
    -rwxr-xr-x  1 myuser www-data 6148 Sep  3 19:39 .DS_Store
    drwxrwxr-x  2 myuser www-data 4096 Sep  3 20:18 sitename

以下是结果ps auxwww | grep -i apache

root     17188  0.0  0.9 178496 17520 ?        Ss   20:25   0:00 /usr/sbin/apache2 -k start
www-data 17190  0.0  0.1  20488  2396 ?        S    20:25   0:00 /usr/sbin/apache2 -k start
www-data 17193  0.0  1.3 180792 23560 ?        S    20:25   0:00 /usr/sbin/apache2 -k start
www-data 17194  0.1  1.4 180740 26432 ?        S    20:25   0:01 /usr/sbin/apache2 -k start
www-data 17195  0.1  1.6 181472 29616 ?        S    20:25   0:01 /usr/sbin/apache2 -k start
www-data 17196  0.0  0.3 178544  5652 ?        S    20:25   0:00 /usr/sbin/apache2 -k start
www-data 17197  0.0  1.1 179960 21176 ?        S    20:25   0:00 /usr/sbin/apache2 -k start
www-data 17202  0.0  1.2 180804 23296 ?        S    20:25   0:00 /usr/sbin/apache2 -k start
www-data 17203  0.0  1.1 179960 21176 ?        S    20:25   0:00 /usr/sbin/apache2 -k start
www-data 17204  0.0  1.4 182564 25304 ?        S    20:25   0:00 /usr/sbin/apache2 -k start
www-data 17205  0.0  1.2 180804 23284 ?        S    20:25   0:00 /usr/sbin/apache2 -k start
myuser   17307  0.0  0.0   4688   812 pts/0    S+   20:47   0:00 grep --color=auto -i apache

这是我的 vhost 文件

  #
  #  Example.com (/etc/apache2/sites-available/www.example.com)
  #
  <Directory /home/myuser/www/sitename>
    Order allow, deny
    Allow from all
    Options FollowSymLinks Includes ExecCGI
    AllowOverride All
    DirectoryIndex index.php index.htm index.html
  </Directory>

  <VirtualHost *:80>
        ServerName www.sitename.com
        ServerAlias sitename.com

        # Indexes + Directory Root.
        DirectoryIndex  index.php index.html
        DocumentRoot /home/myuser/www/sitename/


        # Logfiles
         ErrorLog ${APACHE_LOG_DIR}/error.log
         CustomLog ${APACHE_LOG_DIR}/access.log combined

  </VirtualHost>

答案1

那里与 apache 2.2 和 2.4 有所不同这改变了你做事的方式。(而且你对 2.2 的处理也不正确……)。

您缺少“要求全部授予”(或者对于 2.2,它将是“命令允许、拒绝”和“允许全部”):

<Directory /home/myuser/www/sitename>
    Require all granted
    Options FollowSymLinks Includes ExecCGI
    AllowOverride All
    DirectoryIndex index.php index.htm index.html
</Directory>

答案2

看起来权限不对。Apache 进程以 www-data 身份运行,而您的目录是 myuser。

要么将 apache 运行的用户更改为我的用户,要么将站点名称文件的所有者更改为 www-data。您还可以将站点名称目录符号链接到 /var/www 目录。这是设置 Web 服务器的更简洁的方法。

相关内容