flask+uwsgi+supervisor部署流程
背景:
小鱼最近搞了个工程,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
增加配置如下:
[uwsgi] # uwsgi 启动时所使用的地址与端口
http-socket = 0.0.0.0: # 指向网站目录
chdir = /home/xxxxx #路径为步骤1中实际工程的目录 # python 启动程序文件
wsgi-file = manage.py # python 程序内用以启动的 application 变量名
callable = app
plugins = python
# 处理器数
processes = # 线程数
threads = #状态检测地址
stats = 127.0.0.1:
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 # 路径自己配置
如图:

其他文件修改:参考
https://www.cnblogs.com/whycai/p/11611007.html
3)修改后保存,命令 wq
7.新增配置文件 supervisor/conf.d/uwsgi.conf
命名:
mkdir -p supervisor/conf.d
vi supervisor/conf.d/uwsgi.conf
新增配置如下:
; ================================
; uwsgi supervisor
; ================================ [program:uwsgi]
command=/xxxx/uwsgi --ini /xxx/uconfig.ini # 前面路径为步骤3中uwsgi的路径,后面路径为步骤4中uconfig.ini的路径
directory=/xxxxx/ # 路径为步骤1中自己工程的目录
user=root
stdout_logfile=/xxxxx/uwsgi_out.log # 自己选择路径配置
stderr_logfile=/xxxx/uwsgi_err.log # 自己选择路径配置
autostart=true
autorestart=true
startsecs=
priority=
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
flask+uwsgi+supervisor部署流程的更多相关文章
- 使用Flask+uwsgi+Nginx部署Flask正式环境
环境准备 在开始正式讲解之前,我们将首先进行环境准备. Step1:安装Python,pip以及nginx: sudo apt-get update sudo apt-get install pyth ...
- nginx+uwsgi+django部署流程
当我们在用django开发的web项目时,开发测试过程中用到的是django自带的测试服务器,由于其安全及稳定等性能方面的局限性,django官方并不建议将测试服务器用在实际生产. nginx+uws ...
- Python基础 - Ubuntu+Nginx+uwsgi+supervisor部署Flask应用
网上找了许多讲关于Flask应用部署的文章几乎都是一个helloworld的Demo,按照helloworld来部署都没问题,但实际项目部署时还是遇到了不少问题.在这里简单写下自己成功部署的过程,防止 ...
- flask部署:Ubuntu下使用nginx+uwsgi+supervisor部署flask应用
之前一直用的Centos或者Red hat,自从使用Ubuntu后,发现Ubuntu使用起来更方便,自此爱上Ubuntu. 一.从github上下载flask应用 1.我已经成功将自己编写好的应用上传 ...
- Nginx+uwsgi+supervisor+Ubuntu+flask
Nginx+uwsgi+supervisor+Ubuntu+flask Nginx+uwsgi+supervisor在Ubuntu上部署flask应用 网上找了许多讲关于Flask应用部署的文章几乎都 ...
- Flask+uwsgi+Nginx+Ubuntu部署
学了一段时间flask,可是一直没有做过部署, 于是想着怎么部署呢, 想想,先吧服务给搞通吧,于是呢 就先想着去吧服务给搞起来,这里选择的是Flask+uwsgi+Nginx+Ubuntu, Pyth ...
- flask +gevent+nginx+Gunicorn+supervisor部署flask应用
上篇 可以完美部署flask ,但是视乎在结合gevent+apscheduler 实现异步非阻塞后台和定时任务的时候视乎不是那么完美.请教了前辈,决定使用flask+gevent+nginx+g ...
- CentOS 下部署Nginx+Gunicorn+Supervisor部署Flask项目
原本之前有一部分东西是在Windows Server,但是由于Gunicorn不支持Windows部署起来颇为麻烦.最近转战CentOS,折腾一段时间,终于简单部署成功.CentOS新手,作为一个总结 ...
- 写给新手看的Flask+uwsgi+Nginx+Ubuntu部署教程
学习 Flask,写完一个 Flask 应用需要部署的时候,就想着折腾自己的服务器.根据搜索的教程照做,对于原理一知半解,磕磕碰碰,只要运行起来了,谢天谢地然后不再折腾了,到下一次还需要部署时,这样的 ...
随机推荐
- axios.js 在测试机ios7.1的iphone4中不能发送http请求解决方案
原因:axios使用promise语法,浏览器不支持该语法 解决思路:使浏览器支持promise语法 具体代码: 安装es6-promise,npm i es6-promise -D. 在引入axio ...
- eclipse设置格式化tab为4个空格和idea一样
- QT 源码分析--1
Ref: http://blog.sina.com.cn/s/blog_6e80f1390100qoc0.html 安装qt之后(我使用的是online自动安装),安装目录下有\5.10.1\Src\ ...
- [.Net Core] - 使用 NLog 记录日志到 Sql Server
1. 使用 Nuget 安装 NLog. 2. 在 Sql Server 中创建 NLog 数据表. CREATE TABLE [dbo].[NLogInfo]( ,) NOT NULL, [Date ...
- 转:Cesium 和 Webpack
原文地址:https://www.jianshu.com/p/85917bcc023f 注意:webpack 和 webpack-cli 的安装参考 https://www.cnblogs.com/m ...
- Aes 加密解密 java加密解密
使用AES加密解密代码详解 首先,如果是使用nodejs + vue 写的前端, 那么你需要npm 加载一个js文件 npm i crypto-js --save --save-exact npm i ...
- 剑指offer61:序列化二叉树
1 题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存.序列化可以基于先 ...
- 使用querySelector添加移除style和class
document.querySelector(selector).style.styleName = 样式 对dom节点添加一个样式 document.querySelector(".nam ...
- CentOS7安装firewall防火墙
CentOS7之后 , 系统已经推荐了firewall防火墙 , 而不是iptables 主要 : firewall 和 iptables冲突 , 需要禁用其中一个. #停止iptables服务 sy ...
- IO是否会一直占用CPU?(转)
原文来自知乎:https://www.zhihu.com/question/27734728 这是一个很好的关于并发/并行系统的问题.简单回答就是:IO所需要的CPU资源非常少.大部分工作是分派给DM ...