用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 相关文章推荐
Windows系统下安装Python的SSH模块教程
Feb 05 Python
Python创建系统目录的方法
Mar 11 Python
用TensorFlow实现多类支持向量机的示例代码
Apr 28 Python
python把数组中的数字每行打印3个并保存在文档中的方法
Jul 17 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
Apr 29 Python
python如何统计代码运行的时长
Jul 24 Python
详解python中的模块及包导入
Aug 30 Python
Django 实现xadmin后台菜单改为中文
Nov 15 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
Apr 27 Python
Python高并发和多线程有什么关系
Nov 14 Python
python 制作网站筛选工具(附源码)
Jan 21 Python
python re模块和正则表达式
Mar 24 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 中英文语言转换类
2011/09/07 PHP
PHP漏洞全解(详细介绍)
2012/11/13 PHP
与文件上传有关的php配置参数总结
2013/06/14 PHP
浅析memcache启动以及telnet命令详解
2013/06/28 PHP
php实现smarty模板无限极分类的方法
2015/12/07 PHP
PHP预定义变量9大超全局数组用法详解
2016/04/23 PHP
php安装dblib扩展,连接mssql的具体步骤
2017/03/02 PHP
Laravel中的Auth模块详解
2017/08/17 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
2020/01/23 PHP
img的onload的另类用法
2008/01/10 Javascript
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
2008/12/25 Javascript
Jquery 学习笔记(一)
2009/10/13 Javascript
JQuery Tips(3) 关于$()包装集内元素的改变
2009/12/14 Javascript
js调用iframe实现打印页面内容的方法
2014/03/04 Javascript
js toFixed()方法的重写实现精度的统一
2014/03/06 Javascript
JsRender for index循环索引用法详解
2014/10/31 Javascript
常用的Javascript数据验证插件
2015/08/04 Javascript
Highcharts 多个Y轴动态刷新数据的实现代码
2016/05/28 Javascript
再次谈论Javascript中的this
2016/06/23 Javascript
jQuery实现弹幕效果
2017/02/17 Javascript
Vue.extend构造器的详解
2017/07/17 Javascript
Javascript防止图片拉伸的自适应处理方法
2017/12/26 Javascript
js数组常用最重要的方法
2018/02/04 Javascript
React和Vue中监听变量变化的方法
2018/11/14 Javascript
微信小程序 组件的外部样式externalClasses使用详解
2019/09/06 Javascript
高性能js数组去重(12种方法,史上最全)
2019/12/21 Javascript
uin-app+mockjs实现本地数据模拟
2020/08/26 Javascript
Python多线程编程(五):死锁的形成
2015/04/05 Python
对python多线程与global变量详解
2018/11/09 Python
python itchat给指定联系人发消息的方法
2019/06/11 Python
Django实现微信小程序的登录验证功能并维护登录态
2019/07/04 Python
python3中eval函数用法使用简介
2019/08/02 Python
python绘制趋势图的示例
2020/09/17 Python
CSS3 不定高宽垂直水平居中的几种方式
2020/03/26 HTML / CSS
HTML5制作表格样式
2016/11/15 HTML / CSS
Linux如何修改文件和文件夹的权限
2013/09/05 面试题