我正在使用 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 服务器的更简洁的方法。