Как Apache определяет полное доменное имя?
Вопрос
Я использую Apache2, и при перезагрузке/перезапуске сервера я получаю это предупреждение:
apache2: Could not reliably determine the server's fully qualified domain name, using (my FQDN) for ServerName
Все работает нормально, но я пытаюсь выяснить, в чем причина ошибки.Я беру исходник, чтобы посмотреть, смогу ли его найти, но поскольку мой C не очень хорош....
Некоторые примечания:
- Если я изменю имя хоста системы, Apache будет использовать новое имя хоста.
- у меня есть
ServerName
набор;это то же самое, что имя хоста - У меня статический уникальный IP-адрес.
dig (hostname)
возвращает (мой IP),dig -x (my ip)
возвращает (имя хоста) - Мой файл хостов правильный
Версии:
Apache/2.2.9 Linux 2.6.24-23-xen x86_64 Description: Debian GNU/Linux 5.0 (lenny)
Есть идеи?
Решение
Вы уверены, что у вас есть ServerName
директива с правильным значением - вне любого <VirtualHost>
блоки?(Вам также понадобится ServerName
внутри каждого <VirtualHost>
заблокировать, конечно)
Когда Apache выдает это сообщение об ошибке, обычно это означает, что он не находит ServerName
для сервера в целом.Если эта директива установлена правильно, я не могу себе представить, почему Apache все еще будет жаловаться...
Другие советы
В Debian имя хоста задается при запуске благодаря сценарию /etc/init.d/hostname.sh, который использует файл /etc/hostname.Мы можем использовать этот файл для обновления имени хоста компьютера и его полного доменного имени (полного доменного имени).
Если ServerName
в вашем виртуальном хосте — my-computer.my-domain.ext, обязательно скопируйте точное имя в /etc/hosts
Осторожность: в файле /etc/hosts необходимо соблюдать порядок имени хоста и полного доменного имени.Сначала полное доменное имя, затем имя хоста и в конце локальный хост.
~$ echo "my-computer" > /etc/hostname
~$ echo "127.0.0.1 my-computer.my-domain.ext my-computer localhost" > /etc/hosts
~$ /etc/init.d/hostname.sh
Вы можете проверить изменение с помощью следующих строк:
~$ hostname
my-computer
~$ hostname --fqdn
my-computer.my-domain.ext
Старое имя хоста все еще может присутствовать в командной строке.Просто выйдите из системы, а затем войдите в систему, чтобы она исчезла.
Для получения дополнительной информации о настройке имени хоста и полного доменного имени в Debian (что также предотвращает появление предупреждения) проверьте следующее: http://movealong.org/hostname.html