用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对文件操作知识汇总
May 15 Python
Python中 Lambda表达式全面解析
Nov 28 Python
Python编程之event对象的用法实例分析
Mar 23 Python
Python实现简单的HttpServer服务器示例
Sep 25 Python
关于Django显示时间你应该知道的一些问题
Dec 25 Python
Python扩展内置类型详解
Mar 26 Python
对python3 中方法各种参数和返回值详解
Dec 15 Python
对python同一个文件夹里面不同.py文件的交叉引用方法详解
Dec 15 Python
Python 使用matplotlib模块模拟掷骰子
Aug 08 Python
Python 使用 environs 库定义环境变量的方法
Feb 25 Python
通过自学python能找到工作吗
Jun 21 Python
微信小程序调用python模型
Apr 21 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和XSL stylesheets转换XML文档
2006/10/09 PHP
PHP如何编写易读的代码
2007/07/10 PHP
PHP开发不能违背的安全规则 过滤用户输入
2011/05/01 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
php生成QRcode实例
2014/09/22 PHP
PHP中的替代语法介绍
2015/01/09 PHP
Android AsyncTack 异步任务实例详解
2016/11/02 PHP
jquery关于页面焦点的定位(文本框获取焦点时改变样式 )
2010/09/10 Javascript
jQuery 源码分析笔记(3) Deferred机制
2011/06/19 Javascript
div模拟选择框示例代码
2013/11/03 Javascript
在jquery boxy中添加百度地图坐标拾取注意流程
2014/04/03 Javascript
jQuery 复合选择器应用的几个例子
2014/09/11 Javascript
浅谈javascript中的闭包
2015/05/13 Javascript
vue数据双向绑定原理解析(get & set)
2017/03/08 Javascript
vue中使用vue-cli接入融云实现即时通信
2019/04/19 Javascript
[01:01:36]Optic vs paiN 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Django添加sitemap的方法示例
2018/08/06 Python
Python多线程threading模块用法实例分析
2019/05/22 Python
Django如何自定义model创建数据库索引的顺序
2019/06/20 Python
Django 外键的使用方法详解
2019/07/19 Python
使用Tkinter制作信息提示框
2020/02/18 Python
logging level级别介绍
2020/02/21 Python
python如何将两张图片生成为全景图片
2020/03/05 Python
python+selenium 脚本实现每天自动登记的思路详解
2020/03/11 Python
TensorFlow实现模型断点训练,checkpoint模型载入方式
2020/05/26 Python
拉斯维加斯城市观光通行证:Las Vegas Pass
2019/05/21 全球购物
美国在线购买和出售礼品卡网站:EJ Gift Cards
2019/06/09 全球购物
个人求职简历的自我评价范文
2013/10/09 职场文书
现场施工员岗位职责
2014/03/10 职场文书
文明礼貌演讲稿
2014/05/12 职场文书
奥林匹克的口号
2014/06/13 职场文书
2014镇副书记群众路线专题民主生活会思想汇报
2014/09/23 职场文书
2014年安全生产工作总结
2014/11/13 职场文书
结婚老公保证书
2015/02/26 职场文书
生产设备维护保养制度
2015/08/06 职场文书
Windows Server 版本 20H2 于 8 月 9 日停止支持,Win10 版本 21H1 将于 12 月结束支
2022/07/23 数码科技