背景:
小鱼最近搞了个工程,python用的2.7(用3也可以),后端使用的是flask,服务器用的linux,使用 flask+uwsgi+supervisor部署 ,查阅相关博客、调试、实操,已经搞起来了
supervisor介绍如下:
supervisor:进程管理工具,可以很方便的管理你的工程 启动、重启、停止等操作,不用再去自己写脚本控制;想更深入了解可以搜下相关supervisor资料介绍
安装部署流程如下
1.将工程打包到服务器上
上传的方法很多,如xftp、filezilla 工具、或ftp命令等;
2.新建虚拟环境
此步可以忽略,根据自己实际情况来
使用virtualenv 的好处就是可以让你的项目单独使用一个环境,不受系统环境和其他项目的影响
命令(如果没有,安装一下pip install virtualenv):
virtualenv venv
或:
python-m venv venvDir
执行后会生成venv目录,使用 source venv/bin/activate 进去虚拟环境,如图:
退出直接使用 deactivate 即可
你的工程需要安装包的话自行 pip安装
3.安装 uwsgi
pip install uwsgi
安装完成后,会成生 uwsgi 文件,如图:
4.配置 uconfig.ini文件
新建 uconfig.inx文件,命令行 vi uconfig.ini
增加配置如下:
1 [uwsgi]2
3 # uwsgi 启动时所使用的地址与端口4 http-socket = 0.0.0.0:5000
5
6 # 指向网站目录7 chdir = /home/xxxxx #路径为步骤1中实际工程的目录8
9 # python 启动程序文件10 wsgi-file =manage.py11
12 # python 程序内用以启动的 application 变量名13 callable =app14 plugins =python15 # 处理器数16 processes = 4
17
18 # 线程数19 threads = 2
20
21 #状态检测地址22 stats = 127.0.0.1:9191
5.安装 supervisor
pip install supervisor
安装完成后会生成 echo_supervisord_conf、supervisorctl、supervisord 文件,如图
6. 生成配置文件 supervisord.conf
1)supervisord.conf 文件名自己取,生成到哪个目录下面自己选择,命令:
echo_supervisord_config > supervisord.conf
2)修改supervisord.conf配置
vi supervisord.conf
输入二个大写的G,到文件最后面,配置如下:
[include] # ‘;’注释去掉
;files = relative/directory/*.ini
files = /xxx/supervisor/conf.d/*.conf # 路径自己配置
如图:
其他文件修改:参考
3)修改后保存,命令 wq
7.新增配置文件 supervisor/conf.d/uwsgi.conf
命名:
mkdir -p supervisor/conf.d
vi supervisor/conf.d/uwsgi.conf
新增配置如下:
1 ; ================================
2 ; uwsgi supervisor3 ; ================================
4
5 [program:uwsgi]6 command=/xxxx/uwsgi --ini /xxx/uconfig.ini # 前面路径为步骤3中uwsgi的路径,后面路径为步骤4中uconfig.ini的路径7 directory=/xxxxx/# 路径为步骤1中自己工程的目录8 user=root9 stdout_logfile=/xxxxx/uwsgi_out.log # 自己选择路径配置10 stderr_logfile=/xxxx/uwsgi_err.log # 自己选择路径配置11 autostart=true
12 autorestart=true
13 startsecs=10
14 priority=997
8.以上都完成后,就可以运行你的工程了
1)命令:
killall supervisord
supervisord -c supervisord.conf
2)查看是否启动,
ps -ef|grep supervisord
ps -ef|grep uwsgi
如果没启动,查看配置是否配置有误,具体问题具体分析
3)使用supervisorctl管理你的工程
命令:
supervisorctl
help
使用 stop、start等,可以很方便的管理你的工程
好了,以上就是小鱼的部署步骤,可以愉快的玩耍了
一些报错结果:
1. Unlinking stale socket xxxxxx/supervisor.sock
解决:unlink supervisor.sock