BUG-Fly BUG-Fly
  • 首页
  • BUG-EXP
  • 编程开发
  • 电脑评测
  • 生活分享
  • 友情链接
  • Fly全站协议声明
首页 › Python › Flask入门进阶与实战 › Flask 项目部署教程——宝塔部署

Flask 项目部署教程——宝塔部署

BUG-Fly
4 年前⦁置顶

在我们开发好项目,测试完成后,要部署上线。许多用户可能在用宝塔面板作为服务器运维工具,那么在宝塔上该如何部署Flask项目呢?

一、项目准备

进入你项目的根目录,使用 pip freeze >requirements.txt 导出项目依赖,并对项目进行打包,上传至你的服务器目录。

二、宝塔环境准备

在宝塔应用商店中搜索 Python项目管理器 并安装:

Flask 项目部署教程——宝塔部署-BUG-Fly

三、线上部署

安装完毕后点击设置:

Flask 项目部署教程——宝塔部署-BUG-Fly

在设置界面,点击版本管理,安装项目所需要的Python版本:

Flask 项目部署教程——宝塔部署-BUG-Fly

点击项目管理——>添加项目:

Flask 项目部署教程——宝塔部署-BUG-Fly

如图所示:

Flask 项目部署教程——宝塔部署-BUG-Fly

注:至于启动方式,会在后边的文章中进行详解。

点击确定直到添加完毕,初始部署完毕。

四、域名映射

我们需要为我们的项目添加一个域名,服务于我们的Flask项目,在宝塔中添加网站:

Flask 项目部署教程——宝塔部署-BUG-Fly

注意:在PHP版本中选择纯静态

回到项目列表,在相应项目中点击映射,输入我们刚才添加的域名即可!

五、Nginx反向代理

Gunicorn这类WSGI服务服务器内置了web服务器,所以我们不需要web服务器也能与客户端进行交互,处理请求与响应。但是内置的web服务器依然不够强健,因此我们需要为我们的项目穿上一件棉袄,让它能够抵御更烈的严寒。而流行的开源web服务器Nginx就是不二之选。

Flask 项目部署教程——宝塔部署-BUG-Fly
设置反向代理

在这种模式下,Nginx作为代理服务器,监听来自外部80端口的请求;而Gunicorn负责监听本地8000端口的请求(Gunicorn默认端口8000)。Nginx会把来自外部的请求转发给Gunicorn处理,接收到响应后再转发给客户端。这样做的好处有:

  • 提高静态文件的处理效率。Nginx处理静态文件的速度非常快,而且可以对静态文件设置缓存。
  • 提高安全系数。避免WSGI服务器直接暴露出来,且可以作为防火墙来抵御攻击。
  • 提高程序处理能力。设置反向代理可以缓冲请求,对请求进行预处理,交给WSGI一个完整的HTTP请求,还可以设置负载均衡,优化效率。

Nginx配置:

server
{
    listen 80;
    server_name api.3xittec.cn;# 映射域名写在这里
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/api.3xittec.cn;
    
   
    access_log  /www/wwwlogs/api.3xittec.cn.log;
server
{
    listen 80;
    server_name api.3xittec.cn;# 映射域名写在这里
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/api.3xittec.cn;

    location /static {
    alias ;#静态文件地址
    expires 30d;缓存过期时间
    error_log off;
    }
    
    location / {
    proxy_pass http://localhost:8000;#转发的地址,即Gunicorn运行的地址
    proxy_redirect   off;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    client_max_body_size 5M;
    }
   
    access_log  /www/wwwlogs/api.3xittec.cn.log;
    error_log  /www/wwwlogs/api.3xittec.cn.error.log;
}

更新完配置后,重启Nginx即可生效。

六、Supervisor护花使者

在前边我们已经用Gunicorn来运行项目,但这并不靠谱。我们需要一个工具来自动在后台运行它,同时监控它的运行状况,并在系统出错或重启时自动重启程序。那么Supervisor这个护花使者,充当这个角色,来呵护我们的项目。最终部署架构图:

Flask 项目部署教程——宝塔部署-BUG-Fly
最终部署架构图

那么这个护花使者该在哪安装呢,还是在宝塔应用商店搜索Python即可安装。成功后即可点击设置>添加进程:

Flask 项目部署教程——宝塔部署-BUG-Fly

配置项解释:

  • 名称:用户自己定义的名称,做到顾名思义。
  • 启动用户:设置启动该程序的用户,默认为root即可。
  • 运行目录:当前项目的根目录。
  • 启动命令:项目虚拟环境bin文件夹下的gunicorn文件+-w 4 wsgi:app

最后点击确定即可!至此宝塔面板部署教程结束!

FlaskPythonPython实战项目
48
5
BUG-Fly
写BUG飞起的Coder

评论 (5)

请登录以参与评论
现在登录
  • 三六九

    本人菜鸟想问下,我的 flask 项目 中没有使用 处理并发的相关代码,部署到 宝塔后使用 gunicorn 启动,能提高 并发吗?

    4 年前 回复
    • 飞跃|Fly

      @三六九 可以的,但是实际到Flask的时候也是排队处理的

      4 年前 回复
  • 三六九

    那如果 启动 flask 时在app.run中 设置 thread=True 代码需要改动吗?是不是直接可以就提高并发了呢?

    4 年前 回复
  • ~patience

    宝塔这么方便? 收费不

    3 年前 回复
  • BUG-Fly

    测试

    1 年前 回复

猜你喜欢

  • 如何优雅地在 Chrome Headless 模式下触发网站的 favicon 请求
  • Python 函数
  • Python内置数据结构——列表(list)
  • Python基础语法

词云

2020 (1) Flask (1) Go (1) JS逆向 (1) Linux (1) Playwright (1) PySide2开发 (1) Python (13) Python实战项目 (5) 固原一中 (1) 国庆70周年 (1) 开源 (1) 数据结构和算法 (2) 数组 (1) 新年贺词 (1) 新月诗刊社 (3) 电脑评测 (3) 软件教程 (3) 雨雯公益 (1) 音乐 (3)

BUG-Fly

写BUG飞起的Coder
34
文章
5
评论
324
获赞
  • 首页
  • 友情链接
Copyright © 2019-08-20-2025 BUG-Fly. Designed by BUG-Fly.

Fly小站已经运行:

津ICP备19007312号
技术基佬基地: KRUNK ZHOU Legna 科技
  • Python13
  • Python实战项目5
  • 新月诗刊社3
  • 音乐3
  • 电脑评测3
  • 首页
  • BUG-EXP
  • 编程开发
  • 电脑评测
  • 生活分享
  • 友情链接
  • Fly全站协议声明