用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实现的一个找零钱的小程序代码分享
Aug 25 Python
在Python中用get()方法获取字典键值的教程
May 21 Python
Python实现树的先序、中序、后序排序算法示例
Jun 23 Python
numpy linalg模块的具体使用方法
May 26 Python
python openpyxl使用方法详解
Jul 18 Python
关于pytorch中网络loss传播和参数更新的理解
Aug 20 Python
解决Keras中CNN输入维度报错问题
Jun 29 Python
python中加背景音乐如何操作
Jul 19 Python
python使用matplotlib:subplot绘制多个子图的示例
Sep 24 Python
Python学习工具jupyter notebook安装及用法解析
Oct 23 Python
PyCharm Community安装与配置的详细教程
Nov 24 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
Mar 04 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
BBS(php & mysql)完整版(八)
2006/10/09 PHP
PHP Pear 安装及使用
2009/03/19 PHP
php checkbox 取值详细说明
2010/08/19 PHP
PHP以及MYSQL日期比较方法
2012/11/29 PHP
PHP异步进程助手async-helper
2018/02/05 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
Auntion-TableSort国人写的一个javascript表格排序的东西
2007/11/12 Javascript
js活用事件触发对象动作
2008/08/10 Javascript
json数据与字符串的相互转化示例
2013/09/18 Javascript
js实现点小图看大图效果的思路及示例代码
2013/10/28 Javascript
Jquery实现自定义tooltip示例代码
2014/02/12 Javascript
json实现前后台的相互传值详解
2015/01/05 Javascript
jQuery插件ImageDrawer.js实现动态绘制图片动画(附源码下载)
2016/02/25 Javascript
基于Angularjs实现分页功能
2016/05/30 Javascript
如何判断出一个js对象是否一个dom对象
2016/11/24 Javascript
Nodejs 搭建简单的Web服务器详解及实例
2016/11/30 NodeJs
Bootstrap中data-target 到底是什么
2017/02/14 Javascript
javascript字体颜色控件的开发 JS实现字体控制
2017/11/27 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
详解Vue中的基本语法和常用指令
2019/07/23 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
2020/02/03 Javascript
python统计字符串中指定字符出现次数的方法
2015/04/04 Python
Python 实现删除某路径下文件及文件夹的实例讲解
2018/04/24 Python
基于数据归一化以及Python实现方式
2018/07/11 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
2019/01/23 Python
使用Python内置模块与函数进行不同进制的数的转换
2020/04/26 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
2020/10/30 Python
基于python模拟TCP3次握手连接及发送数据
2020/11/06 Python
css3使网页、图片变成灰色兼容大多数浏览器
2014/07/02 HTML / CSS
cosme官方海外旗舰店:日本最大化妆品和美容产品的综合口碑网站
2017/01/18 全球购物
党员领导干部民主生活会批评与自我批评发言
2014/09/28 职场文书
云南省召开党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
整改落实情况汇报材料
2014/10/29 职场文书
门面房租房协议书
2014/12/01 职场文书
关于antd tree 和父子组件之间的传值问题(react 总结)
2021/06/02 Javascript