Supervisor 3.3 with Ubuntu 16.04 服务启动失败
Supervisor 3.3 with Ubuntu 16.04 service start failure
今天早上,我使用
升级了我的主管
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
请问有人可以帮忙吗?
我通过编辑 /lib/systemd/system/supervisor.service
解决了这个问题,最好使用命令 install supervisor 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.
我在 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
从命令行,它会给你一个更详细的错误。
我 运行 遇到了类似的问题,我得到了一个 status=2 作为退出代码。没有关于可能出了什么问题的进一步线索。
事实证明,如果 Supervisor 的日志文件夹不存在,它就不会启动。由于此文件夹是挂载在 tmpfs 上的,因此在设备重新启动后,它会再次被擦除。
这导致 Supervisor 无法启动(已知问题:https://github.com/Supervisor/supervisor/issues/121)
作为修复,我在启动脚本中添加了以下几行:
mkdir /var/log/supervisor
sudo service supervisor restart
现在文件夹会在启动时创建并且 supervisor 会正确启动。
我不知道如何在 Ubuntu 中启动服务,即使它具有 /lib/systemd/system/supervisor.service
和配置权限。但是当你 service supervisor start
它加载时被屏蔽了。
我使用小费,apt install supervisor
和 easy_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
今天早上,我使用
升级了我的主管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
请问有人可以帮忙吗?
我通过编辑 /lib/systemd/system/supervisor.service
解决了这个问题,最好使用命令 install supervisor 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.
我在 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
从命令行,它会给你一个更详细的错误。
我 运行 遇到了类似的问题,我得到了一个 status=2 作为退出代码。没有关于可能出了什么问题的进一步线索。
事实证明,如果 Supervisor 的日志文件夹不存在,它就不会启动。由于此文件夹是挂载在 tmpfs 上的,因此在设备重新启动后,它会再次被擦除。
这导致 Supervisor 无法启动(已知问题:https://github.com/Supervisor/supervisor/issues/121)
作为修复,我在启动脚本中添加了以下几行:
mkdir /var/log/supervisor
sudo service supervisor restart
现在文件夹会在启动时创建并且 supervisor 会正确启动。
我不知道如何在 Ubuntu 中启动服务,即使它具有 /lib/systemd/system/supervisor.service
和配置权限。但是当你 service supervisor start
它加载时被屏蔽了。
我使用小费,apt install supervisor
和 easy_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