Где в Apache 2 вы устанавливаете директиву ServerName глобально?


37

ПРИМЕЧАНИЕ. Это связано с моим вопросом: « Apache 2.4 не будет перезагружаться, есть проблемы с моей конфигурацией? ».

Я пытаюсь проверить локальный сайт, локально. Как я понимаю, в Apache 2 (и, возможно, в Apache) есть что-то, что называется VirtualHost. Мое небольшое понимание говорит мне, что виртуальный хостинг - это способ, при котором один сервер / IP-адрес может обслуживать несколько доменов.

Во всяком случае, я получаю следующую ошибку при запуске Apache 2, configtestчтобы увидеть, где у меня не получается . Я использую Apache 2.4.10-1, и кажется, что между Apache 2.2 и Apache 2.4 произошло много изменений, о которых я не знаю.

$ sudo apache2ctl configtest
[sudo] password for shirish:
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK

Это /etc/hostsфайл:

 $ cat /etc/hosts
127.0.0.1    localhost
127.0.1.1    debian mini

Я также вижу пустой /etc/hosts.confфайл. Возможно, /etc/hostsнеобходимо скопировать данные, чтобы /etc/hosts.confсервер мог принять это во внимание?

Мое имя хоста:

$ hostname
debian

Это файл конфигурации сайта:

$ cat /etc/apache2/sites-available/minidebconfindia.conf
<VirtualHost mini:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/html/in2014.mini/website

    <Directory />
        Options +FollowSymLinks +Includes
        Require all granted
    </Directory>

    <Directory /var/www/html/in2014.mini/website/>
        Options +Indexes +FollowSymLinks +MultiViews +Includes
        Require all granted
    </Directory>
</VirtualHost>

Я также читал о привязке к адресам и портам , но я не очень хорошо понял по нескольким причинам. Он не дает / делится примером того, в какой файл нужно поместить эти строки и что будет до и после. Пример был бы намного лучше.

Я сделал это и перезапустил сервер, но все равно получаю ту же ошибку.

~$ sudo apache2ctl configtest
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK

Кажется, в Debian есть три файла конфигурации, которые мне нужно знать и понимать.

/etc/apache2$ ls *.conf
apache2.conf  ports.conf

а также

/etc/apache2/conf.d$ ls *.conf
httpd.conf

Очевидно, apache2.conf - это файл глобальной конфигурации, а httpd.conf - файл пользовательской конфигурации. Есть также ports.conf. Оба apache2.conf и ports.conf имеют значения по умолчанию, за исключением того, что я изменил уровень логики Apache с warnна debug.

Я попробовал еще одну вещь:

$ sudo apache2ctl -S
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
127.0.1.1:80           debian (/etc/apache2/sites-enabled/minidebconfindia.conf:1)
*:80                   127.0.1.1 (/etc/apache2/sites-enabled/000-default.conf:1)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex watchdog-callback: using_defaults
Mutex default: dir="/var/lock/apache2" mechanism=fcntl
Mutex mpm-accept: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

Может быть, у кого-то есть больше понимания.

Ответы:


43

Файл для редактирования:

/etc/apache2/apache2.conf

Команда для редактирования файла:

sudo nano /etc/apache2/apache2.conf

Для глобального имени сервера вы можете поместить его вверху файла (вне тегов виртуального хоста).

Первая строка выглядит так:

ServerName myserver.mydomain.com

Затем сохраните и протестируйте конфигурацию с помощью следующей команды:

apachectl configtest

Вы должны получить:

Синтаксис ОК

Затем вы можете перезагрузить сервер и убедиться, что вы не получили сообщение об ошибке:

sudo service apache2 restart

2
Это правильный ответ Debian. Я пытался /etc/apache2/conf-available/fqdn.confили servername.confили httpd.confбезрезультатно. Debian Jessie, иapache 2.4.10
доктор Беко

2
Если у вас есть conf-available/и conf-enabled/, создайте файл conf-available/и используйте команду a2enconfдля его включения. Таким образом, dpkg не будет раздражать вас неотслеживаемыми изменениями, когда / если apache2-commonпакет обновитсяapache2.conf
Кевин

После этого файл conf-availableи правка могут быть /etc/apache2/conf-available/servername.confс содержимым ServerName myserver.mydomain.com(пробовал на Raspberry Pi, Apache 2.4.10, Debian 8 (Jessie), ядре Linux 4.4.34).
Питер Мортенсен

@PeterMortensen не могли бы вы использовать приведенный пример, чтобы я мог понять, что вы имеете в виду.
Шириш

Файл не существует
черный

5

Вы должны установить директиву ServerName :

ServerName localhost

В Debian вы можете установить его /etc/apache2/conf.d/httpd.conf.

В macOS вы можете установить его /private/etc/apache2/httpd.conf.


5
В Ubuntu, установите его в /etc/apache2/apache2.conf
Макки

1
Debian либо: apache2.conf.
Доктор Беко

1
Для каких версий Apache / Debian это работает? Я не думаю, что это работает для Apache 2.4. Это может быть /etc/apache2/apache2.confвместо.
Питер Мортенсен

это работает, Apache 2.4 на Debian 8
erajuan

2

Чтобы найти файл конфигурации Apache, попробуйте выполнить следующую команду:

apachectl -t -D DUMP_INCLUDES

Затем отредактируйте этот файл, найдите строку ServerNameи раскомментируйте ее, чтобы она выглядела следующим образом:

ServerName localhost

0

В конфигурационном файле apache24 вы увидите строку ServerName:80:

  1. Оставьте это поле пустым.
  2. Затем под этой строкой в ​​пустом месте напишите:
    ServerName www.name (of your official domain or website.com:80)
  3. Сохраните файл конфигурации.
  4. Перейдите cmd, откройте его как администратор, перейдите dirтуда, где находится apache24
  5. Тогда cd apache24тогда cd binтогда httpd.exe

Вы увидите, что проблема решена.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.