用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的Tornado框架对子域名和泛域名的支持
May 02 Python
python创建进程fork用法
Jun 04 Python
Python中getattr函数和hasattr函数作用详解
Jun 14 Python
简单实现python进度条脚本
Dec 18 Python
Tensorflow的可视化工具Tensorboard的初步使用详解
Feb 11 Python
pandas or sql计算前后两行数据间的增值方法
Apr 20 Python
django 发送邮件和缓存的实现代码
Jul 18 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
Apr 28 Python
python算法与数据结构之单链表的实现代码
Jun 27 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
Mar 13 Python
利用python在excel中画图的实现方法
Mar 17 Python
python Selenium 库的使用技巧
Oct 16 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
咖啡历史、消费和行业趋势
2021/03/03 咖啡文化
PHP如何通过传引用的思想实现无限分类(代码简单)
2015/10/13 PHP
PHP封装的MSSql操作类完整实例
2016/05/26 PHP
Thinkphp 中 distinct 的用法解析
2016/12/14 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
2017/03/17 PHP
对laravel的csrf 防御机制详解,及form中csrf_token()的存在介绍
2019/10/24 PHP
firefox中JS读取XML文件
2006/12/21 Javascript
javascript实现阻止iOS APP中的链接打开Safari浏览器
2014/06/12 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
2015/03/18 Javascript
JavaScript使用push方法添加一个元素到数组末尾用法实例
2015/04/06 Javascript
JS实现关闭当前页而不弹出提示框的方法
2016/06/22 Javascript
AngularJS在IE下取数据总是缓存问题的解决方法
2016/08/05 Javascript
AngularJS 所有版本下载地址
2016/09/14 Javascript
nodejs基础知识
2017/02/03 NodeJs
vuejs使用axios异步访问时用get和post的实例讲解
2018/08/09 Javascript
vue.js响应式原理解析与实现
2020/06/22 Javascript
vue实现的下拉框功能示例
2019/01/29 Javascript
[03:16]DOTA2完美大师赛主赛事首日集锦
2017/11/23 DOTA
Python内置函数——__import__ 的使用方法
2017/11/24 Python
Python实现矩阵相乘的三种方法小结
2018/07/26 Python
python删除某个目录文件夹的方法
2020/05/26 Python
PyTorch安装与基本使用详解
2020/08/31 Python
python list的index()和find()的实现
2020/11/16 Python
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
2013/11/18 HTML / CSS
南非领先的在线旅行社:Travelstart南非
2016/09/04 全球购物
菲律宾购物网站:Lazada菲律宾
2018/04/05 全球购物
美国领先的低折扣旅行网站:Hotwire
2019/01/19 全球购物
德国健康生活方式网上商店:Landkaufhaus Mayer
2019/03/12 全球购物
外包公司软件测试工程师
2014/11/01 面试题
用Java语言将一个键盘输入的数字转化成中文输出
2013/01/25 面试题
洗煤厂厂长岗位职责
2014/01/03 职场文书
个人房屋买卖协议书(范本)
2014/10/04 职场文书
主持稿开场白
2015/06/01 职场文书
运动会主持词大全
2015/07/02 职场文书
MySQL Shell import_table数据导入的实现
2021/08/07 MySQL
Vue.js中v-for指令的用法介绍
2022/03/13 Vue.js