阿里云 Linux 云服务器部署 Python 项目全流程指南

apphuang2026年06月10日 09:55:408


在云计算时代,将 Python 项目部署到阿里云 Linux 云服务器已成为开发者的主流选择。Python 凭借简洁的语法和丰富的 Web 框架(如 Flask、Django、FastAPI),广泛应用于后端服务、数据接口、自动化工具等场景。而阿里云 ECS 服务器具备弹性伸缩、稳定可靠、成本可控等优势,能为 Python 项目提供优质的运行环境。本文将从服务器准备、环境配置、项目上传、服务部署、安全优化到运维监控,全方位讲解 Python 项目在阿里云 Linux 服务器的部署流程,即使是零基础开发者也能轻松上手。

一、部署前准备:服务器选购与登录配置

1.1 阿里云服务器选型

阿里云提供多种云服务器产品,对于 Python 项目部署,推荐选择ECS 云服务器轻量应用服务器。轻量应用服务器性价比高、操作简单,适合个人项目、小型网站;ECS 服务器配置灵活、性能更强,适合企业级项目、高并发应用。

操作系统建议选择Ubuntu 22.04 LTSCentOS 7.9,两者均为 Linux 主流发行版,软件包丰富、兼容性好,且阿里云提供官方镜像,安装便捷。配置方面,个人项目选择 1 核 2G 内存、40G 云盘即可;企业级项目建议 2 核 4G 及以上配置,保障运行流畅。

需要先登录阿里云控制台,点击: 阿里云控制台

1.2 远程连接服务器

服务器创建完成后,需通过远程连接工具登录服务器进行操作,常用方式有以下两种:

方式一:阿里云控制台远程连接(新手推荐)

进入阿里云 ECS 控制台,找到目标服务器,点击 “远程连接”,选择 “Workbench 远程连接”,输入服务器用户名(默认 root)和密码(创建服务器时设置),即可登录服务器终端。

方式二:本地 SSH 工具连接(Windows/Mac)

Windows 用户可使用 PuTTY、Xshell,Mac/Linux 用户直接使用终端。连接命令:

ssh 用户名 @服务器公网 IP

例如:ssh root@123.45.67.89,输入密码后即可登录。为方便后续操作,建议配置 SSH 密钥登录,避免每次输入密码。

1.3 服务器基础安全配置

登录服务器后,首先进行基础安全配置,避免服务器被攻击:

  1. 修改默认密码:passwd命令,设置强密码(字母 + 数字 + 特殊符号)。

  2. 更新系统软件包:

    # Ubuntu 系统
    sudo apt update && sudo apt upgrade -y
    CentOS 系统
    sudo yum update -y
  3. 关闭不必要的端口:通过阿里云安全组配置,仅开放 22(SSH)、80(HTTP)、443(HTTPS)等必要端口,关闭其他闲置端口。

二、Python 环境搭建:从安装到虚拟环境配置

Linux 系统默认可能未安装 Python 或版本较低,需手动安装指定版本 Python,并配置虚拟环境隔离项目依赖,避免不同项目依赖冲突。

2.1 安装 Python3

根据操作系统选择对应安装命令,推荐安装 Python3.8 及以上版本(兼容性好、功能完善):

Ubuntu 系统安装 Python3.10

sudo apt install python3.10 python3.10-dev python3-pip -y

CentOS 系统安装 Python3.8

sudo yum install epel-release -y
sudo yum install python38 python38-devel python3-pip -y

安装完成后,验证 Python 版本:

python3 --version

输出版本号(如 Python 3.10.12)即表示安装成功。同时升级 pip 到最新版本:

pip3 install --upgrade pip

2.2 配置 Python 虚拟环境

虚拟环境可独立管理每个项目的依赖包,避免全局环境污染,是 Python 项目部署的必备步骤。常用虚拟环境工具为venv(Python 内置,无需额外安装)。

1. 创建项目目录

建议将 Python 项目统一存放于/var/www/目录(Linux Web 项目标准目录):

sudo mkdir -p /var/www/my_python_project
赋予当前用户目录权限
sudo chown 
USER:
USER /var/www/my_python_project
cd /var/www/my_python_project

2. 创建虚拟环境

# 创建名为 venv 的虚拟环境
python3 -m venv venv

3. 激活虚拟环境

# Ubuntu/CentOS 激活命令
source venv/bin/activate

激活成功后,终端前缀会显示(venv),表示当前处于虚拟环境中,后续安装的依赖包仅作用于该环境。退出虚拟环境命令:deactivate

三、项目上传与依赖安装:本地项目迁移到服务器

完成环境配置后,需将本地 Python 项目上传到服务器,并安装项目所需依赖包。

3.1 本地项目准备

上传前,需在本地项目目录中生成依赖清单requirements.txt,记录项目所有依赖包及版本,方便服务器批量安装:

# 本地虚拟环境中执行
pip freeze > requirements.txt

生成的requirements.txt内容示例:

Flask==2.3.3
Gunicorn==21.2.0
requests==2.31.0

3.2 项目上传到服务器

常用上传方式有SCP 命令FTP 工具Git 克隆,推荐 SCP 命令(简单高效,无需额外安装工具)和 Git 克隆(适合代码托管项目)。

方式一:SCP 命令上传(本地终端执行)

# 上传本地整个项目目录到服务器 /var/www/
scp -r / 本地项目路径 /* root@服务器公网 IP:/var/www/my_python_project/

示例:scp -r /Users/xxx/my_flask_project/* root@123.45.67.89:/var/www/my_python_project/,输入服务器密码后开始上传。

方式二:Git 克隆(适合 GitHub/Gitee 托管项目)

服务器中直接克隆代码仓库,无需本地上传:

cd /var/www/my_python_project
git clone https://gitee.com/xxx/my_flask_project.git .

3.3 安装项目依赖

服务器中进入项目目录,激活虚拟环境,执行以下命令安装依赖:

# 激活虚拟环境
source venv/bin/activate
安装 requirements.txt 中的所有依赖
pip install -r requirements.txt

安装过程中若出现依赖报错,可先安装系统依赖包(如sudo apt install libpq-dev),再重新执行安装命令。

阿里云 Linux 云服务器部署 Python 项目全流程指南

3.4 测试项目本地运行

依赖安装完成后,先测试项目能否在服务器本地正常运行(以 Flask 项目为例,入口文件为 app.py):

# 设置 Flask 环境变量(生产环境)
export FLASK_APP=app.py
export FLASK_ENV=production
启动项目
python app.py

若终端输出Running on http://127.0.0.1:5000,表示项目本地运行正常,按Ctrl+C停止运行(开发服务器仅用于测试,不可用于生产环境)。

四、生产环境部署:Gunicorn+Nginx 配置

Python 自带的开发服务器(如 Flask 的内置服务器)性能差、不稳定,仅适合开发测试,生产环境需使用WSGI 服务器(如 Gunicorn、uWSGI)运行 Python 项目,搭配Nginx 反向代理处理公网请求、分发静态资源,提升项目性能和稳定性。

4.1 安装 Gunicorn(WSGI 服务器)

Gunicorn 是轻量级、高性能的 WSGI 服务器,支持多进程、高并发,安装简单、配置便捷,推荐作为 Python 项目生产服务器。

# 虚拟环境中安装 Gunicorn
pip install gunicorn

验证安装:gunicorn --version,输出版本号即成功。

4.2 Gunicorn 启动 Python 项目

以 Flask 项目(app.py,实例名 app)为例,Gunicorn 启动命令:

# 基础启动命令
gunicorn -w 4 -b 127.0.0.1:8000 app:app

参数说明:

  • -w 4:启动 4 个工作进程(建议设置为 CPU 核心数 ×2+1,如 1 核服务器设为 3,2 核设为 5);

  • -b 127.0.0.1:8000:绑定本地 8000 端口(仅内网访问,避免直接暴露公网);

  • app:app:第一个 app 为入口文件名(app.py),第二个 app 为 Flask 实例名。

启动成功后,终端无报错即表示运行正常,可通过curl 127.0.0.1:8000测试本地访问。

4.3 安装并配置 Nginx 反向代理

Nginx 是高性能 Web 服务器,可作为反向代理接收公网请求,转发给 Gunicorn 处理,同时负责静态资源(如图片、CSS、JS)分发,减轻 Python 项目压力。

1. 安装 Nginx

# Ubuntu 系统
sudo apt install nginx -y
CentOS 系统
sudo yum install nginx -y

验证安装:nginx -v,输出版本号即成功。启动 Nginx 并设置开机自启:

sudo systemctl start nginx
sudo systemctl enable nginx

2. 配置 Nginx 站点

创建 Python 项目专属 Nginx 配置文件(避免修改默认配置):

阿里云 Linux 云服务器部署 Python 项目全流程指南

# Ubuntu 配置文件路径
sudo vim /etc/nginx/sites-available/my_python_project
CentOS 配置文件路径
sudo vim /etc/nginx/conf.d/my_python_project.conf

写入以下配置内容(根据项目修改域名 / IP、端口、静态资源路径):

server {
listen 80;
server_name 你的服务器公网 IP 你的域名;# 无域名填写公网 IP

转发所有请求到 Gunicorn location / { proxy_pass http://127.0.0.1:8000; 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; } 配置静态资源(Flask 项目默认 static 目录) location /static/ { alias /var/www/my_python_project/static/; expires 30d; # 静态资源缓存 30 天 } }

3. 启用配置并重启 Nginx

# Ubuntu 启用配置(创建软链接到 sites-enabled)
sudo ln -sf /etc/nginx/sites-available/my_python_project/etc/nginx/sites-enabled/
测试 Nginx 配置语法(无报错再重启)
sudo nginx -t
重启 Nginx 生效
sudo systemctl restart nginx

4.4 公网访问测试

完成以上配置后,在本地浏览器输入http:// 服务器公网 IP,即可访问 Python 项目首页。若无法访问,检查阿里云安全组是否开放 80 端口、Nginx 配置是否正确、Gunicorn 是否正常运行。

五、进程守护与开机自启:保障项目 7×24 小时运行

服务器重启或进程意外退出时,需自动重启 Python 项目,常用工具为Supervisor(进程守护)和systemd(系统服务,开机自启),推荐 Supervisor(配置简单、支持多进程管理)。

5.1 安装 Supervisor

# Ubuntu 系统
sudo apt install supervisor -y
CentOS 系统
sudo yum install supervisor -y

启动 Supervisor 并设置开机自启:

sudo systemctl start supervisor
sudo systemctl enable supervisor

5.2 配置 Supervisor 守护 Gunicorn 进程

创建 Supervisor 配置文件,管理 Python 项目进程:

sudo vim /etc/supervisor/conf.d/my_python_project.conf

写入以下配置(修改路径、虚拟环境、启动命令):

[program:my_python_project]
项目名称(自定义)
directory=/var/www/my_python_project
项目目录
command=/var/www/my_python_project/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app
Gunicorn 启动命令(使用虚拟环境内的 gunicorn)
autostart=true
开机自动启动
autorestart=true
进程退出自动重启
startretries=3
启动失败重试 3 次
stdout_logfile=/var/log/my_python_project.log
正常日志路径
stderr_logfile=/var/log/my_python_project_error.log
错误日志路径
user=www-data
运行用户(权限最小化)

5.3 加载配置并管理进程

# 加载新配置
sudo supervisorctl reread
更新进程管理
sudo supervisorctl update
启动项目进程
sudo supervisorctl start my_python_project
查看进程状态
sudo supervisorctl status my_python_project

状态显示RUNNING即表示进程守护配置成功,后续服务器重启或进程崩溃,都会自动重启项目。

六、域名绑定与 HTTPS 配置:提升项目访问体验与安全性

公网 IP 访问项目不够友好,且 HTTP 传输数据明文,存在安全风险,建议绑定域名并配置 HTTPS 加密访问。

6.1 域名解析配置

在域名注册商(如阿里云万网、腾讯云 DNSPod)控制台,添加 A 记录解析:

  • 主机记录:www(主域名)、@(顶级域名);

  • 记录类型:A;

  • 记录值:填写阿里云服务器公网 IP;

  • TTL:默认 300 秒。

    阿里云 Linux 云服务器部署 Python 项目全流程指南

解析生效后,可通过域名访问项目。

6.2 配置 HTTPS(免费 SSL 证书)

阿里云提供免费 SSL 证书(有效期 1 年),申请后配置到 Nginx,实现 HTTPS 加密访问。

1. 申请免费 SSL 证书

登录阿里云控制台,进入 “SSL 证书”,申请免费单域名证书,绑定已解析的域名,审核通过后下载证书(Nginx 格式)。

2. 上传证书到服务器

在服务器创建证书目录,上传证书文件(.crt 和.key):

sudo mkdir -p /etc/nginx/ssl
上传证书文件到该目录

3. 修改 Nginx 配置支持 HTTPS

server {
listen 80;
server_name www.xxx.com xxx.com;
强制 HTTP 跳转到 HTTPS
return 301 https://
host
request_uri;
}
server {
listen 443 ssl;
server_name www.xxx.com xxx.com;
证书路径
ssl_certificate /etc/nginx/ssl/xxx.crt;
ssl_certificate_key /etc/nginx/ssl/xxx.key;
SSL 配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
转发请求到 Gunicorn
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host
$host;
proxy_set_header X-Real-IP $remote_addr;
}
静态资源配置
location /static/ {
alias /var/www/my_python_project/static/;
}
}

重启 Nginx 生效:sudo systemctl restart nginx,之后通过https:// 域名访问项目,浏览器显示安全锁标识。

七、常见问题排查与优化建议

7.1 常见部署问题排查

  1. 公网无法访问项目:检查阿里云安全组开放 80/443 端口;Nginx 配置无报错;Gunicorn 正常监听 127.0.0.1:8000;服务器防火墙关闭(sudo ufw allow 80)。

  2. Gunicorn 启动失败:虚拟环境路径错误;端口被占用(lsof -i:8000查看占用进程,kill 关闭);项目入口文件错误。

  3. Nginx 转发 502 Bad Gateway:Gunicorn 未运行;Nginx 与 Gunicorn 端口不匹配;项目依赖缺失导致启动失败。

  4. 静态资源无法加载:Nginx 静态资源路径配置错误;文件权限不足(sudo chmod -R 755 /var/www/my_python_project)。

7.2 项目性能优化建议

  • Gunicorn 优化:根据服务器 CPU 核心数调整工作进程数;启用异步工作模式(-k gevent,需安装 gevent)。

  • Nginx 优化:开启 gzip 压缩;配置静态资源缓存;调整 worker 进程数(等于 CPU 核心数)。

  • 数据库优化:Python 项目连接数据库时,使用连接池;避免频繁查询,添加缓存(Redis)。

  • 服务器监控:安装监控工具(如 Prometheus+Grafana),监控 CPU、内存、磁盘、网络状态,及时排查异常。

八、总结

本文详细讲解了阿里云 Linux 云服务器部署 Python 项目的全流程,核心步骤包括:服务器选型与登录、Python 环境与虚拟环境配置、项目上传与依赖安装、Gunicorn 生产服务器部署、Nginx 反向代理配置、Supervisor 进程守护、域名绑定与 HTTPS 配置。掌握这些步骤,可快速将 Python 项目从本地开发环境迁移到云端生产环境,保障项目稳定、安全、高效运行。

阿里云 Linux 云服务器部署 Python 项目全流程指南

Python 项目部署的核心逻辑是隔离环境、分离职责、保障稳定:虚拟环境隔离依赖,Gunicorn 运行 Python 应用,Nginx 处理公网请求,Supervisor 守护进程,各组件各司其职,共同构建可靠的生产环境。后续可根据项目需求,进一步优化性能、扩展集群、实现自动化部署,满足业务增长需求。


常见问答

Q1:为什么生产环境不能用 Python 自带的开发服务器?

A1:Python 自带开发服务器性能差、并发能力低,仅支持单进程处理请求,且存在安全漏洞,无法承受公网高并发访问,仅适合本地开发测试,生产环境必须使用 Gunicorn、uWSGI 等专业 WSGI 服务器。

Q2:虚拟环境有什么作用,必须配置吗?

A2:虚拟环境可独立管理每个项目的依赖包,避免不同项目依赖版本冲突,同时隔离系统全局环境,防止污染系统配置。部署 Python 项目时建议必须配置,否则后续多项目部署会出现依赖混乱问题。

Q3:Nginx 反向代理的核心作用是什么?

A3:Nginx 作为反向代理,核心作用是接收公网用户请求,转发给内网运行的 Gunicorn 处理,同时负责静态资源分发、请求负载均衡、SSL 加密处理,减轻 Python 项目压力,提升访问速度和安全性。

Q4:项目部署后,服务器重启需要重新启动项目吗?

A4:不需要。配置 Supervisor 进程守护并设置 autostart=true 后,服务器重启时 Supervisor 会自动启动 Python 项目;进程意外退出时,Supervisor 也会自动重启,保障项目 7×24 小时运行。

Q5:没有域名可以部署 Python 项目吗?

A5:可以。直接使用服务器公网 IP 访问项目,只需在 Nginx 配置的 server_name 中填写公网 IP,同时确保阿里云安全组开放 80 端口即可。但公网 IP 不友好,且无法配置 HTTPS,建议项目上线后绑定域名。

Q6:如何升级 Python 项目代码?

A6:进入项目目录,拉取最新代码(Git 项目执行 git pull),激活虚拟环境,若有依赖更新则执行 pip install -r requirements.txt,最后执行 sudo supervisorctl restart my_python_project 重启项目,即可完成代码升级。

相关文章

享受阿里云返点优惠,开启超值云计算之旅!

享受阿里云返点优惠,开启超值云计算之旅!

阿里云是中国领先的云计算服务提供商,提供云计算、大数据、人工智能等创新技术,为企业和个人提供一站式的云端解决方案。作为中国云计算行业的领军企业,阿里云通过积极的市场营销策略吸引了大量企业和个人用户,为…

买阿里云服务器能便宜吗?十年代理揭秘 3 大省钱攻略!

买阿里云服务器能便宜吗?十年代理揭秘 3 大省钱攻略!

作为深耕阿里云代理领域 10 年的 “老司机”,经常被问到:“买阿里云服务器能便宜吗?有没有优惠价格?” 今天就用实打实的行业经验告诉你:不仅能便宜,选对渠道还能省一大笔! 这篇文章带你解锁阿里云服务…

做了 10 年腾讯云代理,我想跟你聊聊返佣那些事儿​

做了 10 年腾讯云代理,我想跟你聊聊返佣那些事儿​

最近总有朋友问我:“腾讯云有返点吗?腾讯云服务器能拿佣金不?返佣比例到底有多少?” 作为一个在腾讯云代理行业摸爬滚打了 10 年的 “老人”,今天就来跟大家好好…

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

阿里云代理商的核心价值定位1. 代理商的角色与职责阿里云代理商作为阿里云生态的核心合作伙伴,承担着双重核心职能:• 产品销售:负责推广销售阿里云全系列云产品,包括云服务器ECS、云数据库RDS、对象存…

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

01一、阿里云代理商的核心价值定位1. 代理商的角色与职责阿里云代理商作为阿里云生态的核心合作伙伴,承担着双重核心职能:• 产品销售:负责推广销售阿里云全系列云产品,包括云服务器ECS、云数据库RDS…

阿里云代理商有哪些?阿里云代理返点是真的么?

阿里云代理商有哪些?阿里云代理返点是真的么?

一,阿里云代理商基本介绍阿里云代理商通俗一点,就是指从事阿里云云服务器,云数据库等阿里云公有云产品销售的代理商,每销售一件阿里云公有云产品出去,阿里云给予该代理商一定比例的提成。在阿里云官方定义中,这…