Отредактировано (снова): я думал, что установка apache2 в моей операционной системе ubuntu (персональная) позволит мне «размещать» веб-сайты внутри себя - без выхода в Интернет. Теперь я понимаю, что два "работающих" домена на самом деле являются зарегистрированными доменными именами, а два других - это имена, которые я намерен зарегистрировать позже, когда я выйду на работу. Но отключение от Интернета останавливает работу даже первых двух доменов - хотя я знаю, что они получают свои файлы с localhost.mysitename.com. Что тут происходит? Сейчас я читаю etc / host и etc / host.conf и etc / nsswitch.conf - в правильном ли направлении я двигаюсь?
Я переписал эти вопросы, добавив больше информации. Проблема сохраняется. Спасибо:
Как вообще можно досконально прочитать документацию по apache на Настройка vHost, попробуйте практически все варианты и все еще сохраните начальный сценарий, в котором первые два vHosts и каталоги работают отлично, а затем все последующие плохо работают. «Плохой запрос» «Сервер не найден».
Вот базовый файл vHost (в / etc / apache2 / sites-available), реплицированный ровно 4 раза с изменением только «mysitename1», его DocumentRoot и его Directory. Кстати, эта версия использует IP-адрес localhost (127.0.0.1), но я использовал *: 80 с точно такими же результатами.
<VirtualHost 127.0.0.1>
ServerAdmin xx@yyyyy.com
ServerName localhost.mysitename1.com
DocumentRoot /home/folder/folder/folder/folder
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /home/folder/folder/folder/folder>
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>
ErrorLog "path to this site's error.log"
LogLevel warn
CustomLog "path to this site's access.log"
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>
А внутри ports.conf это: (Я начал с *: 80 вместо 127.0.0.1) - те же результаты, что описаны выше:
Listen 80
NameVirtualHost 127.0.0.1
Меня интересует предложение документа: «Вы можете помещать записи в файл хостов для локального тестирования, но это будет работать только с машины с этими записями хостов». Это все, что я пытаюсь сделать, по сути, это среда разработки, в которой я могу работать на нескольких сайтах локально. Я не могу найти этот файл "hosts", но мне интересно, ввел ли я свои первые два домена (давным-давно) и забыл, как я это сделал. ??
Спасибо за любую помощь.
Ответ был в файле / etc / hosts. Чтобы обнаружить IP-адреса для имен, системный DNS-преобразователь сначала (должен) обратиться к файлу / etc / hosts для name = ip, если его нет, он перейдет к поиску DNS. Прочтите "man hosts", чтобы увидеть синтаксис файла hosts. Назначьте всем своим доменам (желательно не FQDN) IP-адрес вашего localhost (127.0.0.1), пример:
127.0.0.1 localhost.exmaplesite1.com
127.0.0.1 localhost.exmaplesite2.com
Используйте localhost.examplesite1.com и localhost.examplesite2.com в качестве ServerName в директиве VirtualHost. См. Ссылку на документы для других настроек и синтаксиса. @Antonious использование единственного подстановочного знака не задокументировано Apache2, но он не понимал, что я пытался заставить определенные имена через петлю localhost, чтобы я мог разрабатывать веб-приложения в автономном режиме. Я никогда не понимал предположения @lynxman о том, что ошибка «Плохой запрос» или «Сервер не найден» может с самого начала записываться в журналы ошибок - хотя я все равно использовал отдельные файлы журналов для каждой директивы VirtualHost.
Кстати: «sudo host localhost.examplesite.com» распечатает IP-адрес сайта, ЕСЛИ «examplesite.com» - это реальный сайт. По-видимому, команда "sudo host" НЕ ищет настройки / etc / hosts и не влияет на IP. <- Да, я знаю, это меня хорошо облажало.
ура!
Поделюсь с вами своим рабочим конфигом.
Убедитесь, что вы связали свои виртуальные хосты в сайты с поддержкой. Apache выполняет каждый сайты с поддержкой файл в алфавитно-цифровом порядке, так что назовите свой сайт по умолчанию как-нибудь 0000-по умолчанию поэтому он будет выполнен первым. Это сайт, который ваши пользователи должны видеть в случае сбоя виртуального хостинга. Мой выглядит так:
NameVirtualHost *
<VirtualHost *>
ServerAdmin contact-us@obscuredomain.com
DocumentRoot /var/www/0000-default-site
<Directory />
Options FollowSymLinks
#AllowOveride set to All for mod rewrite (default None)
AllowOverride All
</Directory>
<Directory /var/www/0000-default-site>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# Uncomment this directive is you want to see apache2's
# default start page (in /apache2-default) when you go to /
#RedirectMatch ^/$ /apache2-default/
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel info
CustomLog /var/log/apache2/access.log combined
ServerSignature On
</VirtualHost>
Обратите внимание на директиву * NameVirtualHost **. Важно, чтобы это была самая первая директива в виртуальных конфигах. Итак, вы поместили его в начало 0000-по умолчанию и убедитесь, что сначала ничего не выполняется.
Затем назовите свой первый виртуальный хост 0010-yourdomain.name и твой второй 0020-another.name. Вот как выглядят мои виртуалы (обратите внимание, они немного отличаются от стандартных):
<VirtualHost *>
ServerName www.lickmyquads.net
ServerAlias lickmyquads.net
ServerAdmin contact-us@lickmyquads.net
DocumentRoot /var/www/lickmyquads.net/www/docroot
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/lickmyquads.net/www/docroot>
Options FollowSymLinks
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>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel info
CustomLog /var/log/apache2/access.log combined
ServerSignature On
#Custom Error
#ErrorDocument 404 /app/404.php
#ErrorDocument 404;2 /app/404.php
#ErrorDocument 404;3 /app/404.php
</VirtualHost>
Надеюсь, этот рабочий пример поможет вам разобраться. Если он не пытается запустить конфигурация apache2ctl команда, которая поможет найти любые синтаксические ошибки в вашей конфигурации.
Вы можете разместить в apache столько виртуальных хостов, сколько захотите, это похоже на то, что имена хостов либо очень похожи, либо перекрываются, при создании виртуального хоста в apache убедитесь, что
NameVirtualHost
директива для IP и порта, который вы обслуживаете%V
в формат вашего журнала (чтобы он показывал, какой домен попадает) или наличие файла в каждом VH, в котором указывается, кто это"Сервер не найден" похоже, что ваш хост-файл настроен неправильно. Расскажите немного о настройке вашего клиента; ОС, браузер, файл hosts и т. Д.
Если у вас несколько клиентов и вы не хотите поддерживать отдельные файлы хоста, вы можете настроить DNS-сервер с разделением горизонта.
http://en.wikipedia.org/wiki/Split-horizon_DNS
Это не так сложно, как кажется, и у наличия локального кэширующего DNS-сервера есть свои преимущества.