用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使用turtule画五角星的方法
Jul 09 Python
python文件与目录操作实例详解
Feb 22 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
Apr 17 Python
详解基于django实现的webssh简单例子
Jul 17 Python
Numpy 改变数组维度的几种方法小结
Aug 02 Python
PyCharm配置mongo插件的方法
Nov 30 Python
python交互界面的退出方法
Feb 16 Python
Django框架首页和登录页分离操作示例
May 28 Python
PyQt5+Caffe+Opencv搭建人脸识别登录界面
Aug 28 Python
python实现连续变量最优分箱详解--CART算法
Nov 22 Python
Python 一行代码能实现丧心病狂的功能
Jan 18 Python
使用Python实现音频双通道分离
Dec 25 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
PHP图片上传类带图片显示
2006/11/25 PHP
php 无法载入mysql扩展
2010/03/12 PHP
php实现的微信红包算法分析(非官方)
2015/09/25 PHP
php foreach如何跳出两层循环(详解)
2016/11/05 PHP
如何从jQuery的ajax请求中删除X-Requested-With
2013/12/11 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
2015/01/27 Javascript
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
JavaScript实现标题栏文字轮播效果代码
2015/10/24 Javascript
JavaScript encodeURI 和encodeURIComponent
2015/12/04 Javascript
Windows 系统下设置Nodejs NPM全局路径
2016/04/26 NodeJs
浅析Bootstrap缩略图组件与警示框组件
2016/04/29 Javascript
jQuery代码实现表格中点击相应行变色功能
2016/05/09 Javascript
实例讲解Jquery中隐藏hide、显示show、切换toggle的用法
2016/05/13 Javascript
javascript弹出带文字信息的提示框效果
2016/07/19 Javascript
Bootstrap和Java分页实例第一篇
2016/12/23 Javascript
js通过Date对象实现倒计时动画效果
2017/10/27 Javascript
使用D3.js+Vue实现一个简单的柱形图
2018/08/05 Javascript
vue组件三大核心概念图文详解
2019/05/30 Javascript
Vue+ElementUI项目使用webpack输出MPA的方法
2019/08/27 Javascript
Electron 调用命令行(cmd)
2019/09/23 Javascript
JS中间件设计模式的深入探讨与实例分析
2020/04/11 Javascript
Angular+ionic实现折叠展开效果的示例代码
2020/07/29 Javascript
[02:15]2014DOTA2国际邀请赛 专访LGD.lin小兔子是大腿
2014/07/14 DOTA
[01:08:43]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第一场 1月9日
2021/03/11 DOTA
Python中endswith()函数的基本使用
2015/04/07 Python
python实现根据ip地址反向查找主机名称的方法
2015/04/29 Python
python如何压缩新文件到已有ZIP文件
2018/03/14 Python
Django之模型层多表操作的实现
2019/01/08 Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
2020/02/26 Python
HTML5在a标签内放置块级元素示例代码
2013/08/23 HTML / CSS
阿里旅行:飞猪
2017/01/05 全球购物
美国女士时尚珠宝及配饰购物网站:Icing
2018/07/02 全球购物
财务总监岗位职责
2014/03/07 职场文书
2014县委书记党的群众路线教育实践活动对照检查材料思想汇报
2014/09/22 职场文书
《索溪峪的野》教学反思
2016/02/19 职场文书
Python 中的单分派泛函数你真的了解吗
2021/06/22 Python