Я только что создал новый сервер Ubuntu 16.04 (на цифровом океане, если он имеет значение). Я настроил Apache2, и он работает правильно, но на каждом перезапуске ему не удается загрузиться.
Я получаю следующий 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)
Если я работаю, systemctl является поддерживающим, я становлюсь "статичным":
root@twl-ubuntu-2gb-sgp1-01:~# systemctl is-enabled apache2.service
static
Даже после выполнения systemctl включают его, не изменяется:
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
Но у апача нет проблем при запуске. Когда я работаю, systemctl запускаются вручную, это работает просто великолепно:
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.
Я плохо знаком с systemd, только недавно обновленным до 16,04 от 14,04. Где я иду не так, как надо, или возможно, что я могу сделать для отладки, почему apache2 отказывается запускаться?
Оказывается, что Apache загружается, но получает SIGTERM, как только это запускается. Единственная строка в файле журнала:
[Wed Jul 13 21:37:15.730331 2016] [mpm_prefork:notice] [pid 1871] AH00169: caught SIGTERM, shutting down
Какие-либо идеи, как получить лучшее сообщение об ошибке? Поскольку я упомянул, что работал systemctl start apache2
сразу после того, как начальная загрузка запускает все очень хорошо.
Оказывается, что Sigterm был от него уничтожаемый, когда я работал sudo reboot
. Не было никаких сообщений журнала в /var/log/apache2/error.log
. Если я работаю journalctl
Я получаю эти строки во время процесса начальной загрузки, таким образом, это, кажется, работает правильно, или по крайней мере, никакие ошибки не зарегистрированы:
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.
Но затем сервис никогда не доступен, и systemctl status apache2.service
все еще отчеты это как "неактивные (мертвые)"
Я искал , что static
состояние is-enabled
средства, и нашли что:
В этом контексте, статичном, означает, что файл единицы не содержит раздел "установки", который используется для включения единицы. По сути, эти единицы не могут быть включены.
кроме того, я нашел, что пакет Apache2 содержит только systemd
, включают файл, не полный файл:
# /lib/systemd/system/apache2.service.d/apache2-systemd.conf
[Service]
Type=forking
RemainAfterExit=no
кажется, что остаток от логики для управления процессом Apache2 прибывает из использования контейнера, который позволяет systemd
запускать скрипты SysVinit. Так попытайтесь позволить Apache2 работать при начальной загрузке с помощью символьной ссылки в каталоге SysVinit:
ln -s /etc/init.d/apache2 /etc/rc5.d/S02apache2
на ошибку или по крайней мере недостающую возможность кажется, что Apache2 не поставлется с полным systemd 'сервисным' файлом на Ubuntu 16.04.
Попробуйте:
ln -s /etc/systemd/system/apache2.service /etc/systemd/system/multi-user.target.wants/apache2.service