用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赋值操作方法分享
Mar 23 Python
Python结巴中文分词工具使用过程中遇到的问题及解决方法
Apr 15 Python
Python实现自动登录百度空间的方法
Jun 10 Python
python实现决策树
Dec 21 Python
Python中的默认参数实例分析
Jan 29 Python
Python中循环引用(import)失败的解决方法
Apr 22 Python
pandas读取CSV文件时查看修改各列的数据类型格式
Jul 07 Python
在Python中使用MongoEngine操作数据库教程实例
Dec 03 Python
python实现学生管理系统开发
Jul 24 Python
Django实现文章详情页面跳转代码实例
Sep 16 Python
利用pipenv和pyenv管理多个相互独立的Python虚拟开发环境
Nov 01 Python
jupyter 添加不同内核的操作
Feb 06 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
全国FM电台频率大全 - 4 山西省
2020/03/11 无线电
fleaphp下不确定的多条件查询的巧妙解决方法
2008/09/11 PHP
ThinkPHP 表单自动验证运用示例
2014/10/13 PHP
PHP的运行机制与原理(底层)
2015/11/16 PHP
twig模板常用语句实例小结
2016/02/04 PHP
WordPress过滤垃圾评论的几种主要方法小结
2016/07/11 PHP
php+ajax实现商品对比功能示例
2019/04/13 PHP
php+ajax实现文件切割上传功能示例
2020/03/03 PHP
javascript js cookie的存储,获取和删除
2007/12/29 Javascript
js jquery做的图片连续滚动代码
2008/01/06 Javascript
jquery Firefox3.5中操作select的问题
2009/07/10 Javascript
JavaScript 对象模型 执行模型
2010/10/15 Javascript
jQuery EasyUI API 中文文档 - TimeSpinner时间微调器
2011/10/23 Javascript
JQuery zClip插件实现复制页面内容到剪贴板
2015/11/02 Javascript
Javascript实现苹果悬浮虚拟按钮
2016/04/10 Javascript
AngularJS入门教程之REST和定制服务详解
2016/08/19 Javascript
详解vue-router基本使用
2017/04/18 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
2017/08/14 Javascript
JS中Promise函数then的奥秘探究
2018/07/30 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
利用Bootstrap Multiselect实现下拉框多选功能
2019/04/08 Javascript
element-ui tree结构实现增删改自定义功能代码
2020/08/31 Javascript
python smtplib模块自动收发邮件功能(二)
2018/05/22 Python
Python实现计算文件MD5和SHA1的方法示例
2019/06/11 Python
基于Python正确读取资源文件
2020/09/14 Python
十八大感想感言
2014/02/10 职场文书
2014年清明节网上祭英烈寄语
2014/04/09 职场文书
《沙漠中的绿洲》教学反思
2014/04/24 职场文书
党的群众教育实践活动实施方案
2014/06/12 职场文书
2014年司机工作总结
2014/11/21 职场文书
干部个人考察材料
2014/12/24 职场文书
2016母亲节感恩话语
2015/12/09 职场文书
2019年农民幸福观调查的实践感悟
2019/12/19 职场文书
Python机器学习算法之决策树算法的实现与优缺点
2021/05/13 Python
mysql使用FIND_IN_SET和group_concat两个方法查询上下级机构
2022/04/20 MySQL
详解Android中的TimePickerView(时间选择器)的用法
2022/04/30 Java/Android