Apache2 无法在 Ubuntu 16.04 启动时启动

Apache2 无法在 Ubuntu 16.04 启动时启动

我刚刚创建了一个新的 Ubuntu 16.04 服务器(如果有必要的话,在 digital ocean 上)。我已经设置了 Apache2,它运行正常,但每次重启时它都无法启动。

我从以下系统控制状态

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

但 Apache 启动没有问题。当我运行系统控制启动手动操作就可以了:

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 的新手,最近才从 14.04 升级到 16.04。我哪里做错了,或者我可以做什么来调试为什么 apache2 拒绝启动?

更新1(2016-07-14)

事实证明 Apache 正在加载,但一启动就收到 SIGTERM。日志文件中唯一的一行是:

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

有什么想法可以得到更好的错误消息吗?正如我提到的,systemctl start apache2启动后立即运行一切正常。

更新2(2016-07-15)

事实证明,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仍然将其报告为“不活动(死亡)”

答案1

抬头望去状态意味着什么staticis-enabled并发现:

在此上下文中,静态表示单元文件不包含用于启用单元的“安装”部分。因此,这些单元无法启用。

另外,我发现Apache2包中只包含一个systemd包含文件,而不是完整的文件:

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

看来,管理 Apache2 进程的其余逻辑来自使用允许systemd运行 SysVinit 脚本的 shim。因此,尝试使用 SysVinit 目录中的符号链接启用 Apache2 在启动时运行:

ln -s /etc/init.d/apache2 /etc/rc5.d/S02apache2

Apache2 在 Ubuntu 16.04 上没有附带完整的 systemd“服务”文件,这似乎是一个错误,或者至少是一个缺少的功能。

答案2

请尝试 :

ln -s /etc/systemd/system/apache2.service /etc/systemd/system/multi-user.target.wants/apache2.service

相关内容