nginx+uwsgi+flask 配置

1.为什么要Nginx ?

Nginx是一个Http和反向代理服务器
什么是反向代理服务器呢?

正向的就是由浏览器主动的想代理服务器发出请求,经代理服务器做出处理后再转给目标服务器
反向的就是不管浏览器同不同意,请求都会经过代理服务器处理再发给目标服务器
这其中的区别就是必须经过Nginx反向代理服务器,这就有了使用Nginx的几个好处:

安全:不管什么请求都要经过代理服务器,这样就避免了外部程序直接攻击web服务器
负载均衡:根据请求情况和服务器负载情况,将请求分配给不同的web服务器,保证服务器性能
提高web服务器的IO性能:这个我也没看懂,总结来说就是请求从客户端传到web服务器是需要时间的,传递多长时间就会让这个进程阻塞多长时间,而通过反向代理,就可以在反向代理这完整接受请求,然后再传给web服务器,从而保证服务器性能,而且有的一些简单的事情(比如静态文件)可以直接由反向代理处理,不经过web服务器

2.nginx和uwsgi的关系

nginx相当于是服务器,负责接收请求

uwsgi是服务器和服务端应用程序的通信协议,规定了怎么把请求转发给应用程序和返回

2个基本概念:
服务器(接收请求),应用程序(处理请求并返回)

通信过程:
客户端发送一个http请求,被nginx服务器接收,nginx服务器将请求转发给uwsgi,uwsgi将请求转发给实现uwsgi协议的应用程序(flask,gunicorn等等)

3.flask

这里写图片描述

4.uwsgi 配置

[uwsgi]
chdir=/home/long/features_api   # 我们项目的根目录,即 run.py 所在文件夹
home=/home/long/python-env/api
http=:9090
wsgi-file=server.py 
master=true
processes=4
threads=2
stats=127.0.0.1:9191
callable=app
master=true
socket=%(chdir)/api.sock
chmod-socket=666
logfile-chmod=644
daemonize=%(chdir)/uwsgi.log  # 指明了 uwsgi 日志目录,uwsgi 会将请求历史写入该文件。

processes = 4 说明要启动4个子进程处理请求;
socket = /path/to/sock/myproject.sock 是 uwsgi 启动后所需要创建的文件,这个文件用来和 Nginx 通信,后面会在配置 Nginx 时用到,所以 chmod-socket = 660 是为了修改 .sock 文件权限来和 Nginx 通信;

5.nginx 配置

vi /etc/nginx/nginx.conf
在http 里添加如下内容(注意不可用TAB键,否则会报错 此为20190926更新

server {
listen 80;
server_name 0.0.0.0;
location / {
include uwsgi_params;
uwsgi_pass unix:/root/test/gupiao/api.sock;
uwsgi_param UWSGI_CHDIR  /root/test/gupiao;
uwsgi_param UWSGI_SCRIPT manage:run; 
}
}

下面为之前的版本
只个修改红色方框中的即可。
这里写图片描述

可用 nginx -t 查看配置文件是否有错。
6.运行

在启动nginx时,如果发现报错"98:Address already in use",不要着急,很有可能是因为你的nginx已经启动了。

通过 netstat -ntlp 查看端口占用情况,看看是不是你的nginx占用的80端口。如果发现有其他程序占用了nginx的默认的80端口,可以杀掉这些进程,再启动nginx。

到此,我们终于完成了所有的工作,马上就可以访问自己的项目了。

现在,检查一下nginx的配置文件是否应用 nginx -t 没有成功应用的话,检查一下配置文件。

键入 nginx 来启动nginx
键入uwsgi uwsgiconfig.ini 启动uwsgi
这时uwsgi会告诉你你的项目是否有错误,如果本地运行良好,一般是没有错误的。

有可能会报的错是项目相关模块的引入路径不对,修改一下便可。没有报错的话,打开浏览器,输入你的服务器IP地址,或者如果你有相应的域名,并解析到了你的IP,输入域名也可以。

如果一切顺利的话,显示的就是你想要的页面了,如果不是,首先查看一下日志文件,他们在你的项目根目录下logs文件夹里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值