用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查询Mysql时返回字典结构的代码
Jun 18 Python
Python基于twisted实现简单的web服务器
Sep 29 Python
python中的编码知识整理汇总
Jan 26 Python
基于python OpenCV实现动态人脸检测
May 25 Python
python使用Matplotlib画饼图
Sep 25 Python
Python解决两个整数相除只得到整数部分的实例
Nov 10 Python
Python第三方库h5py_读取mat文件并显示值的方法
Feb 08 Python
python 两个数据库postgresql对比
Oct 21 Python
Pandas DataFrame中的tuple元素遍历的实现
Oct 23 Python
python 比较字典value的最大值的几种方法
Apr 17 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
May 20 Python
python爬取天气数据的实例详解
Nov 20 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
Amazon Prime Video平台《无限住人 -IMMORTAL-》2020年开始TV放送!
2020/03/06 日漫
PHP+DBM的同学录程序(1)
2006/10/09 PHP
学习php设计模式 php实现装饰器模式(decorator)
2015/12/07 PHP
PHP中file_put_contents追加和换行的实现方法
2017/04/01 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
一步一步教你写一个jQuery的插件教程(Plugin)
2009/09/03 Javascript
ExtJS GridPanel 根据条件改变字体颜色
2010/03/08 Javascript
JavaScript判断前缀、后缀是否是空格的方法
2015/04/15 Javascript
jQuery聚合函数实例
2015/05/21 Javascript
jQuery地图map悬停显示省市代码分享
2015/08/20 Javascript
js生成随机数的过程解析
2015/11/24 Javascript
javascript实现仿百度图片的瀑布流加载效果
2016/04/20 Javascript
分享10个优化代码的CSS和JavaScript工具
2016/05/11 Javascript
使用ajaxfileupload.js实现上传文件功能
2016/08/13 Javascript
jquery实时获取时间的简单实例
2017/01/26 Javascript
浅谈键盘上回车按钮的js触发事件
2017/02/13 Javascript
JS实现的按钮点击颜色切换功能示例
2017/10/19 Javascript
js实现复制功能(多种方法集合)
2018/01/06 Javascript
基于Node.js搭建hexo博客过程详解
2019/06/25 Javascript
JavaScript Dom 绑定事件操作实例详解
2019/10/02 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
2021/02/04 jQuery
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
对python3中, print横向输出的方法详解
2019/01/28 Python
python matplotlib库绘制条形图练习题
2019/08/10 Python
Python3.7 pyodbc完美配置访问access数据库
2019/10/03 Python
pytorch实现从本地加载 .pth 格式模型
2020/02/14 Python
keras 自定义loss model.add_loss的使用详解
2020/06/22 Python
HTML5 visibilityState属性详细介绍和使用实例
2014/05/03 HTML / CSS
使用PDF.JS插件在HTML中预览PDF文件的方法
2018/08/29 HTML / CSS
跑步爱好者一站式服务网站:Jack Rabbit
2016/09/01 全球购物
绘画设计学生的个人自我评价
2013/09/20 职场文书
汽车专业毕业生自荐信
2013/11/03 职场文书
体育教育毕业生自荐信
2014/06/29 职场文书
合作协议书模板2014
2014/09/26 职场文书
2014年学生会个人工作总结
2014/11/07 职场文书