python部署-Flask+uwsgi+Nginx
一、Flask部分(app.py)
flask即Python代码:部分参考代码如下,相信很多人如果看到这篇文章一定有flask的代码能力。
from app import create_app
from singtec_Config import * app = create_app(DEV_MODEL) @app.route('/')
def hello_world():
return 'Hello World!!!' if __name__ == '__main__':
app.run(host='0.0.0.0',port=8000)
二、uwsgi部分(uwsgi.ini)
简单介绍一下uwsgi:在python web开发中,我们经常使用uwsgi配合nginx部署一个web框架,如Django或flask。同时我们又会说,框架和web服务器之间要符合WSGI协议。那就来厘清一下这几个概念。
1、web服务器和web框架
web服务器即用来接受客户端请求,建立连接,转发响应的程序。至于转发的内容是什么,交由web框架来处理,即处理这些业务逻辑。如查询数据库、生成实时信息等。Nginx就是一个web服务器,Django或flask就是web框架。
2、WSGI和uwsgi
WSGI是一种通信协议。WSGI 不是框架,也不是一个模块,而是介于 Web应用程序(Web框架)与 Web Server 之间交互的一种规范。
uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。
uwsgi是一种通信协议,不过跟WSGI分属两种东西,该协议下速度比较快。
[uwsgi]
# 如果使用nginx就用socket
socket=0.0.0.0:8000 # 如果不使用socket,直接用uwsgi启动程序,就是用http
#http=0.0.0.0:8000 # 如果程序中有文件下载,图片、视频等就需要就上这个配置
sgi-disable-file-wrapper=true # flask程序在你服务器上的目录
chdir=/opt/www/singtec/www/singtecProject # flask项目的启动文件
wsgi-file=manage.py
# 启动文件中的flask app(即第一部分中的app)
callable=app # 启动的进程数
processes=4 #启动的线程数
threads=2 # 是否启动多线程
enable-threads=True # 是否将uwsgi的运行线程设置为主线程,如果设置为主进程,在开启的其他的子进程会随着主进程关闭而关闭
master=True # 设置用来记录uwsgi进程号的文件
pidfile=uwsgi.pid # 设置uwsgi运行的日志文件(可以记录程序运行的)
daemonize=uwsgi.log #在每个worker而不是master中加载应用
lazy-apps=true # 设置编码(不是必须)
env LANG="en_US.UTF-8"
env LANGUAGE="en_US.UTF-8"
三、nginx部分
简单介绍一下nginx:Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。
常用功能:反向代理、正向代理、负载均衡、服务器的动静分离、高可用等,这里就不一一介绍了,主要介绍一下关于uwsgi的配置。
# 设置用户
user root;
# 设置worker及可以理解为进程或者线程数
worker_processes 4;
# 日志设置
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
# 每个worker的最大连接数
events {
worker_connections 1024;
} # http全局设置
http { # 设置mine.type类型
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 logs/access.log main; # 如果有上传文件,例如视频或者图片,限制文件传输大小的
client_max_body_size 100M;
# 服务器级别的设置
server { # 设置监听端口
listen 80;
# 设置访问的域名
server_name localhost;
# 请求级别的设置
# /便是监听什么参数都没有的根目录请求
location / {
# 设置请求的根目录
root /opt/www/singtec;
# 设置根目录的请求静态index.html
index index.html index.htm;
# 一下两行是设置请求的时候解析真实地址的
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 设置监听请求以api开头的接口
location /api{
# 设置导入uwsgi_params文件(通常在nginx安装的时候,默认和nginx.cong文件在同一个目录下)
include /usr/local/nginx/conf/uwsgi_params;
# 设置nginx的反向代理路由,只要请求api开头的都去访问0.0.0.0:8000程序,及我们的flask程序的接口,实现uwsgi的反向代理
uwsgi_pass 0.0.0.0:8000;
}
}
python部署-Flask+uwsgi+Nginx的更多相关文章
- python Linux flask uwsgi nginx 在centos7.3部署
0.直接上uwsgi和nginx安装命令 linux 安装uwsgi yum groupinstall "Development tools" yum install zlib-d ...
- 阿里云部署 Flask + uWSGI + Nginx
一.引言 今天入手了一台阿里云服务器,是centeros 7.5版本.本文解决的是 Flask 的部署问题.假设你的Flask的应用已经完成,现在只是部署的问题,本文以部署我的二次开发微信订阅号的项目 ...
- 写给新手看的Flask+uwsgi+Nginx+Ubuntu部署教程
学习 Flask,写完一个 Flask 应用需要部署的时候,就想着折腾自己的服务器.根据搜索的教程照做,对于原理一知半解,磕磕碰碰,只要运行起来了,谢天谢地然后不再折腾了,到下一次还需要部署时,这样的 ...
- Flask+uwsgi+Nginx+Ubuntu部署
学了一段时间flask,可是一直没有做过部署, 于是想着怎么部署呢, 想想,先吧服务给搞通吧,于是呢 就先想着去吧服务给搞起来,这里选择的是Flask+uwsgi+Nginx+Ubuntu, Pyth ...
- Flask+uwsgi+Nginx+Ubuntu部署教程
学习 Flask,写完一个 Flask 应用需要部署的时候,就想着折腾自己的服务器.根据搜索的教程照做,对于原理一知半解,磕磕碰碰,只要运行起来了,谢天谢地然后不再折腾了,到下一次还需要部署时,这样的 ...
- 阿里云部署 Flask + WSGI + Nginx 详解
抵不住朋友的诱惑,今天终于入手了一台阿里云服务器,是Ubuntu 1.4 32位版本,最初考虑是用来尝尝鲜只是买了个最低配的,价格算起来与在国外买个空间的价格相当吧(可能一年才贵100多),但用起来感 ...
- windows下apache + mod_wsgi + python部署flask接口服务
windows下apache + mod_wsgi + python部署flask接口服务 用python3安装虚拟环境 为啥要装虚拟环境? 原因1:安装虚拟环境是为了使项目的环境和全局环境隔离开,在 ...
- Python 部署 flask 用uwsgi和nginx
安装uwsgi nginx 具体方法请百度 1.在项目目录下建立.ini文件 xad_uwsgi.ini [uwsgi] master=true #项目目录 chdir=/root/zhaoyingj ...
- 使用Flask+uwsgi+Nginx部署Flask正式环境
环境准备 在开始正式讲解之前,我们将首先进行环境准备. Step1:安装Python,pip以及nginx: sudo apt-get update sudo apt-get install pyth ...
随机推荐
- 在Centos系统中基于PowerDNS和Poweradmin自建域名解析服务器替代DnsPod
本文讲述了我在Centos 7系统(其他版本的Centos未尝试)中基于PowerDNS和poweradmin自建域名解析服务器替代DnsPod的过程.通过本文所述方法,可以建立权威域名解析服务器的m ...
- asp.net core 3.x 微信小程序登录库(也可用于abp)
视频教程(使用+实现原理):https://share.weiyun.com/57HKopT 建议直接看视频 源码地址:https://github.com/bxjg1987/abpGeneralMo ...
- dfs 例题皇后问题
题目描述 一个如下的 6 \times 66×6 的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列 ...
- 补充《解析“60k”大佬的19道C#面试题(上)》
[广州.NET技术俱乐部]微信群的周杰写了一篇文章<解析“60k”大佬的19道C#面试题(上)>https://www.cnblogs.com/sdflysha/p/20200325-19 ...
- 洛谷 P3909 异或之积 题解
原题链接 本人看了其它解法,发现本人的解法还是 首创 ! 而且我的解法好像和 \(\times 6\) 没什么关系 -- (如果没 \(\times 6\),我没还不用算逆元) 别人的思路呢,大都是从 ...
- 李宏毅老师机器学习课程笔记_ML Lecture 0-1: Introduction of Machine Learning
引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...
- eclipse-JEE配置Tomcat并发布第一个项目
一.配置过程 Window--preferences--Server--Runtime Environment, 然后点击add 我下载的是Tomcat7.0,选择你的版本就行了 选择Tomcat的安 ...
- go:数据类型
Go语言中有丰富的数据类型,除了基本的整型.浮点型.布尔型.字符串外,还有数组.切片.结构体.函数.map.通道(channel)等.Go 语言的基本类型和其他语言大同小异. 1.基本数据类型 整型 ...
- 支持向量机(Support Vector Machine)
本博客是针对Andrew NG在Coursera上发布的Machine Learning课程SVM部分的学习笔记. 目录 前言 最优化目标(Optimization Objective) 最大化边界的 ...
- TensorFlow系列专题(七):一文综述RNN循环神经网络
欢迎大家关注我们的网站和系列教程:http://panchuang.net/ ,学习更多的机器学习.深度学习的知识! 目录: 前言 RNN知识结构 简单循环神经网络 RNN的基本结构 RNN的运算过程 ...