Plone与systemctl

Plone与systemctl,plone,systemd,Plone,Systemd,我尝试将Plone与基于systemctl的openSUSE 12.3初创公司集成 作为第一次尝试,我有一个非常简单的plone.service文件 [Unit] Description=Plone content management system After=network.target [Service] Type=simple ExecStart=/srv/plone/zeocluster/bin/plonectl start [Install] WantedBy=multi-use

我尝试将Plone与基于systemctl的openSUSE 12.3初创公司集成

作为第一次尝试,我有一个非常简单的plone.service文件

[Unit]
Description=Plone content management system
After=network.target

[Service]
Type=simple
ExecStart=/srv/plone/zeocluster/bin/plonectl start

[Install]
WantedBy=multi-user.target
在查看systemclt status plone时,我看到进程开始了,但它们立即又消失了。我也尝试过Type=Daemon,但最终结果是一样的。 我的错误是什么

该服务实际上成功地找到/执行了plonectl脚本,只是进程很快就消失了

linux-wezo:/etc/systemd/system # systemctl start plone.service
linux-wezo:/etc/systemd/system # systemctl status plone.service
plone.service - Plone content management system
          Loaded: loaded (/etc/systemd/system/plone.service; disabled)
          Active: inactive (dead) since Mon, 2013-03-18 22:00:50 CET; 1s ago
         Process: 25494 ExecStart=/srv/plone/zeocluster/bin/plonectl start (code=exited, status=0/SUCCESS)
          CGroup: name=systemd:/system/plone.service

Mar 18 22:00:42 linux-wezo.site systemd[1]: Starting Plone content management system...
Mar 18 22:00:42 linux-wezo.site systemd[1]: Started Plone content management system.
Mar 18 22:00:43 linux-wezo.site plonectl[25494]: zeoserver: .
Mar 18 22:00:43 linux-wezo.site plonectl[25494]: daemon process started, pid=25502
Mar 18 22:00:46 linux-wezo.site plonectl[25494]: client1: .
Mar 18 22:00:46 linux-wezo.site plonectl[25494]: daemon process started, pid=25507
Mar 18 22:00:49 linux-wezo.site plonectl[25494]: client2: .
Mar 18 22:00:49 linux-wezo.site plonectl[25494]: daemon process started, pid=25522

我有一个SysV风格的init脚本,可以通过systemctl工作,但我认为最好有一个服务文件,因为它应该比各种各样的init脚本更通用。

问题在于程序plonectl不是守护进程,而是启动Zope的包装脚本。您需要将类型更改为forking,并且可能需要告诉systemd在哪里可以找到PID文件。

Plonectl forking守护进程。在plone.service中尝试以下操作:

[Unit]
Description=Plone content management system
After=network.target
ConditionPathExists=/srv/plone/zeocluster/bin/plonectl

[Service]
Type=forking
ExecStart=/srv/plone/zeocluster/bin/plonectl start
ExecStop=/srv/plone/zeocluster/bin/plonectl stop
ExecReload=/srv/plone/zeocluster/bin/plonectl restart

[Install]
WantedBy=multi-user.target

这个问题更适合superuser.com。您是否同时启动zeoserver和ZeoClient?我的第一个怀疑是您的问题是权限/身份。您没有指定要运行服务的用户id。如果您在plone配置中设置了显式标识,这可能会起作用。如果不这样做,尝试以root用户身份启动将失败。检查事件日志以获取线索。另外,查看是否有一个可供supervisor使用的包,有时称为SupervisorOrd或python supervisor。安装它并使用它来控制plone进程是一个可靠的启动策略。发现解决方案类型=forking可以按看起来的方式完成。而且它区分大小写,我想我在前面的尝试中尝试了Type=Forking。