Проблемы с настройкой VirtualHost в Apache2 на Ubuntu 12.04

После прочтения различных руководств [1] я все еще не могу заставить мои настройки VirtualHost работать должным образом. Я получаю 403 Forbidden, когда пытаюсь использовать VirtualHost с каталогом ниже моего пользовательского каталога в качестве его DocumentRoot.

Что я сделал до сих пор

  • Создан файл /etc/apache2/sites-available/workspace со следующим содержимым:

    NameVirtualHost *:80
    <VirtualHost *:80>
        ServerName project-site
        DocumentRoot /home/user/Workspace/project/site
    </VirtualHost>
    
  • Отредактированный файл /etc/hosts теперь дает:

    127.0.0.1   localhost
    127.0.1.1   my-machine
    
    # The following lines are desirable for IPv6 capable hosts
    ::1     ip6-localhost ip6-loopback
    fe00::0 ip6-localnet
    ff00::0 ip6-mcastprefix
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters
    
    # VirtualHosts added by me
    127.0.0.1   project-site
    
  • Включены виртуальные хосты с помощью sudo a2ensite workspace

  • Перезапустил Apache, используя sudo services apache2 restart
  • Пытался открыть http://project-site и http://project-site/test.html (где test.html присутствует в /home/user/Workspace/project/site/) в моем веб-браузере

Что случается

  • Перезапуская Apache, я получаю следующие сообщения в командной строке:

    * Restarting web server apache2
    apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
    [Sun May 13 10:33:37 2012] [warn] NameVirtualHost *:80 has no VirtualHosts
    [ OK ]
    
  • При открытии http://project-site или http://project-site/test.html выдается сообщение "403 Forbidden".

Что должно произойти

Я хочу, чтобы содержимое /home/user/Workspace/project/site отображалось при переходе к http://project-site.

Что я узнал до сих пор

Читая подобные вопросы на этом сайте, я узнал, что это, вероятно, проблема с разрешением [2]. Файлы в /home/user/Workspace/project/site могут быть недоступны для чтения пользователю www-data. Но как мне это узнать или исправить?

Кроме того, было упомянуто .htaccess файлов [3], расположенных в

/home/.htaccess
/home/user/.htacces
[...]
/home/user/path/to/project/.htaccess

и, возможно, не читается. Я никогда их не создавал, они мне не нужны, они мне понадобятся?

Второй ответ на другой вопрос [4] заставил меня использовать NameVirtualHost, отвечающий за предупреждение о перезапуске Apache. Нужно ли это, и если, как я могу использовать его правильно?

Любая помощь очень ценится! Сообщите мне, если вам нужно знать что-то еще, чтобы найти проблему.


Ресурсы

  1. http://www.thegeekstuff.com/2011/07/apache-virtual-host/, http://httpd.apache.org/docs/2.2/vhosts/name-based.html, http://mintarticles.com/read/software-articles/multiple-virtual-hosts-in-xampplampp-in-ubuntu,977/, http://www.pgorecki.pl/content/virtual-host-na-localho%C5%9Bcie-apache-ubuntu, ...
  2. Apache VirtualHost 403 Запрещено
  3. Ubuntu, Apache, виртуальный хост и доступ запрещен
  4. Конфигурация VirtualHost

person hielsnoppe    schedule 13.05.2012    source источник
comment
Надеюсь, это поможет Видео youtu.be/QaZBly7_0zo wilson18.com/how-to/linux-net...-server-12-04   -  person Chris Wilson    schedule 18.09.2012
comment
+1 ваш вопрос решил мою проблему :)   -  person Kevin    schedule 12.07.2013


Ответы (1)


Я нашел следующее решение, не удовлетворившее меня, но решившее мою основную проблему. Действительно, речь идет о разрешениях, подобных предложенным в [1]. Мой каталог /home/user был недоступен для веб-сервера. Чтобы предоставить минимально возможные разрешения, я использовал

chmod 701 /home/user

чтобы сделать его доступным. Кроме того, я рекурсивно передал групповое владение www-data для веб-корня виртуального хоста, как это было рекомендовано в [2], но я не уверен, нужно ли это.

sudo chown -R user:www-data /home/user/Workspace/project/site
sudo chmod -R g+s /home/user/Workspace/project/site

Я собираюсь попросить более элегантное решение в отдельном вопросе.

Что касается других упомянутых проблем, я узнал с помощью [3] помимо других ресурсов следующее:

  • Не обязательно и может привести к ошибке наличие NameVirtualHost *:80 в описании виртуальных хостов, если оно появляется в одном из других конфигурационных файлов apache.
  • Чтобы сообщить Apache, что его полное доменное имя localhost, создается файл /etc/apache2/conf.d/fqdn с содержимым ServerName localhost.

  1. https://stackoverflow.com/a/7576526/948404
  2. https://stackoverflow.com/a/9133067/948404
  3. https://help.ubuntu.com/community/ApacheMySQLPHP
person hielsnoppe    schedule 17.05.2012