Я настроил много virtualhosts в своем текущем apache2 сервере в моей локальной машине (Ubuntu 13.10).
Это - различные локальные сайты с доменами, которые установлены в моем /etc/hosts
:
127.0.0.1 localhost
127.0.0.1 agroplasticos.dev
127.0.0.1 resources.dev
127.0.1.1 luismasuelli-inspiron14
# 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
Где agroplasticos.dev
и resources.dev
сайты были созданы мной, и предыдущие настройки были установлены по умолчанию.
Для localhost
, agroplasticos.dev
, и resources.dev
, У меня есть записи сайта в /etc/apache2/sites-enabled
каталог (только те 3 записи существуют в этом каталоге), которые являются ссылками на соответствующие файлы в /etc/apache2/sites-available
:
agroplasticos.dev
похож:
<VirtualHost agroplasticos.dev:80>
ServerName agroplasticos.dev:80
ServerAdmin webmaster@localhost
DocumentRoot /var/www/agroplasticos
<Directory /var/www/agroplasticos>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/agroplasticos-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/agroplasticos-access.log combined
</VirtualHost>
и resources.dev
похож:
<VirtualHost resources.dev:80>
ServerName resources.dev:80
ServerAdmin webmaster@localhost
DocumentRoot /var/www/resources
<Directory /var/www/resources>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/resources-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/resources-access.log combined
</VirtualHost>
И - наконец, что не менее важно, localhost
похож на это:
<VirtualHost localhost:80>
ServerName localhost:80
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
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 ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
То, что я ожидаю, - то, что, если я получаю доступ к таким доменам, они разрешены к 127.0.0.1, и они подаются апачем, использующим различные настройки для каждого сайта. В частности, resources.dev
просто статический веб-сайт файлов (он имеет только изображения, которые я загружаю внешне через http из программ / сценарии, которые я делаю), таким образом, я не забочусь о ровном наличии PHP для такого сайта. Это означает: Я совершил нападки http://resources.dev/mirrorlings/images/sample.png
в моем браузере, и я получаю изображение.
Однако - и существует выгода - сайт успешно смонтирован, если у меня есть сетевое соединение. Если я не соединен, то:
http://localhost/
(образец, никогда измененный, "это работает" экран, появляется).http://resources.dev/
(сервер не смонтировал его; клиенты http как браузеры или загрузчики ActionScript не могут достигнуть такого URL).http://agroplasticos.dev/
(сервер не смонтировал его; то же о http клиентах).Я получаю этот журнал ошибок при выполнении sudo service apache2 restart
:
[Sun Jul 20 15:39:55 2014] [error] (111)Connection refused: Could not resolve host name localhost -- ignoring!
[Sun Jul 20 15:39:55 2014] [error] (111)Connection refused: Could not resolve host name agroplasticos.dev -- ignoring!
[Sun Jul 20 15:39:55 2014] [warn] The Alias directive in /etc/apache2/conf.d/phpmyadmin.conf at line 3 will probably never match because it overlaps an earlier Alias.
[Sun Jul 20 15:39:55 2014] [error] (111)Connection refused: Could not resolve host name agroplasticos.dev -- ignoring!
[Sun Jul 20 15:39:55 2014] [error] (111)Connection refused: Could not resolve host name localhost -- ignoring!
[Sun Jul 20 15:39:55 2014] [error] (111)Connection refused: Could not resolve host name resources.dev -- ignoring!
apache2: apr_sockaddr_info_get() failed for luismasuelli-inspiron14
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
[Sun Jul 20 15:39:56 2014] [error] (111)Connection refused: Could not resolve host name localhost -- ignoring!
[Sun Jul 20 15:39:56 2014] [error] (111)Connection refused: Could not resolve host name agroplasticos.dev -- ignoring!
[Sun Jul 20 15:39:56 2014] [warn] The Alias directive in /etc/apache2/conf.d/phpmyadmin.conf at line 3 will probably never match because it overlaps an earlier Alias.
[Sun Jul 20 15:39:56 2014] [error] (111)Connection refused: Could not resolve host name agroplasticos.dev -- ignoring!
[Sun Jul 20 15:39:56 2014] [error] (111)Connection refused: Could not resolve host name localhost -- ignoring!
[Sun Jul 20 15:39:56 2014] [error] (111)Connection refused: Could not resolve host name resources.dev -- ignoring!
apache2: apr_sockaddr_info_get() failed for luismasuelli-inspiron14
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Также не понимайте, почему это регистрируется, появился дважды. Вы видите, что тот же блок строки повторяется с одной второй задержкой.
И мой вопрос здесь: Почему делают у меня должно быть интернет-соединение, когда то, что я хочу, - то, что Apache разрешил такие поддельные домены как локальные, так как они находятся в /etc/hosts
? Что я должен настроить для разрешения локальный, без сети, разрешение?
Я пытался разработать, не имея интернет-соединения и не мог поразить свои локальные серверы, использующие локальный /etc/hosts
доменное разрешение к локальному (обратная петля) IP-адрес.
Необходимо отредактировать/etc/apache2/apache2.conf файл и добавить домены в глобальном разделе конфигурации.
Ваша апачская конфигурация смотрит хорошо. И они будут работать просто великолепно как нейтрализация, если у Вас будет интернет-соединение.
Но то, что Вы пропускаете, является локальным сопоставителем DNS, который может передать Ваш запрос локальному серверу, вместо того, чтобы заставить его разрешить в глобальном Интернете DNS. Существует мини-сервер DNS для названного DNSMASQ.
Можно настроить его для разрешения всех .dev доменов к петлевому адресу, не консультируясь с сервером DNS Интернета.
sudo apt-get install dnsmasq
Можно найти необходимую конфигурацию путем рассмотрения ее документов.
У Вас есть другая опция заставить его произойти через файл PAC. Хотя я предлагаю, чтобы Вы придерживались dnsmasq, поскольку это очень популярно и легче сделать это.
Существует другая вещь посмотреть на - /etc/nsswitch.conf
. Можно указать приоритет поисков имени хоста. У меня есть в моем nsswitch.conf файле следующая строка:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
Это - то, как интерпретировать его:
Хосты: строка указывает порядок, в котором попробуют различные услуги по определению имен. Значение по умолчанию к:
Начните путем проверки/etc/Hosts файла. Если тот файл обеспечивает IP-адрес для рассматриваемого имени хоста, он используется.
Иначе попробуйте mdns4_minimal, который попытается разрешить имя через многоадресную передачу DNS, только если это заканчивается .local. Если это сделает, но никакой такой хост mDNS не расположен, то mdns4_minimal возвратится НЕЗНАКОМЫЙ. Сервисный ответ переключателя имени по умолчанию на НЕЗНАКОМЫЙ должен был бы попробовать следующий перечисленный сервис, но переопределения записи [NOTFOUND=return] это и останавливают поиск с неразрешенным именем.
Затем попробуйте указанные серверы DNS. Это произойдет более или менее сразу, если имя не закончится в .local, или нисколько если это делает. При удалении записи [NOTFOUND=return] nsswitch попытался бы определить местоположение неразрешенных хостов .local через одноадресную передачу DNS. Это обычно было бы плохой вещью, поскольку она отправит много таких запросов к Интернету серверы DNS, которые никогда не разрешали бы их. По-видимому, это происходит много.
Финал mdns4 запись указывает, что mDNS попробуют за имена, которые не заканчиваются в .local, если Ваши указанные серверы DNS не могут разрешить их. Я думал, что это было предназначено для ловли хостов mDNS, когда Вы не делаете specifiy .local TLD, но я просто попробовал его, и он не работает. Угадайте, что я изучу его.
Источник: http://ubuntuforums.org/showthread.php?t=971693
Путем изменения порядка в этой строке можно изменить порядок того, как разрешены имена хостов. Это могло бы объяснить то, что localhost не может быть разрешен.
Похоже, что Ваши resolv.conf настройки вызывают Ваш файл hosts к проигнорированному.
Недавняя человечность использовала resolveconf для управления resolv.conf потому что лучше при разработке сценариев, где существуют многочисленные связи.
Общая resolvconf документация http://manpages.ubuntu.com/manpages/trusty/man8/resolvconf.8.html
Используйте технику в принятом ответе здесь для регенерации resolv.conf настроек How, я заставляю resolvconf повторно создавать resolv.conf после того, как я изменяю/etc/network/interfaces?