Virtualhost
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
然後這是我的虛擬主機文件
# # 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 伺服器的一種更簡潔的方法。