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 应用需要部署的时候,就想着折腾自己的服务器.根据搜索的教程照做,对于原理一知半解,磕磕碰碰,只要运行起来了,谢天谢地然后不再折腾了,到下一次还需要部署时,这样的 ...
随机推荐
- Docker从容器内拷贝文件到主机上
//以elasticsearch容器为例 //运行es docker run -d -p 9200:9200 elasticsearch:5.4 //查看已运行的容器 docker ps //进去容器 ...
- 022 Android .9图片的含义及制作教程
1.图片(.9.png格式)的概念 (1)9patch图片是andriod app开发里一种特殊的图片形式,文件的扩展名为:.9.png (2)9patch图片的作用就是在图片拉伸的时候保证其不会失真 ...
- Session中清除对象方法比较
转载. https://blog.csdn.net/u014401141/article/details/51816308 Session中清除对象方法比较 http://blog.csdn.ne ...
- Word 中批量修改所有表格格式样式
1. 引言 我们在使用Word排版编写书籍时候,可能会带有许多表格,上百,甚至上千个表格都是有可能的.这么多的表格对于后期的样式修改是非常不利的,有什么好的方法能够一次性修改文档中所有的表格,将其统一 ...
- asp.net后台或前端获取TemplateField绑定的文本
GridView中使用最多的一个是BoundField,还有一个是TemplateField 这两个各有其特点,BoundField的话比较简单,设置好DataField.HeaderText等就可以 ...
- OpenCvSharp 图像旋转
/// <summary> /// 图像旋转 /// </summary> private Mat MatRotate(Mat src, float angle) { Mat ...
- springmvc+mybatis的增删改查入门
先到官网了解mybatis的语法:https://mybatis.org/mybatis-3/zh/sqlmap-xml.html 前端用了thymeleaf和vue.js,效果图和demo地址:ht ...
- PyCharm 占用过大 C 盘空间,system 配置文件迁移
随着 PyCharm 的持续使用,对应 C:\Users\<username>\.PyCharm<2018.3> 下的文件大小会持续增大,且通常为 system 文件夹下的内容 ...
- JS权威指南读书笔记(一)
第一章 JavaScript概述 1 JS是一门高端的.动态的.弱类型的编程语言,非常适合面向对象和函数式的编程风格. 第二章 词法结构 1 JS程序是用Unicode字符集编写的. 2 JS是区 ...
- python OpenCV使用
关于OpenCV简介 OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效——由一系列 C ...