如何将Python项目部署到云服务器上?

将 Python 项目部署到云服务器是一个系统性的过程,下面我为你梳理一个通用、清晰的步骤指南(以 Linux 云服务器为例,如 Ubuntu/Alibaba Cloud/ECS):


✅ 一、准备工作

1. 选择并配置云服务器

  • 购买云服务器(推荐 Ubuntu 20.04+ 或 CentOS 7+)
  • 安装必要基础工具:
    sudo apt update && sudo apt upgrade -y
    sudo apt install python3 python3-pip git nginx curl -y

2. 准备你的 Python 项目

确保项目包含以下关键文件:

  • requirements.txt(依赖清单,用 pip freeze > requirements.txt 生成)
  • 启动脚本(如 app.pymain.py 或 WSGI 入口文件)
  • 配置文件(数据库连接、密钥等——切勿硬编码敏感信息!

🔐 安全提示:使用环境变量管理密钥(如 SECRET_KEY, DB_PASSWORD),避免提交到 Git。


✅ 二、上传项目到服务器

方法 A:Git 拉取(推荐)

# 在服务器上创建目录
mkdir ~/myproject
cd ~/myproject

# 克隆代码(需提前配置 SSH 密钥)
git clone <your-repo-url> .

方法 B:SCP / SFTP 传输

# 本地执行
scp -r ./project/* user@your-server-ip:/home/user/myproject/

✅ 三、搭建运行环境

1. 创建虚拟环境(隔离依赖)

python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

2. 安装 Web 服务器 & WSGI 容器

方案 A:Gunicorn + Nginx(生产环境主流)

sudo apt install gunicorn -y
# 测试 Gunicorn 是否可用
gunicorn --bind 127.0.0.1:8000 myapp:app
# (假设 Flask/Django 主模块为 myapp,应用对象为 app)

方案 B:Docker(更灵活,适合微服务)

# Dockerfile 示例
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "myapp:app"]

构建并运行:

docker build -t mypythonapp .
docker run -d -p 8000:8000 mypythonapp

✅ 四、配置进程守护(让服务开机自启)

使用 systemd(推荐)

创建服务文件 /etc/systemd/system/myproject.service

[Unit]
Description=My Python Project
After=network.target

[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/myproject
Environment="PATH=/home/ubuntu/myproject/venv/bin"
ExecStart=/home/ubuntu/myproject/venv/bin/gunicorn --workers 3 --bind unix:myproject.sock myapp:app

[Install]
WantedBy=multi-user.target

启用并启动:

sudo systemctl daemon-reload
sudo systemctl enable myproject
sudo systemctl start myproject
sudo systemctl status myproject

💡 若使用 Unix socket(.sock),Nginx 将通过它转发请求;也可直接绑定 0.0.0.0:8000(不推荐用于高并发)。


✅ 五、配置 Nginx 反向X_X(可选但强烈推荐)

编辑 /etc/nginx/sites-available/myproject

server {
    listen 80;
    server_name your-domain.com;  # 替换为你的域名

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/ubuntu/myproject/myproject.sock;
    }

    location /static {
        alias /home/ubuntu/myproject/static/;
    }
}

启用站点:

sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

🌐 记得在 DNS 中将域名指向服务器 IP,并配置 SSL(可用 Let’s Encrypt + Certbot):

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your-domain.com

✅ 六、监控与维护建议

项目 工具/方法
日志查看 journalctl -u myproject -f 或自定义 logging 输出到文件
健康检查 添加 /health 接口,配合 Nginx proxy_next_upstream 或外部监控(如 Uptime Kuma)
自动更新 结合 CI/CD(GitHub Actions + SSH 脚本)实现一键部署
备份 定期备份数据库 + 静态资源(rsync / AWS S3 / 阿里云 OSS)

🚀 快速验证清单

✅ 访问 http://your-server-ip → 应看到应用首页
curl http://localhost:8000/health → 返回 200 OK
systemctl status myproject → active (running)
✅ 修改代码后重启:sudo systemctl restart myproject → 生效


需要我根据你的具体框架(Flask / Django / FastAPI)、云厂商(阿里云/AWS/腾讯云)或是否需要 Docker/K8s 进一步定制方案吗?欢迎告诉我细节 😊

未经允许不得转载:CLOUD云枢 » 如何将Python项目部署到云服务器上?