Wo setzen Sie in Apache 2 die ServerName-Direktive global?

37

ANMERKUNG: Dies hängt mit meiner Frage zusammen: " Apache 2.4 wird nicht neu geladen, gibt es ein Problem mit meiner Konfiguration? ".

Ich versuche, eine lokale Site lokal zu testen. Nach meinem Verständnis hat Apache 2 (und vielleicht auch Apache) etwas namens VirtualHost. Mein kleines Verständnis sagt mir, dass Virtualhosting eine Möglichkeit ist, mit der eine Server- / IP-Adresse mehrere Domänen bedienen kann.

Auf jeden Fall erhalte ich beim Ausführen von Apache 2 die folgende Fehlermeldung, um festzustellen configtest, wo ich versage. Ich verwende Apache 2.4.10-1 und es scheint eine Menge Änderungen zwischen Apache 2.2 und Apache 2.4 zu geben, die mir nicht bekannt sind.

$ 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

Dies ist die /etc/hostsDatei:

 $ cat /etc/hosts
127.0.0.1    localhost
127.0.1.1    debian mini

Ich sehe auch eine leere /etc/hosts.confDatei. Möglicherweise müssen die Daten in /etc/hostskopiert werden, /etc/hosts.confdamit der Server sie erkennt.

Mein Hostname:

$ hostname
debian

Dies ist die Konfigurationsdatei der Site:

$ 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>

Ich habe auch über das Binden an Adressen und Ports gelesen , aber ich habe das aus mehreren Gründen nicht gut verstanden. Es gibt kein Beispiel dafür, in welcher Datei diese Zeilen abgelegt werden müssen und was davor und danach kommt. Ein Beispiel wäre viel besser gewesen.

Ich habe das getan und den Server neu gestartet, aber ich erhalte immer noch den gleichen Fehler.

~$ 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

Es scheint, dass es drei Konfigurationsdateien in Debian gibt, die ich kennen und verstehen muss.

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

und

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

Anscheinend ist apache2.conf die globale Konfigurationsdatei, während httpd.conf eine Benutzerkonfigurationsdatei ist. Es gibt auch ports.conf. Sowohl die apache2.conf als auch die ports.conf sind standardmäßig eingestellt, außer ich habe die Version von Apache von warnauf geändert debug.

Ich habe eines ausprobiert:

$ 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

Vielleicht hat jemand mehr Einsicht.

shirish
quelle

Antworten:

43

Die zu bearbeitende Datei:

/etc/apache2/apache2.conf

Befehl zum Bearbeiten der Datei:

sudo nano /etc/apache2/apache2.conf

Für einen globalen Servernamen können Sie ihn oben in die Datei einfügen (außerhalb der virtuellen Host-Tags).

Die erste Zeile sieht so aus:

ServerName myserver.mydomain.com

Speichern und testen Sie die Konfiguration mit folgendem Befehl:

apachectl configtest

Du solltest bekommen:

Syntax OK

Anschließend können Sie den Server neu starten und prüfen, ob die Fehlermeldung nicht angezeigt wird:

sudo service apache2 restart
Mark N Hopgood
quelle
2
Dies ist die richtige Debian-Antwort. Ich habe versucht /etc/apache2/conf-available/fqdn.conf, oder servername.confoder httpd.confohne Erfolg. Debian Jessieundapache 2.4.10
Dr. Beco
2
Wenn Sie conf-available/und haben conf-enabled/, erstellen Sie eine Datei in conf-available/und a2enconfaktivieren Sie sie mit dem Befehl . Auf diese Weise ärgert Sie dpkg nicht über nicht protokollierte Änderungen, wenn / wenn das apache2-commonPaket aktualisiert wirdapache2.conf
Kevin
Die Datei conf-availabledanach und eine Bearbeitung könnten /etc/apache2/conf-available/servername.confmit Inhalt sein ServerName myserver.mydomain.com(auf Raspberry Pi, Apache 2.4.10, Debian 8 (Jessie), Linux-Kernel 4.4.34 ausprobiert).
Peter Mortensen
@PeterMortensen könntest du das Beispiel teilen damit ich verstehe was du meinst.
Shirish
Die Datei existiert nicht
Black
5

Sie müssen die ServerName-Anweisung festlegen :

ServerName localhost

In Debian können Sie es einstellen /etc/apache2/conf.d/httpd.conf.

Unter macOS können Sie es einstellen /private/etc/apache2/httpd.conf.

cuonglm
quelle
5
In Ubuntu, setzen Sie es in /etc/apache2/apache2.conf
macki
1
Debian entweder: apache2.conf.
Dr. Beco
1
Für welche Versionen von Apache / Debian funktioniert das? Ich denke nicht, dass es für Apache 2.4 funktioniert. Es könnte /etc/apache2/apache2.confstattdessen sein.
Peter Mortensen
es funktioniert, Apache 2.4 unter Debian 8
erajuan
2

Führen Sie den folgenden Befehl aus, um Ihre Apache-Konfigurationsdatei zu finden:

apachectl -t -D DUMP_INCLUDES

Bearbeiten Sie dann diese Datei und suchen Sie die Zeile mit ServerNameund kommentieren Sie sie aus, so dass sie wie folgt aussieht:

ServerName localhost
Kenorb
quelle
0

In der apache24 Konfigurationsdatei sehen Sie folgende Zeile ServerName:80:

  1. Lass es frei.
  2. Dann schreiben Sie unterhalb dieser Zeile im leeren Raum:
    ServerName www.name (of your official domain or website.com:80)
  3. Speichern Sie die Konfigurationsdatei.
  4. Gehe zu cmd, öffne es, während der Administrator dirzu Apache24 wechselt
  5. Dann cd apache24dann cd bindann httpd.exe

Sie werden sehen, dass das Problem behoben ist.

Rachel Horsham
quelle