将一个flask应用部署到uwsgi+nginx环境上,用的云服务器

本文介绍了如何在已有nginx的云服务器上,通过pip安装uwsgi,然后配置nginx和uwsgi的交互,以及uwsgi与Flask应用的交互。nginx配置监听80端口并将请求转发至uwsgi的3389端口,uwsgi配置文件指定Flask应用的入口。启动命令分别为nginx和uwsgi。注意uwsgi.ini配置文件中,`chdir`、`wsgi-file`、`callable`等选项的正确设置。若要加载多个Flask应用,可考虑使用module选项或在Flask项目内引入uwsgi模块。
摘要由CSDN通过智能技术生成

服务器上安装uwsgi和nginx,由于我的服务器上本来就有nginx,只是用pip装了uwsgi,所以就不多说了,而且过程也很简单的。

主要说一下配置文件:

说在前面:nginx监听的是80端口,uwsgi监听的是本地的socket3389端口,flask项目就是运行在3389端口的,下面会有两个配置文件,一个是nginx和uwsgi的交互配置,一个是uwsgi和flask的交互配置。

首先是nginx的配置,监听80端口,然后转发给uwsgi处理,我这里location是可以设置过滤条件的,下面这个配置比较简单,全部通过uwsgi监听的3389端口转发给uwsgi,所以后面就是uwsgi来处理了。

nginx.conf:

user  root;
worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    server {
        listen      80;
        server_name  ip+port;#域名也是可以的
        charset utf-8;

    location / {
        uwsgi_pass 127.0.0.1:3389;
        include uwsgi_params;
        uwsgi_param UWSGI_CHDIR /your_path/your_project;
        uwsgi_param UWSGI_SCRIPT run:app;
    }

    error_page  404              /404.html;

    error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

}

uwsgi配置文件

chdir指定的是项目的根路径,wsgi-file直接给出uwsgi加载的文件,指定加载flask的app

callable=app 这个选项一定不要掉

uwsgi.ini:

[uwsgi]
socket=:3389
chdir=/root/python-project/wechat/
wsgi-file=manage/flask_run.py
callable=app
processes=4
threads=2
master=True

然后就是flask框架的入口启动文件,下面给一个最简单的flask应用:

app的名字和callable=app是对应的

from flask import Flask

app = Flask(__name__)

@app.route("/test/")
def hei():
    return 'hello man!'

重点完成。

 

linux服务器运行指令:

服务器启动nginx:

我这个是nginx软链接启动,启动方法很多

/usr/local/nginx/sbin/nginx -t  #验证nginx配置文件:
/usr/local/nginx/sbin/nginx -s reload  #重启nginx:

服务器启动uwsgi:

服务器配置文件目录下,同样是设置了软链接后的启动命令

uwsgi uwsgi_wx.ini

这种配置文件最关键的不是路径就是名字,很烦,所以一定要仔细,一一对应上。

 

以上就ok了,但是一个uwsgi.ini只能通过一个文件(flask_run.py)加载一个flask应用,题主本来想多通过wsgi-file选项指定多个文件,从而达到加载多个文件的,但是失败了。

查阅官方文档说可以加载一个模块,需要module选项。还有一个种方法就是在flask项目里面引入uwsgi模块(uwsgi是支持python的),用应用字典来加载多个应用,这种就不需要在配置中设置应用,考虑到小项目耦合问题,没采用,如图:

现在python玩的也是花。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值