VHOST не работает в Apache

VHOST не работает в Apache

Я получил работающий LAMP-сервер в Ubuntu 11.04. Теперь проблема в том, что веб-сайты должны быть включены и выключены из терминала. Все они должны быть доступны из, http://localhostчто не так уж эффективно. Поэтому я создал VHOSTS, используя некоторые руководства из сети. Вот код для него

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    Servername site.com
    ServerAlias www.site.com
    DocumentRoot /home/starx/public_html/site/public
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/starx/public_html/site/public>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>
nGen
    ErrorLog ${APACHE_LOG_DIR}/site-error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/site-access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Теперь я все еще не могу получить доступ к странице, http://site.comно если я захожу через http://localhsot/нее, то она открывается.

Я отключил все остальные сайты, включая сайт по умолчанию, и включил только один сайт, т.е.site

Как это исправить?

решение1

Я просто пытался заставить это работать, и, немного осмотревшись, я понял, что у меня пошло не так.

Я использую xampp (lampp) 1.80 для Ubuntu 12.04.

открыть/opt/lampp/etc/httpd.conf

См. строку 488

# Virtual hosts  
# Include etc/extra/httpd-vhosts.conf

удалите "#" из include.
Новая установка не загружает " httpd-vhosts.confиз коробки".

решение2

Согласно /usr/share/doc/apache2/README.Debian.gz, если вы хотите создать определения для дополнительных сайтов, вам нужно будет разместить отдельные фрагменты конфигурации сайта в /etc/apache2/sites-available/(см. /etc/apache2/sites-available/defaultпример). Затем вы можете включать и отключать сайты на данном хосте с помощью команд a2ensite(8) и a2dissite(8). Обратите внимание, что это может работать не совсем так, как описано, если распределенные конфигурации были существенно изменены.

Если сайт включен таким образом и продолжает не работать, вам нужно убедиться, что веб-сервер может разрешить имя нового сайта способом, который соответствует IP-адресу, который, по мнению веб-сервера, ему назначен: самый простой способ, вероятно, проверить с сервера. Вам также нужно убедиться, что клиент разрешает имя таким образом, что оно достигает нужного сервера (хотя разрешенный IP-адрес не обязательно должен совпадать с тем, который использует сервер). Для небезопасных сайтов проще всего это сделать с помощью и, после завершения соединения (без запроса), ввода следующих трех строк (обратите внимание, что третья строка пустая, но вы должны нажать Enter в третий раз):w3m https://my.new.secure.sitetelnet my.new.site 80

ПОЛУЧИТЬ/HTTP/1.1
Хост: my.new.site

Если это работает, все остальное — проблема браузера. Если первое сработало, а второе нет, вероятно, что-то странное на сетевом уровне (NAT, прокси и т. д.): как именно устранить неполадки, слишком сильно зависит от топологии сети и имеющихся устройств: пожалуйста, задайте другой вопрос с подробностями, если это относится к вам.

Если первый тест не пройден, дважды проверьте доступную на сервере службу имен и назначенные серверу IP-адреса (ifconfig -a). Также проверьте журналы доступа к сайту, чтобы убедиться, что вы видите соединение примерно в нужное время. Наконец, убедитесь, что ваш виртуальный хост прослушивает по имени, а не по IP, и не фильтрует результаты для / на основе IP в вашей директиве VirtualHost.

решение3

Я не уверен, что это то, что вам нужно.

Замените ваши коды этими простыми короткими кодами.

<VirtualHost *:80>
   ServerAdmin admin@localhost
   DocumentRoot YourDocumentRoot
   ServerName site.com
   ServerAlias www.site.com
   ErrorLog localhost
   CustomLog localhost-access_log common
</VirtualHost>

Вы можете прочитать больше о vhostздесь

решение4

Вы добавили site.com и www.site.com в файл /etc/hosts, чтобы убедиться в правильности маршрутизации DNS? Вы можете попробовать nslookup site.comпротестировать DNS.

Если вы хотите убедиться, что это http://localhostне сработает, удалите файлы /etc/apache2/default, default-ssl и используйте один виртуальный хост.

Связанный контент