我已经创建了一个 rc 脚本来在启动时启动 gunicorn 作为守护进程。
#!/bin/sh
# PROVIDE: gunicorn_appleclue
# REQUIRE: DAEMON
. /etc/rc.subr
name=gunicorn_appleclue
rcvar=gunicorn_appleclue_enable
pidfile="/var/run/gunicorn/${name}.pid"
command="/usr/sbin/daemon"
command_args="-p ${pidfile} -r -t django_appleclue /home/victor/.venv/appleclue/bin/gunicorn -b 0.0.0.0:8001 -w 4 --pythonpath /home/victor/applications/appleclue/appleclue-web appleclue.wsgi"
load_rc_config $name
run_rc_command "$1"
从某种意义上说,启动后服务就启动了。但我遇到的问题是尝试停止/重新启动服务时。
sudo service gunicorn_appleclue stop
gunicorn_appleclue not running? (check /var/run/gunicorn/gunicorn_appleclue.pid).
ls -la /var/run/gunicorn/gunicorn_appleclue.pid
-rw------- 1 root wheel 3 May 15 14:25 /var/run/gunicorn/gunicorn_appleclue.pid
因此,gunicorn 正在运行,并且 pidfile 位于它要求我的位置。我是否遗漏了什么?
谢谢
答案1
procname
您还需要设置,因为rc.subr
检查该进程的 pid 和名称以匹配其预期,以防命令终止并且其他进程恰好获得了相同的 pid。
因此,在后面添加一行rcvar
如下:
procname="/home/victor/.venv/appleclue/bin/gunicorn"
有关详细信息,请参阅rc.subr或阅读/etc/rc.subr
。