Openfire 无法在启动时使用 systemd 启动

Openfire 无法在启动时使用 systemd 启动

我使用以下命令手动启动 openfire:

sudo -u openfire /opt/openfire/bin/openfire start

在 Ubuntu 14.04 下,我最终发现可以使用以下 upstart 文件 openfire.conf 在启动时自动启动它:

description "Openfire launch on boot"
start on startup
task
exec start-stop-daemon --start --quiet -c openfire --exec /opt/openfire/bin/openfire -- start

我现在已经在 Ubuntu 16.04 上重建了我的服务器,并希望使用 systemd 实现同样的目标。我创建了单元文件 /lib/systemd/system/openfire.service:

[Unit]
Description=OpenFire Start on Boot

[Service]
User=openfire
ExecStart=/bin/sh -c "/opt/openfire/bin/openfire start"

[Install]
WantedBy=multi-user.target

这不起作用。保存单元文件并使用 激活它sudo systemctl enable openfire.service并重新启动后,我使用 检查状态sudo -u openfire /opt/openfire/bin/openfire status并得到结果openfire is stopped

为了调试,我尝试设置LogLevel=debug/etc/systemd/system.conf再次重新启动,然后尝试journalctl -u openfire返回以下单行:

Feb 19 11:51:19 DK-Openfire-B systemd[1]: Started OpenFire Start on Boot.

这真的对我没有帮助。我怀疑问题出在我的 ExecStart 语句上。有什么提示可以告诉我我做错了什么或如何获取进一步的调试信息吗?

答案1

我搞明白了。我只需要将“Type=forking”添加到单元文件的 [Service] 部分。以下单元文件按预期工作:

[Unit]
Description=OpenFire Start on Boot

[Service]
Type=forking
User=openfire
ExecStart=/bin/sh -c "/opt/openfire/bin/openfire start"

[Install]
WantedBy=multi-user.target

相关内容