我正在使用 GCP 上 Ubuntu 上标准包安装的默认 openresty。
Linux bacalhau-vm-0 5.15.0-1010-gcp #15-Ubuntu SMP 星期五 6月 10 11:30:24 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
OpenResty 的服务文件如下所示:
# Stop dance for OpenResty
# =========================
#
# ExecStop sends SIGSTOP (graceful stop) to OpenResty's nginx process.
# If, after 5s (--retry QUIT/5) nginx is still running, systemd takes control
# and sends SIGTERM (fast shutdown) to the main process.
# After another 5s (TimeoutStopSec=5), and if nginx is alive, systemd sends
# SIGKILL to all the remaining processes in the process group (KillMode=mixed).
#
# nginx signals reference doc:
# http://nginx.org/en/docs/control.html
#
[Unit]
Description=The OpenResty Application Platform
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/usr/local/openresty/nginx/logs/nginx.pid
ExecStartPre=/usr/local/openresty/nginx/sbin/nginx -t -q -g 'daemon on; master_process on;'
ExecStart=/usr/local/openresty/nginx/sbin/nginx -g 'daemon on; master_process on;'
ExecReload=/usr/local/openresty/nginx/sbin/nginx -g 'daemon on; master_process on;' -s reload
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /usr/local/openresty/nginx/logs/nginx.pid
TimeoutStopSec=5
KillMode=mixed
[Install]
WantedBy=multi-user.target
当我从命令行运行 ExecStart 命令时,它工作正常。但是当我这样做时,service openresty start
它会挂起直到超时。
我不确定还有什么问题?我还尝试将 Type 设置为,simple
以防由于某种原因无法正确分叉,但这也无济于事。
答案1
弄清楚了。
在我的 nginx.conf 文件中,我将 PID 位置设置为 /var/run/nginx.pid。
在 openresty.services 文件中,它有一个硬编码的 PID 位置。通过删除 nginx.conf 文件中的 PID 位置,它按预期工作。