centos将uwsgi添加为系统服务

2020-05-29 10:53:01 浏览数 (1)

在我们运行或者调试uwsgi的时候:

代码语言:javascript复制
uwsgi --socket 0.0.0.0:5000 --protocol=http -w myproject:app
uwsgi --ini myproject.ini

如果Ctrl C或者退出ssh链接,都会导致uwsgin进程关闭。 这时,我们需要进程管理软件管理 uwsgi 进程的运行了。Ubuntu 自带的 systemd 是最简单的方法,可以将我们的项目变为系统服务。首先创建 myproject.service 文件 sudo vim /etc/systemd/system/myproject.service

代码语言:javascript复制
[Unit]
Description=uWSGI instance to serve myproject
After=network.target

[Service]
[Unit]
Description=uWSGI instance to serve myproject
After=network.target

[Service]
WorkingDirectory=/root/PythonWorkSpace/myproject
ExecStart=/usr/bin/uwsgi --ini /root/PythonWorkSpace/myproject/uwsgi.ini
ExecStop=/usr/bin/uwsgi --stop /root/PythonWorkSpace/myproject/uwsgi.pid
ExecReload=/usr/bin/uwsgi --reload /root/PythonWorkSpace/myproject/uwsgi.pid
[Install]
WantedBy=multi-user.target

  • [Unit]部分主要是对这个服务的说明,内容包括Description和After,Description用于描述服务,After用于描述服务类别

  • [Service]部分是服务的关键,是服务的一些具体运行参数的设置
  • WorkingDirectory: 你的项目目录。
  • ExecStart:服务启动的代码
  • ExecReload:重启命令
  • ExecStop:停止命令
  • WantedBy=multi-user.target:指明会跟随系统启动而启动该服务。

  • 注意以上所有路径为绝对路径。

接下来可以愉快的启动了(myproject 就是 myproject.service 文件名去掉扩展名):

代码语言:javascript复制
systemctl start myproject.service
systemctl reload myproject.service
systemctl stop myproject.service

  • 一个自己遇到坑 uwsgi的路径必须是自己编译是的venv环境下的uwsgi,要不然启动之后找不到Flask项目中的依赖包。

参考: 管理uWSGI服务器

0 人点赞