使用 uWSGI+ nginx 部署 Flask web 应用
时间:2020-03-27
本文章向大家介绍使用 uWSGI+ nginx 部署 Flask web 应用,主要包括使用 uWSGI+ nginx 部署 Flask web 应用使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.flask安装
pip install flask
使用flask开发完成后,需要部署到生产环境,这时候就需要用到 nginx+uwsgi了
2.uwsgi安装
pip install uwsgi
3. 在项目根目录添加uwsgi.ini文件 uwsgi.ini配置文件编辑
[uwsgi] #http = 0.0.0.0:8083 //仅用uwsgi启动时配置 socket = 127.0.0.1:5000 //监听nginx转发 wsgi-file=/data/app/bak_handle/approval_flow/flaskr/app.py //项目目录下应用文件 callable=app //程序内启用的application变量名,可以是其他名称,根据app名称设置 processes=4 //进程数 threads=2 //每个进程下的线程数
- 配置好后,输入指令uwsgi uwsgi.ini启动
- 这里没配日志路径,是因为随后在supervisor中启动,可以查看supervisor的日志
- 可以配置到supervisor中守护运行,具体方式可以参照之前配置Django+gunicorn+supervisor的博客
- 如看看大 [uWSGI] getting INI configuration from hello_uwsgi.ini, 则正常
4.nginx配置文件修改
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /data/logs/nginx/access_flow.log;
server { listen 8083; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:5000; uwsgi_param UWSGI_CHDIR /data/app/bak_handle/approval_flow/flaskr; #项目根目录 uwsgi_param UWSGI_SCRIPT run:app; #启动程序的主程序 #root html; #index index.html index.htm; }
上述代码中为nginx的nginx.conf中的一段配置
检查nginx配置文件语法:sudo /usr/local/nginx/sbin/nginx -t
重新载入nginx: sudo /usr/local/nginx/sbin/nginx -s reload
5.启动uwsgi,启动nginx
这时候访问,输入:IP:8083
就可以访问了
原文地址:https://www.cnblogs.com/weisunblog/p/12583701.html
- 厚土Go学习笔记 | 23. map字典的使用
- JDK动态代理的底层实现原理
- 冷场了吗?我带着phpcms9.6.2 注入来救场了
- 厚土Go学习笔记 | 22. 实现Pic
- ie8和chrome获取上传图片的宽度和高度等尺寸
- 厚土Go学习笔记 | 21. range用法
- Golang Stub初体验
- 厚土Go学习笔记 | 20. slice 继续
- 数据挖掘算法之深入朴素贝叶斯分类
- 歪?我想要一个XXE。
- 厚土Go学习笔记 | 19. slice和数组很像,但是slice可以添加元素
- 工具| 手把手教你制作信息收集器之网站备案号
- 厚土Go学习笔记 | 18. 数组
- 厚土Go学习笔记 | 17. 结构体及用指针访问结构体
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【阿里】在 nginx 中如何配置负载均衡
- 并发编程系列之JDK JUC实现内存缓存(支持并发)
- 10.1【前端开发】背景属性:样式中背景色和背景图片样式如何使用?
- 元素滚动 scroll 系列
- Java基础系列之fastjson parse多级json数据
- Linux系列之下载安装jdk-8u261-linux-i586.tar.gz
- 常见网页特效案例
- MySQL系列之体系结构原理学习笔记
- 触屏事件
- 10.2【前端开发】图片文件格式:常见的图片格式对比有何优劣以及如何使用Google的webp格式?
- uni-app 与 Vue H5 项目通讯
- Gridview][UpdateCommand的写法要点]
- MySQL系列之事务日志Undo log学习笔记
- click 延时解决方案
- Splash抓取javaScript动态渲染页面