Когда я перезагружаю свой сервер Apache с помощью команды
sudo /etc/init.d/apache2 restart
, я получаю следующую ошибку:
Restarting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
... waiting apache2:
Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
Использует ли сервер 127.0.1.1 вместо 127.0.0.1? В чем причина этой ошибки?
6 # 13.04 и старше
Это просто дружеское предупреждение, а не совсем проблема (например, что-то не работает).
Если вы перейдете по адресу:
/etc/apache2/apache2.conf
и вставите:
ServerName localhost
, а затем перезапустите apache, набрав в терминале:
sudo systemctl reload apache2
, уведомление исчезнет.
Если у вас есть имя внутри / etc / hostname
, вы также можете использовать это имя вместо localhost
.
И он использует 127.0.1.1
, если он находится внутри вашего / etc / hosts
:
127.0.0.1 localhost
127.0.1.1 myhostname
Устранение неполадок Apache
Если вы получаете эту ошибку:
apache2: Could not determine the server's fully qualified domain name,
using 127.0.0.1 for ServerName
затем используйте текстовый редактор, такой как «sudo nano» в командной строке или «gksudo gedit» на рабочем столе, чтобы создать новый файл,
sudo nano /etc/apache2/conf.d/fqdn
или
gksu "gedit /etc/apache2/conf.d/fqdn"
, затем добавьте
ServerName localhost
в файл и сохраните. Все это можно сделать с помощью одной команды со следующим:
echo "ServerName localhost" | sudo tee /etc/apache2/conf.d/fqdn
Но в Ubuntu 14.04:
echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/fqdn.conf
sudo a2enconf fqdn
Не забудьте ".conf" (без него не будет работать).
Apache2 также может получить FQDN с правильно сконфигурированного системного хоста, а не с жесткого кода в конфигурационном файле apache. Жёсткое кодирование также приведёт к путанице, если имя хоста изменится. На самом деле вам не нужны никакие директивы ServerName
в httpd.conf
или любые конфигурационные файлы apache.
Вставьте в /etc/hosts
:
# IPv4 and IPv6 localhost aliases
127.0.0.1 hostname.domainname.com hostname localhost
::1 hostname.domainname.com hostname localhost
где hostname.domainname.com
является FQDN вашей машины.
Наряду с правильно настроенным именем хоста в /etc/hostname/
или в hostnamectl
, это также поможет корректно работать другим службам на вашем компьютере (т.е. приглашение к входу в систему, показывающее Это имя хоста hostname.domainname.com
вместо Это имя хоста. unknown_domain
.)
Откройте файл /etc/apache2/httpd.conf
:
редактор sudo /etc/apache2/httpd.conf # [1]
По умолчанию он будет пустым. Просто добавьте следующую строку:
ServerName localhost
Сохраните файл и выйдите.
Перезапустите сервер
sudo service apache2 restart
[1] Запустить редактор по умолчанию, см. sudo update-alternatives --config editor
В новой версии apache2 вы просто выполните следующую команду:
sudo nano /etc/apache2/apache2.conf
Добавьте следующую новую строку в конце файла:
ServerName localhost
Затем перезапустите apache2:
sudo service apache2 restart
Готово.
Я считаю, что лучше создать новый файл в /etc/conf.d
, чтобы изменить либо apache2.conf
, либо httpd.conf
.
Это личное предпочтение, благодаря которому мои изменения конфигурации хранятся отдельно от пакета распространения. Так что обновления менее сложны.
Я создаю файл /etc/apache2/conf.d/AAserverName
, и он содержит только:
ServerName myhost.mycomain.tld
Другие предложения, безусловно, также работают.
Начиная с версии 2.4 Apache, которая доступна по умолчанию с 13.10, вы не можете использовать метод добавления конфигурационного файла в каталог conf.d
.
Apache больше не использует каталог conf.d
. Все конфигурационные файлы хранятся в каталоге /etc/apache2/conf-available
и теперь все конфигурационные файлы должны иметь расширение .conf
.
Чтобы решить это сообщение в Apache 2.4, мы должны создать конфигурационный файл в каталоге conf-available. Например, servername.conf
.
sudo vi /etc/apache2/conf-available/servername.conf
И внутри этого нам просто нужно добавить одну строку
ServerName localhost
Вы можете объединить две предыдущие команды в одну с:
echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/servername.conf
Если вы хотите использовать имя домена или любое другое имя в зависимости от требований, просто замените localhost
на то, что вам нужно. Далее вы должны включить эту конфигурацию. Для этого вам нужно выполнить следующую команду:
sudo a2enconf servername
a2enconf
- это команда для включения конфигурационного файла в Apaches 2.4. Также обратите внимание, что имя сервера
в вышеприведенной команде - это имя файла конфигурации servername.conf
. Если ваш файл конфигурации был ngenericserver.conf
, то вы должны написать sudo a2enconf ngenericserver
.
После этого перезагрузите сервер, и приведенное выше сообщение больше не будет вас беспокоить.
sudo service apache2 reload
или
sudo apache2ctl graceful
После этого вы увидите, что сообщение больше не будет показываться и проблема будет исправлена.
В Ubuntu 16.04:
sudo -i
echo 'ServerName localhost' > /etc/apache2/conf-available/server-name.conf
a2enconf server-name
Добавить ServerName localhost
в
sudo leafpad /etc/apache2/apache2.conf
sudo leafpad /etc/apache2/httpd.conf
Это не ошибка .. Это просто напоминание другу
Указание Имя сервера localhost
в ваших конфигурационных файлах за пределами разделов виртуального хоста - это способ сделать это.
В некоторых других ответах предлагается изменить /etc/apache2/httpd.conf
. Этот файл перезаписывается при обновлении apache с apt. Для конфигурации Apache, которую вы не хотите перезаписывать, вам следует создать новый файл. Вот "путь Debian" для изменения этой конфигурации:
# create the configuration file in the "available" section
echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/servername.conf
# enable it by creating a symlink to it from the "enabled" section
sudo a2enconf servername
# restart the server
sudo service apache2 restart
Это в основном тот же самый ответ, что и ответ Старка, но в простой для копирования и вставки форме сценария. Изначально я разместил это в вопросе, который был помечен как дубликат: https://askubuntu.com/a/432408
В Ubuntu 16.04 :
Добавить ServerName localhost
в файл httpd.conf
используя следующую команду.
sudo vi /etc/apache2/httpd.conf
Затем включите эту строку Включите httpd.conf
в конец этого файла
sudo vi /etc/apache2/apache2.conf
Проверьте синтаксические ошибки еще раз
sudo apache2ctl configtest
Теперь вы должны получить
Syntax OK
Теперь вы можете корректно перезапустите сервер, перезагрузив конфигурацию
sudo service apache2 reload
, или завершите процесс и запустите снова
sudo service apache2 restart
В Ubuntu 11.10 я видел это сообщение вместе с зависанием загрузки из-за того, что мой диск был заполнен. Один из файлов журнала перестал работать . Возможно, на самом деле проблемы с Apache не было, но это сообщение было последней подсказкой перед тем, как загрузка зависла.
Чтобы решить проблему, мне пришлось загрузиться в режиме восстановления и удалить ошибочный файл журнала.
Если вы используете bash и хотите минимальные зависимости (и просто хотите однострочник для сценария точки входа , если вы используете Docker , как я), эти два варианта должно работать.
Если вам нужен localhost:
echo "ServerName localhost" >> /etc/apache2/apache2.conf
Если вы хотите существующее имя хоста:
echo "ServerName $ (cat / etc / hostname) ">> /etc/apache2/apache2.conf
Здесь используются операторы перенаправления bash для добавления строки в конец файла. Echo автоматически вставляет новую строку, так что все готово.
Выполните следующую команду:
apachectl -t -D DUMP_INCLUDES
, чтобы определить путь в файл конфигурации httpd.conf
, затем отредактируйте этот файл и раскомментируйте / измените строку, в которой указано значение для параметра ServerName
, например
ServerName localhost
Для веб-сервера используйте зарегистрированный DNS-имя (например, example.com
).
Если у вашего хоста нет зарегистрированного DNS-имени, введите здесь его IP-адрес.
В Ubuntu 16.04 :
Добавьте ServerName localhost
в файл httpd.conf
, используя следующую команду.
sudo vi /etc/apache2/httpd.conf
Затем включите эту строку Включите httpd.conf
в конец этого файла
sudo vi /etc/apache2/apache2.conf
Еще раз проверьте синтаксические ошибки
sudo apache2ctl configtest
Теперь вы должны получить
Syntax OK
Теперь вы можете корректно перезапустить сервер, перезагрузив конфигурация sudo service apache2 restart