it-swarm.com.de

Apache2 startet beim Booten mit Ubuntu 16.04 nicht

Ich habe gerade einen neuen Ubuntu 16.04-Server erstellt (auf Digital Ocean, falls es darauf ankommt). Ich habe Apache2 eingerichtet und es läuft korrekt, aber bei jedem Neustart kann es nicht gestartet werden.

Ich erhalte vom systemctl-Status Folgendes:

[email protected]:~# systemctl status Apache2.service 
● Apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/Apache2; static; vendor preset: enabled)
  Drop-In: /lib/systemd/system/Apache2.service.d
           └─Apache2-systemd.conf
   Active: inactive (dead)
     Docs: man:systemd-sysv-generator(8)

Wenn ich systemctl aktiviere , erhalte ich "static":

[email protected]:~# systemctl is-enabled Apache2.service 
static

Auch nach dem Ausführen von systemctl enable ändert sich nichts:

[email protected]:~# systemctl enable Apache2.service 
Synchronizing state of Apache2.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install enable Apache2
[email protected]:~# systemctl is-enabled Apache2.service 
static

Aber Apache hat keine Probleme zu starten. Wenn ich systemctl starte manuell , funktioniert es einwandfrei:

[email protected]:~# systemctl start Apache2.service 
[email protected]:~# systemctl status Apache2.service 
● Apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/Apache2; static; vendor preset: enabled)
  Drop-In: /lib/systemd/system/Apache2.service.d
           └─Apache2-systemd.conf
   Active: active (running) since Sat 2016-07-09 07:33:30 EDT; 8s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 1847 ExecStart=/etc/init.d/Apache2 start (code=exited, status=0/SUCCESS)
    Tasks: 7
   Memory: 22.5M
      CPU: 455ms
   CGroup: /system.slice/Apache2.service
           ├─1871 /usr/sbin/Apache2 -k start
           ├─1875 /usr/sbin/Apache2 -k start
           ├─1876 /usr/sbin/Apache2 -k start
           ├─1877 /usr/sbin/Apache2 -k start
           ├─1878 /usr/sbin/Apache2 -k start
           └─1879 /usr/sbin/Apache2 -k start

Jul 09 07:33:28 twl-ubuntu-2gb-sgp1-01 systemd[1]: Starting LSB: Apache2 web server...
Jul 09 07:33:28 twl-ubuntu-2gb-sgp1-01 Apache2[1847]:  * Starting Apache httpd web server Apache2
Jul 09 07:33:29 twl-ubuntu-2gb-sgp1-01 Apache2[1847]: AH00558: Apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set t
Jul 09 07:33:30 twl-ubuntu-2gb-sgp1-01 Apache2[1847]:  *
Jul 09 07:33:30 twl-ubuntu-2gb-sgp1-01 systemd[1]: Started LSB: Apache2 web server.

Ich bin neu bei systemd und habe erst kürzlich ein Upgrade von 14.04 auf 16.04 durchgeführt. Wo gehe ich falsch oder was kann ich tun, um zu debuggen, warum Apache2 den Start ablehnt?

Update 1 (14.07.2016)

Es stellt sich heraus, dass Apache geladen wird, aber beim Start ein SIGTERM erhält. Die einzige Zeile in der Protokolldatei lautet:

[Wed Jul 13 21:37:15.730331 2016] [mpm_prefork:notice] [pid 1871] AH00169: caught SIGTERM, shutting down

Irgendwelche Ideen, wie man eine bessere Fehlermeldung bekommt? Wie ich bereits erwähnt habe, läuft systemctl start Apache2 direkt nach dem Booten.

Update 2 (15.07.2016)

Es stellt sich heraus, dass Sigterm davon getötet wurde, als ich Sudo reboot lief. In /var/log/Apache2/error.log gab es keine Protokollnachrichten. Wenn ich journalctl ausführe, werden diese Zeilen während des Startvorgangs angezeigt, sodass sie anscheinend korrekt funktionieren oder zumindest keine Fehler protokolliert werden:

Jul 13 21:38:04 twl-ubuntu-2gb-sgp1-01 systemd[1]: Starting LSB: Apache2 web server...
Jul 13 21:38:04 twl-ubuntu-2gb-sgp1-01 Apache2[1800]:  * Starting Apache httpd web server Apache2
Jul 13 21:38:04 twl-ubuntu-2gb-sgp1-01 Apache2[1800]: AH00558: Apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set t
Jul 13 21:38:05 twl-ubuntu-2gb-sgp1-01 Apache2[1800]:  *
Jul 13 21:38:05 twl-ubuntu-2gb-sgp1-01 systemd[1]: Started LSB: Apache2 web server.

Aber dann ist der Dienst nie zugänglich und systemctl status Apache2.service meldet ihn immer noch als "inaktiv (tot)".

2
Jason O'Neil

Ich sah auf was der static Zustand von is-enabled bedeutet, und stellte fest, dass:

Statisch bedeutet in diesem Zusammenhang, dass die Unit-Datei keinen Abschnitt "install" enthält, der zum Aktivieren einer Unit verwendet wird. Daher können diese Einheiten nicht aktiviert werden.

Außerdem habe ich festgestellt, dass das Apache2-Paket nur eine systemd include-Datei enthält, keine vollständige Datei:

 # /lib/systemd/system/Apache2.service.d/Apache2-systemd.conf
 [Service]
 Type=forking
 RemainAfterExit=no

Es scheint, dass der Rest der Logik für die Verwaltung des Apache2-Prozesses von der Verwendung eines Shims herrührt, mit dem systemd SysVinit-Skripte ausführen kann. Versuchen Sie also, Apache2 zu aktivieren, damit es beim Booten mithilfe eines Symlinks in einem SysVinit-Verzeichnis ausgeführt werden kann:

ln -s /etc/init.d/Apache2 /etc/rc5.d/S02Apache2

Es scheint ein Fehler oder zumindest eine fehlende Funktion zu sein, dass Apache2 unter Ubuntu 16.04 nicht mit einer vollständigen System-Service-Datei ausgeliefert wird.

2
Mark Stosberg

Bitte versuche :

ln -s /etc/systemd/system/Apache2.service /etc/systemd/system/multi-user.target.wants/Apache2.service
0
ivanllc