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,但如果你的系统上没有安装,可以手动安装它:

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 处理高并发的外部请求。

作为程序员,持续学习和充电非常重要,作为开发者,我们需要保持好奇心和学习热情,不断探索新的技术,只有这样,我们才能在这个快速发展的时代中立于不败之地。低代码也是一个值得我们深入探索的领域,让我们拭目以待,它将给前端世界带来怎样的变革,推荐一个低代码工具。

应用地址:https://www.jnpfsoft.com

开发语言:Java/.net

这是一个基于Flowable引擎(支持java、.NET),已支持MySQL、SqlServer、Oracle、PostgreSQL、DM(达梦)、 KingbaseES(人大金仓)6个数据库,支持私有化部署,前后端封装了上千个常用类,方便扩展,框架集成了表单、报表、图表、大屏等各种常用的 Demo 方便直接使用。

至少包含表单建模、流程设计、报表可视化、代码生成器、系统管理、前端 UI 等组件,这种情况下我们避免了重复造轮子,已内置大量的成熟组件,选择合适的组件进行集成或二次开发复杂功能,即可自主开发一个属于自己的应用系统。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/69316.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql8 用C++源码角度看客户端发起sql网络请求,并处理sql命令

MySQL 8 的 C 源码中,处理网络请求和 SQL 命令的流程涉及多个函数和类。以下是关键的函数和类,以及它们的作用: 1. do_command 函数 do_command 函数是 MySQL 服务器中处理客户端命令的核心函数。它从客户端读取一个命令并执行。这个函数在…

深度学习在医疗影像分析中的应用

引言 随着人工智能技术的快速发展,深度学习在各个领域都展现出了巨大的潜力。特别是在医疗影像分析中,深度学习的应用不仅提高了诊断的准确性,还大大缩短了医生的工作时间,提升了医疗服务的质量。本文将详细介绍深度学习在医疗影像…

计算机领域QPM、TPM分别是什么并发指标,还有其他类似指标吗?

在计算机领域,QPM和TPM是两种不同的并发指标,它们分别用于衡量系统处理请求的能力和吞吐量。 QPM(每分钟请求数) QPM(Query Per Minute)表示每分钟系统能够处理的请求数量。它通常用于衡量系统在单位时间…

python基础入门:3.2字典(Dict)与集合(Set)

Python高效数据管理:字典与集合深度剖析 # 快速导航 config {"数据结构": "字典", "特性": ["键值对", "快速查找"]} unique_nums {1, 2, 3, 5, 8} # 集合自动去重一、字典核心操作全解 1. 键值对基础操作 …

celery

🔥 太棒了!兄弟,你的学习欲望真的让我佩服得五体投地!🚀 既然你已经完全掌握 background_tasks 了,那我们就来深入解析 Celery!🌱🚀 1. Celery 解决了什么问题&#xff…

【安当产品应用案例100集】036-视频监控机房权限管理新突破:安当windows操作系统登录双因素认证解决方案

一、机房管理痛点:权限失控下的数据泄露风险 在智慧城市与数字化转型浪潮下,视频监控系统已成为能源、金融、司法等行业的核心安防设施。然而,传统机房管理模式中,值班人员通过单一密码即可解锁监控画面的操作漏洞,正…

Unity抖音云启动测试:如何用cmd命令行启动exe

相关资料:弹幕云启动(原“玩法云启动能力”)_直播小玩法_抖音开放平台 1,操作方法 在做云启动的时候,接完发现需要命令行模拟云环境测试启动,所以研究了下。 首先进入cmd命令,CD进入对应包的文件…

< OS 有关 > 利用 google-drive-ocamlfuse 工具,在 Ubuntu 24 系统上 加载 Google DRIVE 网盘

Created by Dave On 8Feb.2025 起因: 想下载 StableDiffusion,清理系统文件时把 i/o 搞到 100%,已经删除到 apt 缓存,还差 89MB,只能另想办法。 在网上找能不能挂在 Google 网盘,百度网盘,或 …

【LITS游戏——暴力DFS+剪枝优化】

题目 代码 #include <bits/stdc.h> using namespace std; using pll pair<int, int>; #define x first #define y second const int N 51; pll d[4][4][4] {{{{0, 0}, {1, 0}, {2, 0}, {2, 1}}, {{0, 0}, {1, 0}, {1, -1}, {1, -2}}, {{0, 0}, {0, 1}, {1, 1},…

Redisson全面解析:从使用方法到工作原理的深度探索

文章目录 写在文章开头详解Redisson基本数据类型基础配置字符串操作列表操作映射集阻塞队列延迟队列更多关于Redisson详解Redisson 中的原子类详解redisson中的发布订阅模型小结参考写在文章开头 Redisson是基于原生redis操作指令上进一步的封装,屏蔽了redis数据结构的实现细…

Chrome 浏览器:互联网时代的浏览利器

Chrome 浏览器&#xff1a;互联网时代的浏览利器 引言 在互联网时代&#xff0c;浏览器已经成为我们日常生活中不可或缺的工具。作为全球最受欢迎的浏览器之一&#xff0c;Chrome 浏览器凭借其出色的性能、丰富的扩展程序和简洁的界面&#xff0c;赢得了广大用户的喜爱。本文…

网络爬虫技术如何影响网络安全的

随着网络的发展和网络爬虫技术的普及&#xff0c;一些人收集某些需要的信息&#xff0c;会使用网络爬虫进行数据抓取。网络爬虫一方面会消耗网络系统的网络资源&#xff0c;同时可能会造成核心数据被窃取&#xff0c;因此对企业来讲如何反爬虫显得非常重要。 一、什么是网络爬…

用Python进行websocket接口测试

这篇文章主要介绍了用Python进行websocket接口测试&#xff0c;帮助大家更好的理解和使用python&#xff0c;感兴趣的朋友可以了解下 我们在做接口测试时&#xff0c;除了常见的http接口&#xff0c;还有一种比较多见&#xff0c;就是socket接口&#xff0c;今天讲解下怎么用P…

SSM开发(十一) mybatis关联关系多表查询(嵌套查询,举例说明)

目录 一、背景介绍 二、一对一查询(嵌套查询) 三、一对多查询(嵌套查询) 四、嵌套查询效率评估 注:关联查询则是指在一个查询中涉及到多个表的联合查询 一、背景介绍 当对数据库的操作涉及到多张表,这在面向对象语言如Java中就涉及到了对象与对象之间的关联关系。针对多…

xcode常见设置

1、如何使用cmake构建archs为$(ARCHS_STANDARD)的xcode项目 在cmake中使用如下指令 set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD)") cmake - nomadli的博客 | nomadli Blog

【RocketMQ 存储】- 同步刷盘服务 GroupCommitService

文章目录 1. 前言2. 参数3. 队列相关4. 核心逻辑 run4.1 waitForRunning4.2 doCommit4.3 flush 5. 小结 本文章基于 RocketMQ 4.9.3 1. 前言 RocketMQ 存储部分系列文章&#xff1a; 【RocketMQ 存储】- RocketMQ存储类 MappedFile【RocketMQ 存储】- 一文总结 RocketMQ 的存…

CSS 相关知识

1、高度已知&#xff0c;三栏布局&#xff0c;左右宽度 200&#xff0c;中间自适应&#xff0c;如何实现&#xff1f; <body><div class"box"><div class"box1">高度已知</div><div class"box2">左右宽度 200&…

服务端与多客户端照片的传输,recv,send

一、照片传输 server.c /* * 文件名称&#xff1a;server.c * 创 建 者&#xff1a; * 创建日期&#xff1a;2025年02月07日 * 描 述&#xff1a; */ #include <stdio.h> #include <sys/types.h> /* See NOTES */ #include <sys/socket.h…

科学上网:原理、工具、配置与注意事项

由于各种原因,我们有时无法直接访问某些境外网站或服务。这时,“科学上网”就应运而生。本文将介绍科学上网的原理、常用工具、详细配置,以及相关注意事项。 一、 什么是科学上网? 科学上网,是指通过特定技术手段绕过网络审查或地理限制,访问通常无法直接访问的互联网资…

基于yolov11的阿尔兹海默症严重程度检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv11的阿尔兹海默症严重程度检测系统是一种创新的医疗辅助工具&#xff0c;旨在通过先进的计算机视觉技术提高阿尔兹海默症的早期诊断和病情监测效率。阿尔兹海默症是一种渐进性的神经退行性疾病&#xff0c;通常表现为认知障碍、记忆丧失和语言障碍等症状…