用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 从远程服务器下载日志文件的程序
Feb 10 Python
Linux下为不同版本python安装第三方库
Aug 31 Python
Python 实现引用其他.py文件中的类和类的方法
Apr 29 Python
解决安装python库时windows error5 报错的问题
Oct 21 Python
python开发游戏的前期准备
May 05 Python
Python OpenCV 使用滑动条来调整函数参数的方法
Jul 08 Python
wxPython窗体拆分布局基础组件
Nov 19 Python
使用Matplotlib 绘制精美的数学图形例子
Dec 13 Python
python打印n位数“水仙花数”(实例代码)
Dec 25 Python
Python的赋值、深拷贝与浅拷贝的区别详解
Feb 12 Python
如何写python的配置文件
Jun 07 Python
Python使用lambda抛出异常实现方法解析
Aug 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
php实现二进制和文本相互转换的方法
2015/04/18 PHP
刷新PHP缓冲区为你的站点加速
2015/10/10 PHP
Symfony核心类概述
2016/03/17 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
jquery ajax return没有返回值的解决方法
2011/10/20 Javascript
jquery选择器使用详解
2014/04/08 Javascript
动态加载js的方法汇总
2015/02/13 Javascript
JavaScript转换二进制编码为ASCII码的方法
2015/04/16 Javascript
jquery实现简单的自动播放幻灯片效果
2015/06/13 Javascript
js实现的下拉框二级联动效果
2016/04/30 Javascript
BootStrap智能表单实战系列(八)表单配置json详解
2016/06/13 Javascript
javascript学习笔记_浅谈基础语法,类型,变量
2016/09/19 Javascript
值得分享的Bootstrap Table使用教程
2016/11/23 Javascript
JS实现滑动门效果的方法详解
2016/12/19 Javascript
js实现3D图片环展示效果
2017/03/09 Javascript
self.attachevent is not a function的解决方法
2017/04/04 Javascript
vue刷新和tab切换实例
2018/02/11 Javascript
vuex 的简单使用
2018/03/22 Javascript
使用electron实现百度网盘悬浮窗口功能的示例代码
2018/10/24 Javascript
Node.js 实现远程桌面监控的方法步骤
2019/07/02 Javascript
layer.alert回调函数执行关闭弹窗的实例
2019/09/11 Javascript
JS代码屏蔽F12,右键,粘贴,复制,剪切,选中,操作实例
2019/09/17 Javascript
详解如何在Javascript中使用Object.freeze()
2020/10/18 Javascript
python中lambda函数 list comprehension 和 zip函数使用指南
2014/09/28 Python
Python入门篇之面向对象
2014/10/20 Python
深入浅析python中的多进程、多线程、协程
2016/06/22 Python
对Python 文件夹遍历和文件查找的实例讲解
2018/04/26 Python
pycharm运行和调试不显示结果的解决方法
2018/11/30 Python
ALDO美国官网:加拿大女鞋品牌
2018/12/28 全球购物
全球在线商店:BerryLook
2019/04/14 全球购物
eBay意大利购物网站:eBay.it
2019/09/04 全球购物
就业意向书范文
2014/04/01 职场文书
食品安全承诺书范文
2014/08/29 职场文书
2015年卫生局工作总结
2015/07/24 职场文书
MySQL时间设置注意事项的深入总结
2021/05/06 MySQL
Python pandas求方差和标准差的方法实例
2021/08/04 Python