用uWSGI和Nginx部署Flask项目的方法示例


Posted in Python onMay 05, 2019

概况

在开发过程中,我们一般直接用Python命令直接运行Flask程序。这样的运行只适合我们开发,方便我们调试。一旦程序部署到线上,这样运行的Flask程序性能会比较低。可以采用uWSGI+Nginx进行部署。

uWSGI

在部署之前,我们得先了解几个概念

  • wsgi web应用程序之间的接口。它的作用就像是桥梁,连接在web服务器和web应用框架之间。
  • uwsgi 是一种传输协议,用于定义传输信息的类型。
  • uWSGI 是实现了uwsgi协议WSGI的web服务器。

部署

首先准备一个flask程序,名字run.py

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
  return '部署'

if __name__ == '__main__':
  app.run()

安装uWSGI

pip install uwsgi

在项目的目录创建一个uwsgi的配置文件

[uwsgi]
#配合nginx使用
socket = 127.0.0.1:8000
#项目路径 /Users/xiaoyuan/Desktop/flask_test
chdir      = 自己项目路径
#wsgi文件 run就是flask启动文件去掉后缀名 app是run.py里面的Flask对象 
module     = run:app
#指定工作进程
processes    = 4
#主进程
master     = true
#每个工作进程有2个线程
threads = 2
#指的后台启动 日志输出的地方
daemonize    = uwsgi.log
#保存主进程的进程号
pidfile = uwsgi.pid
#虚拟环境环境路径
virtualenv = /Users/xiaoyuan/.virtualenvs/flask_test

然后配置Nginx,找到Nginx的配置文件nginx.conf,在http块下加上下面代码

server {
 # 监听端口
  listen 80;
  # 监听ip 换成服务器公网IP
  server_name 127.0.0.1;
 
 #动态请求
 location / {
  include uwsgi_params;
  uwsgi_pass 127.0.0.1:8000;
 }
 #静态请求
 location /static {
 alias /Users/xiaoyuan/Desktop/flask_test/static;

 }
}

启动

启动uWSGI

uwsgi --ini uwsgi.ini

启动Nginx

/etc/init.d/nginx start

然后访问Nginx监听的IP,由于我在本地部署,就直接访问http://127.0.0.1:80/

用uWSGI和Nginx部署Flask项目的方法示例

其他命令

uwsgi重启

uwsgi --reload uwsgi.pid

uwsgi停止

uwsgi --stop uwsgi.pid

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
通过代码实例展示Python中列表生成式的用法
Mar 31 Python
Django发送html邮件的方法
May 26 Python
Python生成随机验证码的两种方法
Dec 22 Python
Python Nose框架编写测试用例方法
Oct 26 Python
python实现多人聊天室
Mar 31 Python
python 3调用百度OCR API实现剪贴板文字识别
Sep 04 Python
wxPython实现画图板
Aug 27 Python
Python图像处理库PIL中图像格式转换的实现
Feb 26 Python
Python 格式化打印json数据方法(展开状态)
Feb 27 Python
Django获取model中的字段名和字段的verbose_name方式
May 19 Python
python 装饰器的实际作用有哪些
Sep 07 Python
手把手教你用Django执行原生SQL的方法
Feb 18 Python
基于python实现高速视频传输程序
May 05 #Python
Python远程视频监控程序的实例代码
May 05 #Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
May 05 #Python
20行python代码实现人脸识别
May 05 #Python
使用python实现mqtt的发布和订阅
May 05 #Python
Python向excel中写入数据的方法
May 05 #Python
python使用pandas处理大数据节省内存技巧(推荐)
May 05 #Python
You might like
把77A收信机改造成收音机
2021/03/02 无线电
PHP 页面编码声明方法详解(header或meta)
2010/03/12 PHP
PHP支持多种格式图片上传(支持jpg、png、gif)
2011/11/03 PHP
thinkphp中ajax与php响应过程详解
2014/12/08 PHP
PHP魔术方法的使用示例
2015/06/23 PHP
尽可能写"友好"的"Javascript"代码
2007/01/09 Javascript
Javascript 读后台cookie代码
2008/09/15 Javascript
拖拉表格的JS函数
2008/11/20 Javascript
学习ExtJS(二) Button常用方法
2009/10/07 Javascript
jQuery 表格工具集
2010/04/25 Javascript
鼠标移入移出事件改变图片的分辨率的两种方法
2013/12/17 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
jquery 中toggle的2种用法详解(推荐)
2016/09/02 Javascript
div实现自适应高度的textarea实现angular双向绑定
2017/01/08 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
bootstrap的常用组件和栅格式布局详解
2017/05/02 Javascript
JS实现图片点击后出现模态框效果
2017/05/03 Javascript
常用的 JS 排序算法 整理版
2018/04/05 Javascript
element-ui 表格数据时间格式化的方法
2018/08/24 Javascript
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
[15:56]Heroes18_暗影萨满(完美)
2014/10/31 DOTA
浅谈Python中range和xrange的区别
2017/12/20 Python
TensorFlow深度学习之卷积神经网络CNN
2018/03/09 Python
pycharm重命名文件的方法步骤
2019/07/29 Python
python解析xml文件方式(解析、更新、写入)
2020/03/05 Python
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
美国婚礼装饰和活动用品批发供应商:Event Decor Direct
2018/10/12 全球购物
分解成质因数(如435234=251*17*17*3*2,据说是华为笔试题)
2014/07/16 面试题
员工晚婚的请假条
2014/02/08 职场文书
个人简历中自我评价
2014/02/11 职场文书
企业文化口号
2014/06/12 职场文书
应届大专生求职信
2014/06/26 职场文书
法定代表人授权委托书范文
2014/08/02 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书
酒店温馨提示语
2015/07/14 职场文书
《钓鱼的启示》教学反思
2016/02/18 职场文书