用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爬虫入门教程之糗百图片爬虫代码分享
Sep 02 Python
Python 自动刷博客浏览量实例代码
Jun 14 Python
Python实现判断一行代码是否为注释的方法
May 23 Python
对python中for、if、while的区别与比较方法
Jun 25 Python
Python中交换两个元素的实现方法
Jun 29 Python
Win10下python 2.7.13 安装配置方法图文教程
Sep 18 Python
python中对数据进行各种排序的方法
Jul 02 Python
复化梯形求积分实例——用Python进行数值计算
Nov 20 Python
Python实现将蓝底照片转化为白底照片功能完整实例
Dec 13 Python
flask框架蓝图和子域名配置详解
Jan 25 Python
Ubuntu中配置TensorFlow使用环境的方法
Apr 21 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
Jan 27 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 杂谈《重构-改善既有代码的设计》之五 简化函数调用
2012/05/07 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
2013/02/02 PHP
PHP小技巧之函数重载
2014/06/02 PHP
利用PHP自动生成印有用户信息的名片
2016/08/01 PHP
php与python实现的线程池多线程爬虫功能示例
2016/10/12 PHP
PHP手机短信验证码实现流程详解
2018/05/17 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
2019/10/10 PHP
拖动Html元素集合 Drag and Drop any item
2006/12/22 Javascript
javascript数组组合成字符串的脚本
2021/01/06 Javascript
FireFox JavaScript全局Event对象
2009/06/14 Javascript
小议javascript 设计模式 推荐
2009/10/28 Javascript
取选中的radio的值
2010/01/11 Javascript
JavaScript聚焦于第一个字段的代码
2010/10/15 Javascript
div模拟滚动条效果示例代码
2013/10/16 Javascript
js Array操作的最简短最容易理解方法
2013/12/09 Javascript
ajaxFileUpload.js插件支持多文件上传的方法
2014/09/02 Javascript
详解JavaScript语言的基本语法要求
2015/11/20 Javascript
JavaScript函数内部属性和函数方法实例详解
2016/03/17 Javascript
AngularJS入门教程之MVC架构实例分析
2016/11/01 Javascript
基于vue-cli创建的项目的目录结构及说明介绍
2017/11/23 Javascript
vscode 开发Vue项目的方法步骤
2018/11/25 Javascript
微信小程序自定义键盘 内部虚拟支付
2018/12/20 Javascript
vue-cli3+ts+webpack实现多入口多出口功能
2019/05/30 Javascript
解决vuex刷新状态初始化的方法实现
2019/08/15 Javascript
启动targetcli时遇到错误解决办法
2017/10/26 Python
解决python报错MemoryError的问题
2018/06/26 Python
什么是重载?CTS、CLS和CLR分别做何解释
2012/05/06 面试题
介绍一下.NET构架下remoting和webservice
2014/05/08 面试题
2014年廉洁自律承诺书
2014/05/26 职场文书
2015年女生节活动总结
2015/02/27 职场文书
老乡聚会通知
2015/04/23 职场文书
给女朋友的道歉短信
2015/05/12 职场文书
2019班干部竞选演讲稿范本!
2019/07/08 职场文书
Python中OpenCV实现简单车牌字符切割
2021/06/11 Python
详细聊聊vue中组件的props属性
2021/11/02 Vue.js
梳理总结Python开发中需要摒弃的18个坏习惯
2022/01/22 Python