【问题标题】:Supervisor 3.3 with Ubuntu 16.04 service start failure [closed]带有 Ubuntu 16.04 服务启动失败的 Supervisor 3.3 [关闭]
【发布时间】:2016-09-21 02:59:26
【问题描述】:

今天早上,我使用升级了我的主管

pip install --upgrade supervisor //from 3.2 to 3.3

但在那之后,服务状态通知它失败启动。

supervisor.service - Supervisor process control system for UNIX
Loaded: loaded (/lib/systemd/system/supervisor.service; disabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Tue 2016-05-24 12:19:48 CST; 25s ago
Docs: http://supervisord.org
Process: 27369 ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown (code=exited, status=203/EXEC)
Process: 27366 ExecStart=/usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf (code=exited, status=203/EXEC)
Main PID: 27366 (code=exited, status=203/EXEC)

May 24 12:19:48 709101111291e5cZ systemd[1]: supervisor.service: Unit entered failed state.
May 24 12:19:48 709101111291e5cZ systemd[1]: supervisor.service: Failed with result 'exit-code'.

这是我的工人配置:

[program:worker]
process_name=%(program_name)s_%(process_num)02d
command=php artisan queue:listen --timeout=360 --queue=high,low --sleep=3 --tries=3
autostart=true
autorestart=true
exitcodes=0,2
user=www
numprocs=2
redirect_stderr=true
stdout_logfile=/www/worker/storage/logs/worker.log

有人可以帮忙吗?

【问题讨论】:

标签: ubuntu supervisord


【解决方案1】:

我在 Ubuntu 16.04 上使用 Supervisor 3.2,当我尝试使用 service supervisor start 启动 supervisor 时遇到同样的错误。

我使用apt-get install supervisor 来安装supervisor,并将supervisorctl 和supervisord 放在/usr/bin/ 中。

我的supervisor.service 文件指向/usr/bin/。我被卡住了。

更新 我发现了问题,原来我在/etc/supervisor/conf.d/ 中的一个.conf 文件中存在解析错误。一旦我修复它就可以了。这个错误一点都不清楚,但有一个关于如何找到它的提示。在原始错误输出中,有一行像

ExecStart=/usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf (code=exited, status=203/EXEC)

从命令行运行/usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf,它会给你一个更详细的错误。

【讨论】:

  • 我也有这个问题。我认为首先在没有任何配置文件的情况下启动主管是明智的,然后添加您的配置文件并查看哪些不起作用。
【解决方案2】:

我通过编辑/lib/systemd/system/supervisor.service解决了这个问题,最好使用命令安装主管easy_install supervisor

[Unit]
Description=Supervisord Service

[Service]
ExecStart=/usr/local/bin/supervisord -n -c /etc/supervisor/supervisord.conf
ExecStop=/usr/local/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/local/bin/supervisorctl -c /etc/supervisor/supervisord.conf $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=50s


[Install]
WantedBy=multi-user.target

supervisord 的路径在默认设置下是错误的,它是 /usr/bin。但是 pip install 会把它放在 /usr/local/bin 中。

【讨论】:

  • "pip install --upgrade supervisor" 不会将其安装为服务。你用过“sudo apt-get install supervisor”吗?如果是这样,那么它安装在 /usr/bin...
  • @vgoklani 其实我做了两种安装方式,因为官方的Ubuntu包只有3.2,然后我通过pip install --upgrade进行升级。
【解决方案3】:

我遇到了类似的问题,我得到一个 status=2 作为退出代码。没有进一步的线索说明可能出了什么问题。

事实证明,如果它的日志文件夹不存在,Supervisor 将不会启动。由于这个文件夹被挂载在一个 tmpfs 上,在设备重启后,它会被再次擦除。

这导致 Supervisor 无法启动(已知问题:https://github.com/Supervisor/supervisor/issues/121

作为修复,我在启动脚本中添加了以下几行:

mkdir /var/log/supervisor
sudo service supervisor restart

现在文件夹会在启动时创建,并且主管可以正确启动。

【讨论】:

  • 在干净的 ubuntu 安装上安装和启用主管让我遇到了同样的问题,这似乎已经解决了。谢谢。
【解决方案4】:

我不知道如何在 Ubuntu 中启动该服务,尽管它有 /lib/systemd/system/supervisor.service 和正确的配置。但是当您service supervisor start 时,它会被蒙面加载。 我使用小费,apt install supervisoreasy_install supervisor,然后是 easy_install -U supervisor。现在,它有两个不同的版本, /usr/local/bin/supervisord --version // Version 3.3.3 until 26th,Jan,2018 /usr/bin/supervisord --version // Version 3.2.0 Ubuntu 16.04

之后,编辑/lib/systemd/system/supervisor.service/etc/init.d/supervisor,将/usr/bin/supervisord全部更改为/usr/local/bin/supervisord

最后,在 bash 中,重新加载服务配置。 sudo systemctl daemon-reload 现在,所有服务都运行最新版本的supervisor。

也许,可以试试这个来揭开服务的面纱。

systemctl unmask supervisor
systemctl enable supervisor
systemctl restart supervisor

【讨论】:

    猜你喜欢
    • 2016-11-27
    • 2012-01-16
    • 2021-04-05
    • 2017-11-16
    • 1970-01-01
    • 2017-08-31
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多