Де в 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 ви можете використовувати приклад, що надається, щоб я зрозумів, що ви маєте на увазі.
shirish

Файлу не існує
Чорний

5

Ви повинні встановити директиву ServerName :

ServerName localhost

У Debian ви можете встановити його /etc/apache2/conf.d/httpd.conf.

На macOS ви можете встановити його /private/etc/apache2/httpd.conf.


5
В Ubuntu встановіть його в /etc/apache2/apache2.conf
macki

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.