如何在CentOs中将uWsgi作为服务运行?

4

我很着急,虽然我知道如何操作,但我需要一些帮助来尽量节省时间。目前,我只是运行以下命令来启动我的ini文件和uWsgi实例:

uwsgi --ini /home/myonlinesite/uwsgi.ini --pidfile /var/run/uwsgi_serv.pid

最后停止:

uwsgi --stop  /var/run/uwsgi_serv.pid.

顺便说一下,我在我的 /etc/init.d/uwsgi 中有这个代码。因此,当我运行 /etc/init.d/uwsgi start 时,它会执行 ini 配置文件;而当我执行 /etc/init.d/uwsgi stop 时,它会停止 uwsgi 进程ID。
问题是,当我启动uWsgi服务后,它可以正常运行并记录每个http请求、任何调试打印等内容,但当我关闭putty(我运行Vps的地方)时,它会终止所有uWsgi进程,并停止网站的显示。
我不知道是否只需要触摸pid文件,还是需要做些什么才能让uWsgi进程继续执行并且我可以关闭putty。
预先感谢您的帮助。
3个回答

5

如果您要在命令行中设置参数,请将标志-d file.log添加到您的命令中(-d代表daemonize):

uwsgi --ini /home/myonlinesite/uwsgi.ini --pidfile /var/run/uwsgi_serv.pid -d file.log

如果您正在配置文件中设置参数,请在您的配置文件中添加以下行:
daemonize = /absolute/path/to/file.log

在这两种情况下,uWsgi 将在后台运行并将所有日志记录到 file.log 文件中。有了这些选项,就无需使用 nohup 等命令。

这应该是被接受的答案。我已经按照这个解决方案进行操作了,它完美无缺地工作着。 - Barranka

4
使用 nohup 启动 uWsgi 进程可以解决您在注销时进程停止的问题。 教程链接

此外,像tmux或screen这样的终端复用器也可以在这里使用。 - MGP
一个更好的选择是在 /etc/init/app.conf 中创建一个带有 runlevels 的配置文件,并将其用作 sudo initctl start | restart | stop app,或者在 /etc/init.d/app 中创建一个服务,并使用 chkconfig runlevels 进行所有操作。 - Shashank

1
请确保在您的配置文件中添加以下内容:

daemon = logfile


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接