本文详细介绍了python项目(flask或django等)在部署到linux服务器上后,uwsgi常用配置和nginxd对应通信配置,以及supervisor常用配置详解。本篇为高级篇,至于怎么安装请参考博客中其他文档,谢谢。
uwsgi常用配置
作为模板uwsgi.ini,当然也可以根据uwsgi –help来查看或自定义。官方参数详解
1 | master = true |
配置wsgi启动文件的3种方式
第一种:wsgi-file和callable
1 | # 指定加载的WSGI文件 |
第二种:模块:调用对象
1 | # 模块名:可调用对象app |
第三种:module和callable
1 | module=manager |
uWSGI和Nginx 3种通信方式
其中上面配置有几处,是可以选择的。
uWSGI和Nginx之间有3种通信方式,: unix socket,TCP socket和http。而Nginx的配置必须与uwsgi配置保持一致
1 | # 以下uwsgi与nginx通信手段3选一即可 |
选项1:本地unix socket通信
如果你的nginx与uwsgi在同一台服务器上,优先使用本地机器的unix socket进行通信,这样速度更快。
即uwsgi配置了选项1,此时nginx的配置文件如下所示:
1 | location / { |
选项2:异地tcp socket通信
如果nginx与uwsgi不在同一台服务器上,可以使用选项2和3。这里使用TCP socket通信,nginx应如下配置:
1 | location / { |
选项3:异地http通信
同样的,如果nginx与uwsgi不在同一台服务器上,用http协议进行通信,nginx配置如下:
1 | location / { |
常用命令
1 | #uwsgi --ini uwsgi.ini # 启动 |
Supervisor常用配置
supervisor就是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台守护进程daemon,并监控进程状态,异常退出时能自动重启。
安装
通过这种方式安装后,会自动设置为开机启动
1
2
3
4
5
6#Ubuntu:
apt-get install supervisor
#centos
yum install epel-release
yum install -y supervisor也可以通过
pip install supervisor
进行安装,但是需要手动启动,然后设置为开机启动(不推荐这种安装方式)1
2
3
4
5
6systemctl start supervisord.service #启动supervisor并加载默认配置文件
systemctl enable supervisord.service #将supervisor加入开机启动项
#生成默认配置
mkdir -m 755 -p /etc/supervisor/
echo_supervisord_config > supervisord.conf
Supervisor 配置
Supervisor 是一个 C/S 模型的程序,supervisord
是 server 端,supervisorctl
是 client 端。
supervisord
下面介绍 supervisord 配置方法。supervisord 的配置文件默认位于 /etc/supervisord.conf
,内容如下(;
后面为注释):
1 | ; supervisor config file |
program 配置
program 的配置文件就写在,supervisord 配置中 include
项的路径下:/etc/supervisor/conf.d/
,然后 program 的配置文件命名规则推荐:app_name.conf
1 | [program:uwsgi] |
supervisorctl 操作
supervisorctl 是 supervisord 的命令行客户端工具,使用的配置和 supervisord 一样,这里就不再说了。下面,主要介绍 supervisorctl 操作的常用命令:
输入命令 supervisorctl
进入 supervisorctl 的 shell 交互界面(还是纯命令行😓),就可以在下面输入命令了。:
- help # 查看帮助
- status # 查看程序状态
- stop program_name # 关闭 指定的程序
- start program_name # 启动 指定的程序
- restart program_name # 重启 指定的程序
- tail -f program_name # 查看 该程序的日志
- update # 重启配置文件修改过的程序(修改了配置,通过这个命令加载新的配置)
也可以直接通过 shell 命令操作:
- supervisorctl status
- supervisorctl update
启动supervisor之后就可以通过ip:9001
访问supervisor的管理页面,前提是配置中supervisorctl 配置这种http的访问方式,而不是像上面用socket套接字。