用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读取浮点数和读取文本文件示例
May 06 Python
Python基础语法(Python基础知识点)
Feb 28 Python
Python星号*与**用法分析
Feb 02 Python
tensorflow实现简单逻辑回归
Sep 07 Python
pandas修改DataFrame列名的实现方法
Feb 22 Python
python pickle存储、读取大数据量列表、字典数据的方法
Jul 07 Python
Python hashlib模块加密过程解析
Nov 05 Python
python实现简单学生信息管理系统
Apr 09 Python
Python实现电视里的5毛特效实例代码详解
May 15 Python
Matlab中plot基本用法的具体使用
Jul 17 Python
简述python四种分词工具,盘点哪个更好用?
Apr 13 Python
详解pytorch创建tensor函数
Mar 22 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的autoLoad自动加载机制
2012/09/27 PHP
php使用正则过滤js脚本代码实例
2014/05/10 PHP
浅谈PHP中output_buffering
2015/07/13 PHP
prototype 1.5 & scriptaculous 1.6.1 学习笔记
2006/09/07 Javascript
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
2009/06/02 Javascript
可在线编辑网页文字效果代码(单击)
2013/03/02 Javascript
bootstrap data与jquery .data
2014/07/07 Javascript
JavaScript实现前端分页控件
2017/04/19 Javascript
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
2017/09/20 jQuery
如何更好的编写js async函数
2018/05/13 Javascript
微信小程序实现富文本图片宽度自适应的方法
2019/01/20 Javascript
javascript异步处理与Jquery deferred对象用法总结
2019/06/04 jQuery
详解vue-property-decorator使用手册
2019/07/29 Javascript
不刷新网页就能链接新的js文件方法总结
2020/03/01 Javascript
vue-video-player视频播放器使用配置详解
2020/10/23 Javascript
Python中的闭包实例详解
2014/08/29 Python
python基于隐马尔可夫模型实现中文拼音输入
2016/04/01 Python
利用python实现命令行有道词典的方法示例
2017/01/31 Python
基于Django的python验证码(实例讲解)
2017/10/23 Python
python Opencv将图片转为字符画
2021/02/19 Python
Python利用splinter实现浏览器自动化操作方法
2018/05/11 Python
Python图像的增强处理操作示例【基于ImageEnhance类】
2019/01/03 Python
windows中安装Python3.8.0的实现方法
2019/11/19 Python
python操作ini类型配置文件的实例教程
2020/10/30 Python
NBA欧洲商店(法国):NBA Europe Store FR
2016/10/19 全球购物
WoolOvers爱尔兰:羊绒、羊毛和棉针织品
2017/01/04 全球购物
澳洲本土太阳镜品牌:Quay Australia
2019/07/29 全球购物
银行实习自我鉴定
2013/10/12 职场文书
外企求职信范文分享
2013/12/31 职场文书
学年末自我鉴定
2014/01/21 职场文书
护士长竞聘书
2014/03/31 职场文书
上班迟到检讨书
2014/09/15 职场文书
建立共青团委员会的请示
2019/04/02 职场文书
jQuery实现广告显示和隐藏动画
2021/07/04 jQuery
JS中如何优雅的使用async await详解
2021/10/05 Javascript
win10怎么设置右下角图标不折叠?Win10设置右下角图标不折叠的方法
2022/07/15 数码科技