继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

一步步教你将Flask应用部署到生产环境

慕尼黑5688855
关注TA
已关注
手记 219
粉丝 8
获赞 16

照片由 Christina @ wocintechchat.comUnsplash 拍摄

Flask,一个用Python编写的轻量级Web框架,以其简单和灵活性著称。最初设计用于快速构建Web应用程序,由于其内置服务器,Flask在开发环境中常常被使用。然而,在生产环境中部署Flask应用程序需要仔细考虑并进行配置。在这篇文章中,我们将详细讨论如何将Flask应用程序部署到生产环境,确保其稳定、安全和可扩展。

理解Flask开发和上线

在开始讲如何在生产环境中使用 Flask 之前,让我们先了解其开发和部署服务器。Flask 自带一个用于测试和调试的开发服务器。虽然在开发过程中很方便,但由于它在处理并发请求上有限制,且不够健壮,这个服务器就不适合用在生产环境中了。

相比之下,实际部署通常涉及使用如 Gunicorn(也称 Green Unicorn)这样的 WSGI 服务器。Gunicorn 在提供 Flask 应用程序的生产服务方面表现出色,提供了可扩展性和高性能。

什么是将Flask生产化?

将 Flask 应用程序部署到生产环境的过程称为生产化 Flask。这包括多个方面,包括搭建合适的服务器环境、管理依赖、配置类似 Nginx 的网络服务器,并通过配置 systemd 服务等措施确保应用程序的稳定性和健壮性。

要将Flask生产化吗?为什么?

将 Flask 生产化至关重要:

  • 可扩展性:Flask 自带的服务器没有针对处理大量并发请求进行优化。使用如 Gunicorn 等服务器来部署 Flask 可以提升其扩展能力。
  • 安全性:生产环境中需要加强的安全措施,这可能无法由 Flask 的开发服务器充分提供。
  • 可靠性:生产准备就绪后,您的 Flask 应用会更加稳定可靠,从而减少停机时间和性能下降。
一个步骤-by-步骤操作指南

如果你用的是Windows系统,下载WSL来运行Linux命令会更方便。相关指南可以在参考资料中找到。

我们来看看如何通过提供的命令将Flask应用投入生产:

1. 创建一个非 root 用户

运行此命令以添加用户 nidhi: sudo adduser nidhi.

接下来,我们来安装 Python 和 Pip

确保你的 Python 和 Pip 已经安装好了。

运行以下命令来更新软件包列表并安装Python 3及其pip包管理器:

sudo apt update  
sudo apt install python3 python3-pip
3. 创建一个虚拟环境
    mkdir flask-gunicorn  # 创建一个名为flask-gunicorn的目录
    cd flask-gunicorn  # 进入flask-gunicorn目录
    python3 -m venv venv  # 创建一个名为venv的虚拟环境
    source venv/bin/activate  # 这是在Unix/Linux系统中的命令
4.安装软件包.
    pip install flask gunicorn
5. 设置好应用文件,并用 Gunicorn 运行

新建 app.pywsgi.pywsgi_configs.py 文件:

    # app.py  
    from flask import Flask  
    app = Flask(__name__)  
    @app.route('/')  
    def hello():  
        return 'Hello, World!'  

    # wsgi.py  
    from app import app as application  

    # wsgi_configs.py  
    # Gunicorn配置示例(可选)

运行 Gunicorn:

    gunicorn --config wsgi_configs.py wsgi:app

使用gunicorn启动应用,配置文件为wsgi_configs.py,应用名为app

    gunicorn -w 4 --bind 0.0.0.0:8080 wsgi:app
6. 停用虚拟环境
    停用
7. 创建一个Systemd单元文件

新建并编辑服务文件:

命令:`sudo vim /etc/systemd/system/app.service` (使用该命令编辑服务配置文件)

关于app.service的内容。

    [Unit]  
    Description=Gunicorn实例用于提供myproject.  
    After: network.target  
    [Service]  
    User=nidhi  
    Group=www-data  
    WorkingDirectory=/home/nidhi/flask-gunicorn/  
    Environment="PATH=/home/nidhi/flask-gunicorn/venv/bin"  
    ExecStart=/home/nidhi/flask-gunicorn/venv/bin/gunicorn --workers 3 --bind unix:app.sock 
  1. 启用并开始服务
mkdir /tmp/my_app # 创建 /tmp/my_app 文件夹
sudo systemctl enable app --now # 使用 sudo 启用并立即启动 app 服务
sudo systemctl status app.service # 使用 sudo 检查 app.service 的状态
9. 如何设置 Nginx

安装 Nginx(一个 web 服务器),

    sudo apt install nginx。可以使用这个命令`sudo apt install nginx`来安装nginx,之后你可以用`cd /etc/nginx`命令进入它的配置目录哦。
    cd /etc/nginx。
10. 更新 NGINX 设置。

修改默认配置文件:

使用 sudo 命令获取管理员权限并打开 vim 文本编辑器,编辑 sites-available 目录下的 default 文件。
    sudo vim sites-available/default

添加以下位置配置:

nginx
location {  
    将代理请求转发到本地的8080端口;  
}
11. 重启 Nginx
    sudo systemctl reload nginx

最后。

通过遵循这些步骤,您可以将 Flask 应用程序投入生产,确保其性能、可扩展性和可靠性最佳。从开发环境到生产环境不仅增强了应用程序的稳定性,也为未来的增长和扩展打下基础。

参考资料
  1. 设置Ubuntu 20.04服务器教程 https://www.codewithharry.com/blogpost/setup-ubuntu-20-04-server/#google_vignette
  2. 使用Gunicorn和Nginx部署Flask应用教程 https://www.codewithharry.com/blogpost/flask-app-deploy-using-gunicorn-nginx/#google_vignette
  3. Flask-Gunicorn-Nginx实验环境 https://www.golinuxcloud.com/flask-gunicorn-nginx/#Lab_Environment
  4. 视频教程链接 https://www.youtube.com/watch?v=HrAsmXy1-78
打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP