Problemstellung
Behelfslösung
sleep 30
systemctl start nginx
systemctl start apache2
Ursache
fatty.congenio.de nginx[1343]: nginx: [emerg] bind() to 1.2.3.5
fatty.congenio.de nginx[1343]: nginx: configuration file /etc/nginx/
fatty.congenio.de systemd[1]: nginx.service: Control process exited,
fatty.congenio.de systemd[1]: nginx.service: Failed with result 'exi
fatty.congenio.de systemd[1]: Failed to start A high performance web
-- Subject: Unit nginx.service has failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- Unit nginx.service has failed.
--
-- Unit systemd-networkd.service has begun starting up.
fatty.congenio.de systemd-networkd[27544]: eth0: Gained IPv6LL
fatty.congenio.de systemd-networkd[27544]: Enumeration completed
fatty.congenio.de systemd-timesyncd[667]: Network configuration chan
fatty.congenio.de systemd[1]: Started Network Service.
-- Subject: Unit systemd-networkd.service has finished start-up
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- Unit systemd-networkd.service has finished starting up.
--
-- The start-up result is RESULT.
fatty.congenio.de systemd-networkd[27544]: eth0: IPv6 successfully e
fatty.congenio.de systemd-networkd[27544]: lo: Link is not managed b
fatty.congenio.de systemd-timesyncd[667]: Synchronized to time serve
Grund ist, dass überraschenderweise das Systemd-Target "network.target" nicht bedeutet, dass das Netzwerk komplett initialisiert ist, sondern nur, dass es gestartet wurde.
[Unit]
Description=A high performance web server and a reverse proxy server
Documentation=man:nginx(8)
After=network.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;'
ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;'
ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5
--pidfile /run/nginx.pid
TimeoutStopSec=5
KillMode=mixed
[Install]
WantedBy=multi-user.target
Dummerweise wird dieses Problem in Ubuntu absichtlich nicht beseitigt, weil es in einer normalen Konfiguration nicht auftritt. Wenn man nämlich auf die Default-Adresse 0.0.0.0/0 lauscht, müssen die zugehörigen IPs und Interfaces noch nicht aktiv sein.
Lösung
[Unit]
After=network-online.target
Das bewirkt dann, dass der entprechende Dämon erst nach erfolgreicher Netzwerkinitialisierung gestartet wird.