Gunicorn+Nginx部署Flask项目on Linux

1. 创建Flask项目文件夹

mkdir Flaskproject
cd Flaskproject

2. 配置Flask源码以及虚拟环境

示例app.py:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello_world():
    return "Hello World!"

if __name__ == '__main__':
    app.run(debug=True)
pip install virtualenv  # 如果已安装则跳过
python -m venv flaskenv  # 新建flask虚拟环境
source flaskenv/bin/activate  # 激活flask虚拟环境(退出虚拟环境:deactivate)
pip install -r requirements.txt  # 安装依赖库
# pip install -r requirements.txt --no-dependencies 包版本冲突时可忽略版本要求,解决冲突
# 生成依赖库文件用 pip freeze > requirements.txt

3. 安装gunicorn

pip install gunicorn

4. 启动gunicorn服务

nohup gunicorn -w 4 -b 0.0.0.0:5000 app:app &     #不带日志
nohup gunicorn -w 4 -b 0.0.0.0:5000 app:app > gunicorn.log 2>&1 &     #带日志

其中-w设置最大进程数,-b绑定IP和端口,第一个app为app.py的文件名,第二个app为Flask应用的实例名,根据自己的项目修改。
如需自定义gunicorn配置文件,可在对应路径下创建conf文件,配置好后在启动命令中加入-c gunicorn.conf即可。(gunicorn的配置教程可参考Gunicorn配置详解
此时登录http://x.x.x.x:5000就能访问你的Flask项目了。

如果想使用80端口进行访问,则可以通过Ngix将80端口指向你所指定的端口。

5. 安装Nginx

sudo apt-get install nginx

6.修改Nginx配置文件(/etc/nginx/nginx.conf)

 找到下面两行,把第二行注释掉。(保存文件可能需要sudo或root权限)

    include /etc/nginx/conf.d/*.conf;
    #include /etc/nginx/sites-enabled/*; 

 在http配置中加入server{}配置,注意要加在http{}里面。

http {
    ##############################
    server {
        listen 80;
        server_name localhost;  # 外界实际访问的地址

        location / {
            proxy_pass http://localhost:5000;  # 转发的本机端口地址
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    ##############################
}

 如果有ssl证书,并想http自动重定向到https,则使用以下配置:

http {
    ##############################
    server {
        listen 80;
        server_name localhost;  # 外界实际访问的地址
        return 301 https://$host$request_uri;  # http重定向https
    }

    server {
        listen 443 ssl;
        server_name localhost;
        ssl_certificate xxx.com.pem;   # 改为自己的ssl证书的目录
        ssl_certificate_key xxx.com.key;  # 改为自己的ssl证书秘钥的目录
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
        ssl_prefer_server_ciphers on;

        location / {
            proxy_pass http://localhost:5000;  # 转发的本机端口地址
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    ##############################
}

7. 测试Nginx配置是否正确

$ sudo nginx -tc /etc/nginx/nginx.conf
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

 8. 重启Nginx服务

sudo service nginx restart
# 或者 sudo nginx -s reload

此时登录http://x.x.x.x即可直接访问页面,无需指定端口号了。

大家感兴趣也可以看看我的Flask项目,写了几个有趣&有用的小工具。

DooDoo Labhttp://www.doodoo.site/

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
FastAPI是一个现代、快速(高性能)的Web框架,它使用最新的ASGI标准。Gunicorn是一个使用WSGI标准的应用服务器,它可以直接运行Flask和Django,但不能直接运行FastAPI。为了在部署FastAPI时使用Gunicorn,可以借助uvicorn工作器。可以使用以下命令来启动FastAPI应用程序: ``` gunicorn main:app --workers 2 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000 ``` 这个命令中,`main`是你的应用程序的入口文件名,`app`是FastAPI应用程序的实例名。`--workers 2`表示使用2个工作进程,`--worker-class uvicorn.workers.UvicornWorker`表示使用uvicorn工作器,`--bind 0.0.0.0:8000`表示绑定到0.0.0.0的8000端口。这样就可以使用Gunicorn和uvicorn工作器来部署FastAPI应用程序了。123 #### 引用[.reference_title] - *1* *2* [ubuntu+nginx+gunicorn+uvicorn+fastapi](https://blog.csdn.net/qq_41960127/article/details/128832617)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *3* [Docker生产环境部署FastAPI+supervisor+gunicorn+nginx](https://blog.csdn.net/weixin_45457042/article/details/129213133)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值