用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和pyqt实现360的CLable控件
Feb 21 Python
python获取文件后缀名及批量更新目录下文件后缀名的方法
Nov 11 Python
Python实现PS图像调整颜色梯度效果示例
Jan 25 Python
python selenium 对浏览器标签页进行关闭和切换的方法
May 21 Python
TensorFlow利用saver保存和提取参数的实例
Jul 26 Python
pygame实现雷电游戏雏形开发
Nov 20 Python
Python中collections模块的基本使用教程
Dec 07 Python
python networkx 根据图的权重画图实现
Jul 10 Python
python的range和linspace使用详解
Nov 27 Python
Python猫眼电影最近上映的电影票房信息
Sep 18 Python
Ubuntu权限不足无法创建文件夹解决方案
Nov 14 Python
详解python 条件语句和while循环的实例代码
Dec 28 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程序防止ddos,dns,集群服务器攻击的解决办法
2013/06/18 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
2015/10/09 PHP
thinkphp多层MVC用法分析
2015/12/30 PHP
PHP实现多关键字加亮功能
2016/10/21 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
2016/11/14 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
2010/06/28 Javascript
用按钮控制iframe显示的网页实现方法
2013/02/04 Javascript
将两个div左右并列显示并实现点击标题切换内容
2013/10/22 Javascript
jQuery实现点击该行即可删除HTML表格行
2014/10/17 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
2016/03/02 Javascript
JS中递归函数
2016/06/17 Javascript
浅谈时钟的生成(js手写简洁代码)
2016/08/20 Javascript
微信小程序 教程之事件
2016/10/18 Javascript
浅谈Vue网络请求之interceptors实际应用
2018/02/28 Javascript
JavaScript实现的简单Tab点击切换功能示例
2018/07/06 Javascript
Vue toFixed保留两位小数的3种方式
2020/10/23 Javascript
[44:40]Serenity vs Pain 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python实现马耳可夫链算法实例分析
2015/05/20 Python
python中__call__内置函数用法实例
2015/06/04 Python
python获取局域网占带宽最大3个ip的方法
2015/07/09 Python
python cs架构实现简单文件传输
2020/03/20 Python
python数据库编程 Mysql实现通讯录
2020/03/27 Python
如何在mac版pycharm选择python版本
2020/07/21 Python
Python提取视频中图片的示例(按帧、按秒)
2020/10/22 Python
一款利用纯css3实现的超炫3D表单的实例教程
2014/12/01 HTML / CSS
Lookfantastic台湾:英国彩妆美发保养购物网
2018/03/26 全球购物
英国儿童设计师服装和玩具购物网站:Zac & Lulu
2020/10/19 全球购物
外贸主管求职简历的自我评价
2013/10/23 职场文书
大学生专科毕业生自我评价
2013/11/17 职场文书
理工科学生的自我评价
2013/12/15 职场文书
办理护照介绍信
2014/01/16 职场文书
十八届三中全会宣传方案
2014/02/21 职场文书
工作作风承诺书
2014/08/30 职场文书
Python一些基本的图像操作和处理总结
2021/06/23 Python
关于HTML编码导致的乱码问题
2021/09/04 HTML / CSS