用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 相关文章推荐
下载给定网页上图片的方法
Feb 18 Python
简单上手Python中装饰器的使用
Jul 12 Python
Python读取网页内容的方法
Jul 30 Python
Python字典操作详细介绍及字典内建方法分享
Jan 04 Python
python链接oracle数据库以及数据库的增删改查实例
Jan 30 Python
利用python实现对web服务器的目录探测的方法
Feb 26 Python
Python使用POP3和SMTP协议收发邮件的示例代码
Apr 16 Python
Python判断对象是否为文件对象(file object)的三种方法示例
Apr 26 Python
python将excel转换为csv的代码方法总结
Jul 03 Python
python实现知乎高颜值图片爬取
Aug 12 Python
AUC计算方法与Python实现代码
Feb 28 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
Jun 01 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获取本周,上周,本月,上月,本季度日期的代码
2009/08/05 PHP
php中count获取多维数组长度的方法
2014/11/03 PHP
PHP递归实现层级树状展开
2016/04/01 PHP
php实现的二分查找算法示例
2017/06/20 PHP
actionscript与javascript的区别
2011/05/25 Javascript
按下Enter焦点移至下一个控件的实现js代码
2013/12/11 Javascript
给js文件传参数(详解)
2014/07/13 Javascript
javascript实现动态统计图开发实例
2015/11/21 Javascript
如何提高数据访问速度
2016/12/26 Javascript
最基础的vue.js双向绑定操作
2017/08/23 Javascript
JS实现验证码倒计时的注册页面
2018/01/02 Javascript
简单通过settimeout看javascript的运行机制
2019/05/10 Javascript
JS实现继承的几种常用方式示例
2019/06/22 Javascript
[56:35]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第二局
2016/02/27 DOTA
[03:59]第二届DOTA2亚洲邀请赛选手传记-VGJ.rOtk
2017/04/03 DOTA
[01:30:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第二场 2月2日
2021/03/11 DOTA
Request的中断和ErrorHandler实例解析
2018/02/12 Python
python随机取list中的元素方法
2018/04/08 Python
python实现按首字母分类查找功能
2019/10/31 Python
python 实现让字典的value 成为列表
2019/12/16 Python
关于Tensorflow分布式并行策略
2020/02/03 Python
超全Python图像处理讲解(多模块实现)
2020/04/13 Python
Python Celery异步任务队列使用方法解析
2020/08/10 Python
python装饰器代码深入讲解
2021/03/01 Python
HTML5中使用postMessage实现Ajax跨域请求的方法
2016/04/19 HTML / CSS
Columbia美国官网:美国著名的户外服装品牌
2016/11/24 全球购物
python+selenium小米商城红米K40手机自动抢购的示例代码
2021/03/24 Python
生产内勤岗位职责
2013/12/07 职场文书
工程招投标邀请书
2014/01/26 职场文书
2015元旦晚会主持人开场白+结束语
2014/12/14 职场文书
小学生毕业评语
2014/12/26 职场文书
导游词开场白
2015/01/31 职场文书
土建技术员岗位职责
2015/04/11 职场文书
2015年暑期社会实践报告
2015/07/13 职场文书
土木工程生产实习心得体会
2016/01/22 职场文书
nginx 添加http_stub_status_module模块
2022/05/25 Servers