Python 进阶 - 在 Ubuntu 上部署 Flask 应用
随着云计算和容器化技术的普及,Linux 服务器已成为部署 Web 应用程序的主流平台之一。Python 作为一种简单易用的编程语言,适用于开发各种应用程序。本文将详细介绍如何在 Ubuntu 服务器上部署 Python 应用,包括环境准备、应用发布、配置反向代理(Nginx)、设置系统服务以及日志管理等步骤。
一、部署准备
在开始之前,请确保你具备以下条件:
一台运行 Ubuntu(如 Ubuntu 20.04 或 22.04)的服务器,具有 SSH 访问权限。
Python 应用程序的代码,确保在本地能够正常运行。
二、安装 Python 环境
1. 安装 Python 3
Ubuntu 20.04 和更高版本默认安装了 Python 3,但如果你的系统上没有安装,可以手动安装它:
python3
:安装 Python 3 解释器。python3-pip
:安装 Python 包管理工具。python3-venv
:安装虚拟环境支持。
2. 验证 Python 安装
安装完成后,可以通过以下命令验证 Python 和 pip 是否正确安装:
你应该看到类似下面的输出:
三、安装 MySQL(如需)
1. 安装 MySQL 服务器
2. 启动并设置 MySQL 开机自启
3. 验证 MySQL 安装
登录 MySQL 以确认安装成功。
MySQL 默认密码是 root,直接登录即可。
4. 修改初始密码
5. 创建库和表
这里我们用 SQL 语句把项目需要的数据库建好即可。
四、创建虚拟环境
为了避免全局安装 Python 包和依赖,可以使用 Python 的虚拟环境来管理项目的依赖。
1. 创建虚拟环境
在应用程序的目录中,运行以下命令创建虚拟环境:
这将创建一个名为 myenv
的虚拟环境。
2. 激活虚拟环境
在创建完虚拟环境后,需要激活它:
激活虚拟环境后,你会看到终端提示符前缀变为 (myenv)
,表示虚拟环境已激活。
五、发布 Python 应用
1. 上传项目文件
将应用程序文件上传到生产服务器,确保所有的源代码文件和 requirements.txt
文件都已上传。
2. 安装项目依赖
通过 requirements.txt
文件安装依赖。
3. 启动项目
进入到应用程序目录,并运行 Python 应用,确保它能够正常启动:
如果应用运行正常,会显示应用访问地址以及端口号。
六、配置 Nginx 作为反向代理(可选)
为了将外部请求转发到 Python 应用,通常使用 Nginx 作为反向代理。
1. 安装 Nginx
如果 Nginx 尚未安装,使用以下命令安装:
2. 配置 Nginx
打开 Nginx 配置文件并编辑反向代理设置:
在 server
块中,配置反向代理,将请求转发到 Python 应用所在的端口(假设 Python 应用运行在 8000 端口):
保存并退出编辑器。
3. 测试 Nginx 配置
执行以下命令测试 Nginx 配置是否正确:
如果配置正确,输出应该显示 syntax is okay
和 test is successful
。
4. 重新加载 Nginx
重新加载 Nginx 以应用配置:
七、设置系统服务(可选)
为了确保 Python 应用在系统重启后自动启动,你可以创建一个 systemd 服务文件。
1. 创建 systemd 服务文件
创建一个新的服务文件:
添加以下内容:
User
和Group
:设置为运行应用程序的用户和组。WorkingDirectory
:指向应用程序的目录。ExecStart
:指向 Python 虚拟环境中的 Python 解释器和应用程序入口。
2. 重新加载 systemd 配置并启动服务
3. 检查服务状态
确认应用程序是否在后台运行并监听正确的端口。
八、配置防火墙
如果你的服务器启用了防火墙(例如 UFW),确保允许 HTTP(80 端口)和你的应用程序使用的端口(例如 8000)通过防火墙:
九、测试部署
在部署完成后,访问你配置的服务器域名或 IP 地址,检查 Python 应用是否通过 Nginx 正常提供服务。
十、总结
通过本教程,我们成功地在 Ubuntu 上部署了一个 Python 应用,包括环境准备、依赖管理、配置反向代理、设置系统服务以及日志管理等步骤。这种部署方式非常适合生产环境,能够确保应用程序在系统重启后自动启动,并且能够通过 Nginx 处理高并发的外部请求。
评论