在我们运行或者调试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
[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服务器