Я использую апачский virtualhosts для пары сайтов, я хочу убежать свой сервер человечности 14.04. Моя установка работает, если сайты находятся под /var/www
но если я пытаюсь работать один под /home/myuser/www/sitename/
я получаю 403 ошибки полномочий. Я проверил полномочия теперь. Мои / полномочия корневого каталога
drwxr-xr-x 5 root root 4096 Mar 7 02:05 .
Вот ls - al from home/myuser/www
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>
Там было изменение по сравнению с apache 2.2 и 2.4, которое изменило то, как вы это делаете. (И для 2.2 вы тоже сделали это неправильно...)
Вам не хватает "Require all granted" (или для 2.2 это были бы "Order allow,deny" и "Allow from all"):
<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, а ваш dir - это мой пользователь.
Либо измените пользователя, который работает с apache, на моего пользователя, либо смените владельца файлов с именами сайтов на www-data. Вы также можете создать сим-ссылку с именем сайта в файле /var/www. Это более чистый способ настройки веб-сервера.