阿里云 Linux 云服务器部署 Python 项目全流程指南
在云计算时代,将 Python 项目部署到阿里云 Linux 云服务器已成为开发者的主流选择。Python 凭借简洁的语法和丰富的 Web 框架(如 Flask、Django、FastAPI),广泛应用于后端服务、数据接口、自动化工具等场景。而阿里云 ECS 服务器具备弹性伸缩、稳定可靠、成本可控等优势,能为 Python 项目提供优质的运行环境。本文将从服务器准备、环境配置、项目上传、服务部署、安全优化到运维监控,全方位讲解 Python 项目在阿里云 Linux 服务器的部署流程,即使是零基础开发者也能轻松上手。
一、部署前准备:服务器选购与登录配置
1.1 阿里云服务器选型
阿里云提供多种云服务器产品,对于 Python 项目部署,推荐选择ECS 云服务器或轻量应用服务器。轻量应用服务器性价比高、操作简单,适合个人项目、小型网站;ECS 服务器配置灵活、性能更强,适合企业级项目、高并发应用。
操作系统建议选择Ubuntu 22.04 LTS或CentOS 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 服务器基础安全配置
登录服务器后,首先进行基础安全配置,避免服务器被攻击:
修改默认密码:
passwd命令,设置强密码(字母 + 数字 + 特殊符号)。更新系统软件包:
# Ubuntu 系统 sudo apt update && sudo apt upgrade -y CentOS 系统 sudo yum update -y
关闭不必要的端口:通过阿里云安全组配置,仅开放 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),再重新执行安装命令。

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 配置文件(避免修改默认配置):

# 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 秒。

解析生效后,可通过域名访问项目。
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 常见部署问题排查
公网无法访问项目:检查阿里云安全组开放 80/443 端口;Nginx 配置无报错;Gunicorn 正常监听 127.0.0.1:8000;服务器防火墙关闭(
sudo ufw allow 80)。Gunicorn 启动失败:虚拟环境路径错误;端口被占用(
lsof -i:8000查看占用进程,kill 关闭);项目入口文件错误。Nginx 转发 502 Bad Gateway:Gunicorn 未运行;Nginx 与 Gunicorn 端口不匹配;项目依赖缺失导致启动失败。
静态资源无法加载: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 项目从本地开发环境迁移到云端生产环境,保障项目稳定、安全、高效运行。

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 重启项目,即可完成代码升级。



