flask高并发部署

使用nginx+uwsgi+flask部署服务器

现在,假设我们已经写好了flask的脚本。我给他起名叫manager.py。
那么,我们要把自己的flask程序上传到服务器上,使用uwsgi+nginx部署,可供外网访问,我们该怎么做呢?别急,分为以下几个步骤:

1.将脚本上传至服务器

目录随意,自己能够找到即可,例如/home/test。需要注意千万不要放在/tmp中,否则过后你就会发现他们被当作垃圾清理掉了。

2.安装uwsgi

使用pip即可安装uwsgi,pip install uwsgi即可。如果报错缺少python.h,别急,先 yum install python-devel就可以,然后用pip安装一次。

3.安装Nginx

使用yum工具(在centos下,其他linux可以使用apt代替)。sudo yum intall -y nginx等待安装成功。

4.确认uwsgi与nginx都已经安装成功

开始进行后面的配置。

5.配置uwsgi

现在,进入刚刚上传了flask脚本的目录cd /home/test。新建一个文件,叫啥都行,例如test.ini。vi test.ini进入之后,写下下面的几行:

[uwsgi]
socket= 127.0.0.1:5000
wsgi-file=/home/test/manager.py
callable=app
touch-reload=/home/test/
master = true

这几个参数是什么意思呢?第一个是socket,也就是这个uwsgi程序绑定的套接字(注意,不是http,不是http)这个套接字适用于和nginx反向代理通信的,后面会讲到。
第二个参数是flask文件的路径。
第三个参数是flask对象的名字,(就是那个app=Flask(__name__))里面那个“app”,如果你的叫别的名字,那你就换成那个名字。
第四个参数填写的是一开始你上传到的文件夹的路径,不过不是一个重要的参数。
第五个参数照搬就可以。
保存。
6. 配置Nginx。

打开nginx服务器的配置文件nginx.conf。不会找的话,一般是在**/etc/nginx/nginx.conf**路径下。*如果不是的话,可以使用whereis nginx命令来找到nginx所在的所有目录,然后一个个看目录下是否有nginx.conf这个文件。*打开它,编辑。仅需修改server代码块重的location代码块。使之变成这样:

location / {
           include /etc/nginx/uwsgi_params;
           uwsgi_pass 127.0.0.1:5000;
        }

就可以了。其中,uwsgi_pass参数,后面跟的前面所提到的uwsgi程序的套接字,他们就是通过这个套接字进行通讯的。而大家可以看到在conf文件中的server代码块里面有一个listen 80;这个就是让nginx来监听80端口,并将请求通过127.0.0.1:5000传递给后端的uwsgi,再通过这个端口将后端返回的数据转发给请求(看不懂没关系)
7. 运行nginx服务器。

运行方法:nginx -c /etc/nginx/nginx.conf运行成功后用浏览器打开服务器的ip,会显示400bad request。那是因为nginx服务器已经成功开启,但是由于后端的uwsgi没有开启,因此无法将请求转发到后端的uwsgi程序。因此下面我们开启uwsgi

8. 运行uwsgi程序

运行方法:首先切换到test.ini所在的目录(也就是上传文件的目录)。之后,uwsgi --ini test.ini就可以了。可以看到英文显示成功绑定到127.0.0.1:5000,服务成功开启等字样。在浏览器输入服务器的ip地址,不出意外的话,就可以访问到你写的flask程序了。搞定~(tips:由于直接uwsgi --ini -tesst.ini这样会把信息打印到标准输出,建议用nohup运行)

最后,另外提一提如何关闭服务器以及服务。
关闭nginx:nginx -s stop
关闭uwsgi killall -s INT /path/to/uwsgi (uwsgi的path可以通过whereis查找,若直接kill会导致uwsgi服务重启,无法关闭

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值