Virtualhost

Apache Virtualhosts 權限被拒絕。嘗試了我能想到的一切

  • September 4, 2014

我正在將 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

然後這是我的虛擬主機文件

 #
 #  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>

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>

看起來權限是錯誤的。Apache 程序作為 www-data 執行,您的目錄是 myuser。

要麼將 apache 執行的使用者更改為我的使用者,要麼將站點名稱文件的所有者更改為 www-data。您還可以將站點名稱目錄符號連結到 /var/www 目錄中。這是設置 Web 伺服器的一種更簡潔的方法。

引用自:https://serverfault.com/questions/626133