在阿里云轻量应用服务器上部署 Python 环境,通常分为以下几个步骤。我们将以最常见的 Ubuntu/Debian 和 CentOS/RHEL 系统为例,提供详细操作指南。
✅ 一、前置准备
-
登录服务器
- 通过 SSH 登录你的阿里云轻量应用服务器:
ssh root@your_server_ip - 如果使用密钥登录,请确X_X钥权限正确(
chmod 600 key.pem)。
- 通过 SSH 登录你的阿里云轻量应用服务器:
-
更新系统包
# Ubuntu/Debian sudo apt update && sudo apt upgrade -y # CentOS/RHEL sudo yum update -y
✅ 二、安装 Python
方法1:使用系统包管理器安装(推荐用于生产环境)
🟦 Ubuntu/Debian
sudo apt install python3 python3-pip python3-venv -y
验证安装:
python3 --version
pip3 --version
🟧 CentOS/RHEL 7/8
# CentOS 7
sudo yum install python3 python3-pip -y
# CentOS 8+(默认可能包含 Python 3.6+)
sudo dnf install python3 python3-pip -y
⚠️ 注意:CentOS 7 默认 Python 版本较低(3.6),如需更高版本建议使用方法2。
方法2:从源码编译安装(适合需要特定版本)
以安装 Python 3.10 为例:
# 安装依赖
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev
libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget
libbz2-dev -y # Ubuntu
# 或 CentOS
sudo yum groupinstall "Development Tools" -y
sudo yum install zlib-devel bzip2-devel openssl-devel ncurses-devel
sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel
xz-devel -y # CentOS
# 下载并解压
cd /tmp
wget https://www.python.org/ftp/python/3.10.12/Python-3.10.12.tgz
tar -xzf Python-3.10.12.tgz
cd Python-3.10.12
# 编译安装
./configure --enable-optimizations
make -j $(nproc)
sudo make altinstall # 使用 altinstall 避免覆盖系统默认 python
验证:
python3.10 --version
✅ 三、创建虚拟环境(强烈推荐)
使用 venv 隔离项目依赖:
# 创建项目目录
mkdir ~/myproject
cd ~/myproject
# 创建虚拟环境
python3 -m venv venv
# 激活虚拟环境
source venv/bin/activate
# 升级 pip
pip install --upgrade pip
💡 每次使用前需执行
source venv/bin/activate,退出时运行deactivate。
✅ 四、安装项目依赖
假设你有 requirements.txt:
pip install -r requirements.txt
如果没有,可以手动安装常用库:
pip install flask requests django numpy pandas
✅ 五、测试 Python 应用
创建一个简单的 Flask 应用测试:
# app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello, World!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
运行:
python app.py
访问 http://your_server_ip:5000 查看是否正常返回。
✅ 六、配置后台运行与开机自启(生产环境必备)
使用 systemd 管理进程
创建服务文件:
sudo nano /etc/systemd/system/myapp.service
内容如下:
[Unit]
Description=My Python App
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/root/myproject
ExecStart=/root/myproject/venv/bin/python app.py
Restart=always
Environment="PATH=/root/myproject/venv/bin:$PATH"
[Install]
WantedBy=multi-user.target
启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable myapp.service
sudo systemctl start myapp.service
sudo systemctl status myapp.service
✅ 七、配置反向X_X(Nginx + Gunicorn)
为提升性能和安全性,建议使用 Nginx 作为反向X_X,Gunicorn 作为 WSGI 服务器。
1. 安装 Nginx 和 Gunicorn
# Ubuntu
sudo apt install nginx gunicorn -y
# CentOS
sudo yum install epel-release -y
sudo yum install nginx gunicorn -y
2. 用 Gunicorn 启动应用
gunicorn --bind 0.0.0.0:8000 app:app
3. 配置 Nginx 反向X_X
编辑 Nginx 配置:
sudo nano /etc/nginx/sites-available/default
修改 server 块:
server {
listen 80;
server_name your_domain_or_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;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
重启 Nginx:
sudo systemctl restart nginx
✅ 八、安全建议
-
防火墙设置
# Ubuntu (UFW) sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable # CentOS (firewalld) sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload -
使用 HTTPS(Let’s Encrypt)
sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d your_domain.com -
限制 SSH 访问
- 修改 SSH 端口
- 禁用密码登录,仅允许密钥认证
- 使用 fail2ban 防止暴力破解
✅ 九、常见问题排查
| 问题 | 解决方案 |
|---|---|
command not found: python3 |
确认已安装,检查 PATH |
Permission denied |
检查文件权限,使用 sudo 或调整用户组 |
| 端口被占用 | 使用 lsof -i :port 查找占用进程 |
| Gunicorn 无法启动 | 检查虚拟环境是否激活,路径是否正确 |
| Nginx 502 Bad Gateway | 检查 Gunicorn 是否正常运行,日志查看 |
✅ 十、一键脚本示例(可选)
你可以将上述步骤封装为一个 Bash 脚本,自动化部署:
#!/bin/bash
set -e
echo "Updating system..."
sudo apt update && sudo apt upgrade -y
echo "Installing Python and dependencies..."
sudo apt install python3 python3-pip python3-venv nginx gunicorn -y
echo "Creating project directory..."
mkdir -p ~/myproject
cd ~/myproject
echo "Setting up virtual environment..."
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install flask gunicorn
echo "Creating test app..."
cat > app.py << 'EOF'
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello, World!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
EOF
echo "Starting Gunicorn..."
gunicorn --bind 0.0.0.0:8000 app:app &
echo "Configuring Nginx..."
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
cat > /etc/nginx/sites-available/default << 'EOF'
server {
listen 80;
server_name _;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
EOF
sudo systemctl restart nginx
echo "Deployment complete! Access http://your_server_ip"
📌 总结
| 步骤 | 说明 |
|---|---|
| 1. 登录服务器 | SSH 连接 |
| 2. 安装 Python | 使用 apt/yum 或源码编译 |
| 3. 创建虚拟环境 | 隔离依赖 |
| 4. 安装项目依赖 | pip install |
| 5. 测试应用 | 本地运行验证 |
| 6. 配置后台服务 | systemd 管理 |
| 7. 配置反向X_X | Nginx + Gunicorn |
| 8. 安全加固 | 防火墙、HTTPS、SSH 优化 |
按照以上步骤,你可以在阿里云轻量应用服务器上成功部署 Python 应用。如有具体框架(如 Django、Flask、FastAPI)或数据库需求,可进一步补充说明,我会提供更针对性的指导。
CLOUD技术博