在Ubuntu上部署Flask应用的流程步骤

 更新时间:2025年01月10日 10:45:22   作者:Damon小智  
随着云计算和容器化技术的普及,Linux 服务器已成为部署 Web 应用程序的主流平台之一,Python 作为一种简单易用的编程语言,适用于开发各种应用程序,本文将详细介绍如何在 Ubuntu 服务器上部署 Python 应用,需要的朋友可以参考下

一、部署准备

在开始之前,请确保你具备以下条件:

  • 一台运行 Ubuntu(如 Ubuntu 20.04 或 22.04)的服务器,具有 SSH 访问权限。
  • Python 应用程序的代码,确保在本地能够正常运行。

二、安装 Python 环境

1. 安装 Python 3

Ubuntu 20.04 和更高版本默认安装了 Python 3,但如果你的系统上没有安装,可以手动安装它:

sudo apt update
sudo apt install python3 python3-pip python3-venv -y
  • python3:安装 Python 3 解释器。
  • python3-pip:安装 Python 包管理工具。
  • python3-venv:安装虚拟环境支持。

2. 验证 Python 安装

安装完成后,可以通过以下命令验证 Python 和 pip 是否正确安装:

python3 --version
pip3 --version

你应该看到类似下面的输出:

Python 3.8.10
pip 21.1.2

三、安装 MySQL(如需)

1. 安装MySQL服务器

sudo apt install mysql-server -y

2. 启动并设置MySQL开机自启

sudo systemctl start mysql
sudo systemctl enable mysql

3. 验证MySQL安装

登录MySQL以确认安装成功。

sudo mysql -u root -p

MySQL默认密码是root,直接登录即可。

4. 修改初始密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';

5. 创建库和表

这里我们用SQL语句把项目需要的数据库建好即可。

四、创建虚拟环境

为了避免全局安装 Python 包和依赖,可以使用 Python 的虚拟环境来管理项目的依赖。

1. 创建虚拟环境

在应用程序的目录中,运行以下命令创建虚拟环境:

python3 -m venv myenv

这将创建一个名为 myenv 的虚拟环境。

2. 激活虚拟环境

在创建完虚拟环境后,需要激活它:

source myenv/bin/activate

激活虚拟环境后,你会看到终端提示符前缀变为 (myenv),表示虚拟环境已激活。

五、发布 Python 应用

1. 上传项目文件

将应用程序文件上传到生产服务器,确保所有的源代码文件和 requirements.txt 文件都已上传。

2. 安装项目依赖

通过 requirements.txt 文件安装依赖。

pip install -r requirements.txt

3. 启动项目

进入到应用程序目录,并运行 Python 应用,确保它能够正常启动:

python3 app.py

如果应用运行正常,会显示应用访问地址以及端口号。

六、配置 Nginx 作为反向代理(可选)

为了将外部请求转发到 Python 应用,通常使用 Nginx 作为反向代理。

1. 安装 Nginx

如果 Nginx 尚未安装,使用以下命令安装:

sudo apt update
sudo apt install nginx -y

2. 配置 Nginx

打开 Nginx 配置文件并编辑反向代理设置:

sudo nano /etc/nginx/sites-available/default

在 server 块中,配置反向代理,将请求转发到 Python 应用所在的端口(假设 Python 应用运行在 8000 端口):

server {
    listen 80;
    server_name your_domain_or_ip;

    location / {
        proxy_pass http://127.0.0.1:8000;  # 将请求转发到 Python 应用
        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;
    }
}

保存并退出编辑器。

3. 测试 Nginx 配置

执行以下命令测试 Nginx 配置是否正确:

sudo nginx -t

如果配置正确,输出应该显示 syntax is okay 和 test is successful

4. 重新加载 Nginx

重新加载 Nginx 以应用配置:

sudo systemctl reload nginx

七、设置系统服务(可选)

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

1. 创建 systemd 服务文件

创建一个新的服务文件:

sudo nano /etc/systemd/system/python-app.service

添加以下内容:

[Unit]
Description=Python Application
After=network.target

[Service]
User=your_user
Group=your_group
WorkingDirectory=/path/to/your/app
ExecStart=/path/to/your/app/myenv/bin/python3 /path/to/your/app/app.py
Restart=always

[Install]
WantedBy=multi-user.target
  • User 和 Group:设置为运行应用程序的用户和组。
  • WorkingDirectory:指向应用程序的目录。
  • ExecStart:指向 Python 虚拟环境中的 Python 解释器和应用程序入口。

2. 重新加载 systemd 配置并启动服务

sudo systemctl daemon-reload
sudo systemctl start python-app.service
sudo systemctl enable python-app.service

3. 检查服务状态

sudo systemctl status python-app.service

确认应用程序是否在后台运行并监听正确的端口。

八、配置防火墙

如果你的服务器启用了防火墙(例如 UFW),确保允许 HTTP(80 端口)和你的应用程序使用的端口(例如 8000)通过防火墙:

sudo ufw allow 80
sudo ufw allow 8000

九、测试部署

在部署完成后,访问你配置的服务器域名或 IP 地址,检查 Python 应用是否通过 Nginx 正常提供服务。

十、总结

通过本教程,我们成功地在 Ubuntu 上部署了一个 Python 应用,包括环境准备、依赖管理、配置反向代理、设置系统服务以及日志管理等步骤。这种部署方式非常适合生产环境,能够确保应用程序在系统重启后自动启动,并且能够通过 Nginx 处理高并发的外部请求。

以上就是在Ubuntu上部署Flask应用的流程步骤的详细内容,更多关于Ubuntu部署Flask应用的资料请关注脚本之家其它相关文章!

相关文章

  • python list列表删除指定元素的四种实现方式

    python list列表删除指定元素的四种实现方式

    文章介绍了在Python中删除列表元素的四种方法:使用remove()删除第一次出现的指定值,使用pop()根据索引删除元素,使用列表推导式删除满足特定条件的所有元素,以及使用del语句根据索引删除元素或整个列表,每种方法都有其特定的使用场景和可能引发的错误
    2025-10-10
  • 使用pytorch进行图像分类的详细步骤

    使用pytorch进行图像分类的详细步骤

    使用PyTorch进行图像分类是深度学习中的一个常见任务,涉及一系列步骤,从数据预处理到模型训练和评估,下面将详细描述每个步骤,从零开始构建一个图像分类器,需要的朋友可以参考下
    2024-09-09
  • 浅谈python为什么不需要三目运算符和switch

    浅谈python为什么不需要三目运算符和switch

    下面小编就为大家带来一篇浅谈python为什么不需要三目运算符和switch。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • python类名和类方法cls修改类变量的值

    python类名和类方法cls修改类变量的值

    这篇文章主要介绍了python类名和类方法cls修改类变量的值,通过类对象是无法修改类变量的值的,本质其实是给类对象新添加 name 和 age 变量,下文更多的相关介绍需要的小伙伴可任意参考一下
    2022-04-04
  • Python编程之顺序执行与程序的主入口详解

    Python编程之顺序执行与程序的主入口详解

    程序从程序入口进入,到程序执行结束,大体是按照顺序结构执行语句、函数或代码块,掌握程序的结构,有利于把握程序的主体框架,下面这篇文章主要给大家介绍了关于Python编程之顺序执行与程序的主入口的相关资料,需要的朋友可以参考下
    2022-12-12
  • django轻松使用富文本编辑器CKEditor的方法

    django轻松使用富文本编辑器CKEditor的方法

    最近由于需要在django admin中使用到富文本编辑器,由于我比较喜欢CKEditor富文本编辑器,于是就有了这篇文章,下面这篇文章主要给大家介绍了在django中轻松使用富文本编辑器CKEditor的方法,需要的朋友可以参考下。
    2017-03-03
  • 使用Python如何将视频按照一定时间切割(比如:每10s进行裁切)

    使用Python如何将视频按照一定时间切割(比如:每10s进行裁切)

    这篇文章主要介绍了使用Python将视频按照一定时间切割(比如:每10s进行裁切),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • Pandas数据结构DataFrame使用方式

    Pandas数据结构DataFrame使用方式

    本文系统介绍了Pandas DataFrame的核心功能,涵盖创建方式、基本操作(查看、选择、过滤、修改)、统计分析、缺失值处理、合并分割等,并对比了其与原生数据结构的优劣势,强调其在结构化数据处理、高效计算和多格式交互中的优势
    2025-10-10
  • python实现单张图像拼接与批量图片拼接

    python实现单张图像拼接与批量图片拼接

    这篇文章主要为大家详细介绍了python实现单张图像拼接与批量图片拼接,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • 基于Python实现通过微信搜索功能查看谁把你删除了

    基于Python实现通过微信搜索功能查看谁把你删除了

    这篇文章主要介绍了基于Python实现微信搜索查看谁把你删除了的相关资料,需要的朋友可以参考下
    2016-01-01

最新评论