部署 Python 到阿里云轻量应用服务器,核心就两步:选对系统和装对环境。别想太复杂,这玩意儿跟在你本地笔记本上装没什么本质区别。
下面分两种情况,看你手里拿的是什么“牌”。
情况一:你买的是“镜像”(最简单,适合新手)
如果你刚创建服务器,或者还没重装系统,直接在镜像市场里搜关键词 “Python” 或 “Django/Flask/FastAPI”。
- 操作:在控制台找到“重置系统”或者新建实例时,镜像选择页搜索
python。 - 结果:阿里云官方提供了一键安装好 Python、Nginx、MySQL(可选)的镜像。
- 优点:开箱即用,省去了配置环境的痛苦,直接上传代码就能跑。
- 缺点:定制性差,版本固定,想换个新版 Python 还得自己折腾。
情况二:你用的是标准 Linux 系统(推荐,适合长期维护)
大多数时候,我们更倾向于使用标准的 Ubuntu 或 CentOS 系统,这样可控性更强。这里以目前最主流的 Ubuntu 20.04/22.04 为例,CentOS 逻辑类似,只是包管理器从 apt 变成 yum/dnf。
第一步:连上去
用 SSH 工具(如 Terminal, iTerm2, 或者阿里云自带的 VNC)登录服务器。
ssh root@你的服务器IP
第二步:更新源 & 装基础依赖
别直接装 Python,先保证系统是最新的,且编译环境齐全。
# Ubuntu/Debian 系
sudo apt update
sudo apt upgrade -y
# 安装编译 Python 所需的依赖库
sudo apt install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev
libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget curl llvm
注意:如果你用的是 CentOS/RHEL,命令换成
sudo yum groupinstall "Development Tools"和对应的-devel包。
第三步:下载并编译安装 Python(最稳妥的方式)
不要直接用 apt install python3,因为那个版本可能太老(比如 Ubuntu 20.04 默认是 3.8,而你可能需要 3.11+)。手动编译是掌控力最强的方式。
-
去官网下源码:
cd /tmp wget https://www.python.org/ftp/python/3.11.6/Python-3.11.6.tgz tar -xf Python-3.11.6.tgz cd Python-3.11.6 -
配置、编译、安装:
./configure --enable-optimizations --prefix=/usr/local make -j $(nproc) sudo make altinstall关键点解释:
--enable-optimizations:开启性能优化,会让编译慢一点,但运行快一点。make altinstall:千万别用make install!它会覆盖系统默认的python命令,导致系统崩溃。altinstall会生成python3.11命令,不影响系统自带的环境。
-
验证:
python3.11 --version # 输出应该是 Python 3.11.6
第四步:虚拟环境(必做,保命符)
永远不要在系统全局环境下 pip install 各种乱七八糟的包。一定要用虚拟环境隔离项目。
# 创建虚拟环境目录
mkdir ~/myproject
cd ~/myproject
# 创建名为 venv 的虚拟环境
python3.11 -m venv venv
# 激活它
source venv/bin/activate
激活后,你的命令行前面会出现 (venv) 字样。这时候再装包:
pip install flask requests numpy ... # 你想装的任何包
第五步:让程序跑起来
这时候你有两个选择:
A. 简单粗暴法(仅用于测试)
python app.py
按 Ctrl+C 停止。但这不行,关掉终端进程就死了。
B. 正规军做法(Systemd + Gunicorn/Uvicorn)
-
安装 Web 服务器:
- Flask/Django 用 Gunicorn
- FastAPI 用 Uvicorn
pip install gunicorn uvicorn[standard] -
编写 Systemd 服务文件:
创建/etc/systemd/system/myapp.service:[Unit] Description=My Python App After=network.target [Service] User=root WorkingDirectory=/root/myproject Environment="PATH=/root/myproject/venv/bin" ExecStart=/root/myproject/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app [Install] WantedBy=multi-user.target注意:
WorkingDirectory是你的项目路径。ExecStart里的app:app指的是app.py文件里的app对象。如果是 Django,通常是manage.py启动方式不同,需配合 Nginx。- 绑定
127.0.0.1:8000而不是0.0.0.0,因为后面会有 Nginx 做反向X_X。
-
启动服务:
sudo systemctl daemon-reload sudo systemctl start myapp sudo systemctl enable myapp # 开机自启 sudo systemctl status myapp # 查看状态
第六步:Nginx 反向X_X(暴露给公网)
光有 Python 跑着没用,用户怎么访问?用 Nginx 挡在前面。
-
安装 Nginx:
sudo apt install nginx -
配置站点:
编辑/etc/nginx/sites-available/default或新建一个配置文件,添加:server { listen 80; server_name your_domain.com; # 替换为你的域名或 IP 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; } } -
重启 Nginx:
sudo nginx -t # 检查配置是否有语法错误 sudo systemctl restart nginx
现在,浏览器输入你的服务器 IP,就能看到你的 Python 应用了。
避坑指南
- 防火墙:阿里云轻量应用服务器有个“防火墙”设置(控制台里),记得放行 80 (HTTP) 和 443 (HTTPS) 端口。如果只开了 22 (SSH),其他端口默认是被云厂商墙住的。
- 权限问题:很多报错是因为文件权限不对。确保你的 Python 项目文件夹有读写权限,通常
chown -R root:root /path/to/project能解决大部分问题(生产环境建议用普通用户,但开发阶段 root 最快)。 - 日志排查:程序挂了怎么办?看日志!
- Systemd 日志:
journalctl -u myapp -f - Nginx 错误日志:
/var/log/nginx/error.log
- Systemd 日志:
这套流程走下来,你的 Python 环境就是干净、独立、可持久化的。别整那些花里胡哨的一键脚本,理解了原理,以后换服务器、换语言都一通百通。
CLOUD云计算