一文弄懂nginx+uwsgi+flask在linux下的部署(保证靠谱)

使用nginx+uwsgi+flask部署服务器半年多了,很多东西都遗忘了,现在项目需要突然需要部署新的服务器,因此重新开始学习nginx+uwsgi+flask的部署方法。
发现网上大部分关于这个的教程或博客都没把话说清楚,甚至都没操作完就草草了事。甚至有的说先打开nginx,有的说先打开uwsgi……

因此,我打算写一个更加靠谱的。大家按照我的指引,可以非常轻松的完成nginx+uwsgi+flask在linux服务器上web项目的部署。

现在,假设我们已经写好了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服务重启,无法关闭

最后,如果还无法成功部署你的web应用,在下面留言!给我发邮件!1012950361@qq.com。有问必答。

前面吐槽了别的博客里面写的不完全的方法,其实也不是我故意要抹黑他们,大部分的博客虽然不完整但是还是给了我很多帮助的,因此我还是非常感谢他们的。但这也恰好提醒了我自己,在博客上写教程指引的时候,是否犯了同样不负责的错误。因此,假如我的所有博客让大家觉得有弄不懂、不负责的地方,敬请联系我,1012950361@qq.com我会虚心改正。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值