Je viens de créer un nouveau serveur Ubuntu 16.04 (sur Digital Ocean, si cela compte). J'ai configuré Apache2 et il fonctionne correctement, mais à chaque redémarrage, le démarrage échoue.
Je reçois les informations suivantes de statut systemctl:
root@twl-ubuntu-2gb-sgp1-01:~# 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)
Si je lance systemctl est activé je reçois "statique":
root@twl-ubuntu-2gb-sgp1-01:~# systemctl is-enabled Apache2.service
static
Même après avoir lancé systemctl enable cela ne change pas:
root@twl-ubuntu-2gb-sgp1-01:~# 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
root@twl-ubuntu-2gb-sgp1-01:~# systemctl is-enabled Apache2.service
static
Mais Apache n’a aucun problème à démarrer. Quand je lance systemctl start manuellement cela fonctionne très bien:
root@twl-ubuntu-2gb-sgp1-01:~# systemctl start Apache2.service
root@twl-ubuntu-2gb-sgp1-01:~# 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.
Je suis nouveau à SystemD, récemment mis à jour à 16.04 à partir de 14.04. Où vais-je mal, ou peut-être, que puis-je faire pour déboguer pourquoi Apache2 refuse de démarrer?
Il se trouve qu'Apache est en cours de chargement, mais reçoit un SIGTERM dès son lancement. La seule ligne du fichier journal est la suivante:
[Wed Jul 13 21:37:15.730331 2016] [mpm_prefork:notice] [pid 1871] AH00169: caught SIGTERM, shutting down
Des idées pour obtenir un meilleur message d'erreur? Comme je l'ai mentionné, exécuter systemctl start Apache2
immédiatement après le démarrage du système commence parfaitement.
Il s’avère que Sigterm a été tué lorsque j’ai exécuté Sudo reboot
. Il n'y avait aucun message de journal dans /var/log/Apache2/error.log
. Si j’exécute journalctl
j’obtiens ces lignes lors du processus de démarrage, il semble donc fonctionner correctement ou du moins aucune erreur n’est consignée:
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.
Mais alors le service n'est jamais accessible, et systemctl status Apache2.service
le signale toujours comme "inactif (mort)"
Je leva les yeux ce que signifiait l'état static
de is-enabled
et trouvai que:
Dans ce contexte, statique signifie que le fichier d'unité ne contient pas de section "installer", utilisée pour activer une unité. En tant que tels, ces unités ne peuvent pas être activées.
De plus, j'ai trouvé que le paquet Apache2 ne contient qu'un fichier d'inclusion systemd
, pas un fichier complet:
# /lib/systemd/system/Apache2.service.d/Apache2-systemd.conf
[Service]
Type=forking
RemainAfterExit=no
Il semble que le reste de la logique de gestion du processus Apache2 provient de l'utilisation d'un shim qui permet à systemd
d'exécuter des scripts SysVinit. Essayez donc d'activer Apache2 pour qu'il s'exécute au démarrage en utilisant un lien symbolique dans un répertoire SysVinit:
ln -s /etc/init.d/Apache2 /etc/rc5.d/S02Apache2
Cela ressemble à un bogue ou au moins à une fonctionnalité manquante indiquant qu'Apache2 n'est pas fourni avec un fichier système complet 'service' sous Ubuntu 16.04.
S'il vous plaît essayez :
ln -s /etc/systemd/system/Apache2.service /etc/systemd/system/multi-user.target.wants/Apache2.service