Shaw0xyz 发表于 2024-6-10 18:01:07

Ubuntu 部署 Flask 应用程序

本帖最后由 Shaw0xyz 于 2024-6-10 18:24 编辑

1. 介绍

Flask是一个轻量级的Web应用框架,适用于Python编程语言。其简单易用的特性使其成为开发和部署Web应用程序的理想选择。本文将详细介绍如何在Ubuntu系统上部署一个Flask应用程序。

1.1 环境准备

在开始部署Flask应用程序之前,需要确保系统已经安装了一些必要的软件和工具。

1.1.1 更新系统和安装必要软件

首先,更新系统包列表并安装必要的软件,包括Python、pip以及virtualenv。

    sudo apt update
    sudo apt upgrade
    sudo apt install python3 python3-pip python3-venv

1.1.2 创建项目目录

接下来,创建一个新的目录用于存放Flask应用程序,并进入该目录。

    mkdir myflaskapp
    cd myflaskapp

1.2 创建和配置Flask应用

在项目目录中,使用virtualenv创建一个虚拟环境,并激活它。然后,安装Flask。

    python3 -m venv venv
    source venv/bin/activate
    pip install Flask

接下来,创建一个简单的Flask应用程序。在项目目录中创建一个名为`app.py`的文件,并添加以下内容:

    from flask import Flask
    app = Flask(__name__)

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

1.3 测试Flask应用

在终端中运行以下命令,启动Flask开发服务器,测试应用是否正常运行。

    export FLASK_APP=app.py
    flask run

打开浏览器,访问http://127.0.0.1:5000/,如果看到"Hello, World!",说明Flask应用程序已经成功运行。

1.4 部署Flask应用

为了在生产环境中部署Flask应用程序,需要使用一个生产级的Web服务器。Gunicorn是一款流行的Python WSGI HTTP服务器,适合部署Flask应用。

1.4.1 安装Gunicorn

在虚拟环境中安装Gunicorn。

    pip install gunicorn

1.4.2 使用Gunicorn启动Flask应用

使用以下命令启动Flask应用。

    gunicorn --bind 0.0.0.0:8000 app:app

此时,Flask应用已经通过Gunicorn运行在http://0.0.0.0:8000/。

1.5 配置Nginx

为了进一步提升性能和安全性,可以在Gunicorn前面设置Nginx作为反向代理服务器。

1.5.1 安装Nginx

使用以下命令安装Nginx。

    sudo apt install nginx

1.5.2 配置Nginx

在`/etc/nginx/sites-available/`目录下创建一个新的配置文件,例如`myflaskapp`,并添加以下内容:

    server {
      listen 80;
      server_name your_domain_or_IP;

      location / {
            proxy_pass <a href="http://127.0.0.1:8000;" target="_blank">http://127.0.0.1:8000;</a>
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
      }
    }

创建一个符号链接到`sites-enabled`目录,并测试Nginx配置是否正确。

    sudo ln -s /etc/nginx/sites-available/myflaskapp /etc/nginx/sites-enabled
    sudo nginx -t

如果配置正确,重启Nginx。

    sudo systemctl restart nginx

1.6 配置系统服务

为了确保Flask应用在系统重启后自动启动,可以创建一个systemd服务。

1.6.1 创建systemd服务文件

在`/etc/systemd/system/`目录下创建一个服务文件,例如`myflaskapp.service`,并添加以下内容:

   
    Description=Gunicorn instance to serve myflaskapp
    After=network.target

   
    User=your_user
    Group=www-data
    WorkingDirectory=/path/to/myflaskapp
    Environment="PATH=/path/to/myflaskapp/venv/bin"
    ExecStart=/path/to/myflaskapp/venv/bin/gunicorn --workers 3 --bind unix:myflaskapp.sock -m 007 wsgi:app

   
    WantedBy=multi-user.target

1.6.2 启动并启用服务

使用以下命令启动并启用服务,使其在系统启动时自动运行。

    sudo systemctl start myflaskapp
    sudo systemctl enable myflaskapp

1.7 结论

本文详细介绍了在Ubuntu系统上部署Flask应用程序的步骤,包括环境准备、创建和配置Flask应用、使用Gunicorn和Nginx、以及配置systemd服务。通过这些步骤,可以确保Flask应用程序在生产环境中高效、安全地运行。


/ 荔枝学姐de课后专栏 /

Hi!这里是荔枝学姐~

欢迎来到我的课后专栏

自然语言学渣 NLP摆烂姐

热衷于技术写作 IT边角料

AIGC & Coding & Linux ...

~互撩~ TG: @Shaw_0xyz
页: [1]
查看完整版本: Ubuntu 部署 Flask 应用程序