【问题标题】:Plone and systemctl克隆和 systemctl
【发布时间】:2020-08-30 03:02:08
【问题描述】:

我尝试将 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 脚本更通用。

【问题讨论】:

  • 这个问题更适合superuser.com。
  • 你是否同时启动了 zeoserver 和 zeoclient(s)?
  • 我的第一个怀疑是您的问题出在权限/身份上。您没有为要运行的服务指定任何用户 ID。如果您在克隆配置中设置了明确的身份,这可能会起作用。如果没有,尝试以 root 身份启动将失败。检查您的事件日志以获取线索。另外,看看你是否有一个可供主管使用的包(有时称为 supervisord 或 python-supervisor。安装它并使用它来控制你的 plone 进程是一个可靠的启动策略。
  • 找到了解决方案“Type=forking”,就像看起来一样。而且它区分大小写(我想我在之前的尝试中尝试过 Type=Forking)。

标签: plone systemd


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    Plonectl fork 守护进程。在 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-11
      • 2013-04-28
      • 2017-09-28
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多