找回密码
 立即注册
查看: 420|回复: 0

[linux] Ubuntu 部署 Flask 应用程序

[复制链接]

279

主题

0

回帖

964

积分

超级版主

积分
964
发表于 2024-6-10 18:01:07 | 显示全部楼层 |阅读模式
本帖最后由 Shaw0xyz 于 2024-6-10 18:24 编辑

1. 介绍

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

1.1 环境准备

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

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

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

  1.     sudo apt update
  2.     sudo apt upgrade
  3.     sudo apt install python3 python3-pip python3-venv
复制代码

1.1.2 创建项目目录

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

  1.     mkdir myflaskapp
  2.     cd myflaskapp
复制代码


1.2 创建和配置Flask应用

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

  1.     python3 -m venv venv
  2.     source venv/bin/activate
  3.     pip install Flask
复制代码


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

  1.     from flask import Flask
  2.     app = Flask(__name__)

  3.     @app.route('/')
  4.     def hello_world():
  5.         return 'Hello, World!'
复制代码


1.3 测试Flask应用

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

  1.     export FLASK_APP=app.py
  2.     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。

  1.     pip install gunicorn
复制代码


1.4.2 使用Gunicorn启动Flask应用

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

  1.     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。

  1.     sudo apt install nginx
复制代码


1.5.2 配置Nginx

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

  1.     server {
  2.         listen 80;
  3.         server_name your_domain_or_IP;

  4.         location / {
  5.             proxy_pass <a href="http://127.0.0.1:8000;" target="_blank">http://127.0.0.1:8000;</a>
  6.             proxy_set_header Host $host;
  7.             proxy_set_header X-Real-IP $remote_addr;
  8.             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  9.             proxy_set_header X-Forwarded-Proto $scheme;
  10.         }
  11.     }
复制代码


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

  1.     sudo ln -s /etc/nginx/sites-available/myflaskapp /etc/nginx/sites-enabled
  2.     sudo nginx -t
复制代码


如果配置正确,重启Nginx。

  1.     sudo systemctl restart nginx
复制代码


1.6 配置系统服务

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

1.6.1 创建systemd服务文件

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

  1.     [Unit]
  2.     Description=Gunicorn instance to serve myflaskapp
  3.     After=network.target

  4.     [Service]
  5.     User=your_user
  6.     Group=www-data
  7.     WorkingDirectory=/path/to/myflaskapp
  8.     Environment="PATH=/path/to/myflaskapp/venv/bin"
  9.     ExecStart=/path/to/myflaskapp/venv/bin/gunicorn --workers 3 --bind unix:myflaskapp.sock -m 007 wsgi:app

  10.     [Install]
  11.     WantedBy=multi-user.target
复制代码


1.6.2 启动并启用服务

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

  1.     sudo systemctl start myflaskapp
  2.     sudo systemctl enable myflaskapp
复制代码

1.7 结论

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


/ 荔枝学姐de课后专栏 /

Hi!这里是荔枝学姐~

欢迎来到我的课后专栏

自然语言学渣 NLP摆烂姐

热衷于技术写作 IT边角料

AIGC & Coding & linux ...

~互撩~ TG: @Shaw_0xyz
荔枝学姐爱吃荔枝!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系站长|Archiver|手机版|小黑屋|主机论坛

GMT+8, 2025-4-5 02:31 , Processed in 0.059361 second(s), 24 queries .

Powered by 主机论坛 HostSsss.Com

HostSsss.Com

快速回复 返回顶部 返回列表