在服务器上运行 Python 项目通常涉及 环境配置、依赖安装、项目部署 和 进程管理。以下是详细步骤:
1. 连接服务器
确保你能通过 SSH 访问服务器:
ssh username@your_server_ip
(如果是本地测试,可跳过这一步)

2. 安装 Python 环境
2.1 检查 Python 版本
python3 --version # 或 python --version
-
如果未安装 Python 3(推荐 3.8+),使用包管理器安装:
-
Ubuntu/Debian:
sudo apt update sudo apt install python3 python3-pip python3-venv
-
CentOS/RHEL:
sudo yum install python3 python3-pip
-
2.2 可选:使用 Pyenv 管理多版本
如果需要特定 Python 版本:
curl https://pyenv.run | bash # 安装 Pyenv
echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init --path)"' >> ~/.bashrc
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
source ~/.bashrc
pyenv install 3.10.6 # 安装指定版本
pyenv global 3.10.6 # 设为默认
3. 配置虚拟环境(推荐)
避免全局依赖冲突:
python3 -m venv myprojectenv # 创建虚拟环境
source myprojectenv/bin/activate # 激活(Linux/macOS)
# Windows: myprojectenv\Scripts\activate
激活后,终端提示符会显示 (myprojectenv)
。
4. 安装项目依赖
4.1 使用 requirements.txt
如果项目有 requirements.txt
:
pip install -r requirements.txt
4.2 手动安装依赖
pip install flask django pandas # 示例
5. 运行 Python 项目
5.1 直接运行脚本
python3 app.py # 替换为你的入口文件
5.2 Web 项目(如 Flask/Django)
-
Flask:
export FLASK_APP=app.py # 设置环境变量 flask run --host=0.0.0.0 --port=5000 # 允许外部访问
-
Django:
python manage.py runserver 0.0.0.0:8000
⚠️ 注意 :以上方式仅适合开发环境!生产环境需用 Gunicorn/uWSGI + Nginx(见下文)。
6. 生产环境部署(关键步骤)
6.1 使用 Gunicorn(WSGI 服务器)
安装 Gunicorn:
pip install gunicorn
运行 Flask/Django 项目:
# Flask
gunicorn -w 4 -b 0.0.0.0:8000 app:app # app:app 表示模块名:应用实例
# Django
gunicorn -w 4 -b 0.0.0.0:8000 myproject.wsgi:application
-w 4
:4 个工作进程(根据 CPU 核心数调整)。
6.2 配置 Nginx 反向代理
安装 Nginx:
sudo apt install nginx
编辑配置文件(/etc/nginx/sites-available/myproject
):
nginx
server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://127.0.0.1:8000; # 转发到 Gunicorn
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
启用配置并重启 Nginx:
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
sudo nginx -t # 测试语法
sudo systemctl restart nginx
6.3 使用 Systemd 管理进程
创建 Systemd 服务文件(/etc/systemd/system/myproject.service
):
ini
[Unit]
Description=Gunicorn for my Python project
After=network.target
[Service]
User=ubuntu
WorkingDirectory=/path/to/your/project
ExecStart=/path/to/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app
Restart=always
[Install]
WantedBy=multi-user.target
启动服务:
sudo systemctl daemon-reload
sudo systemctl start myproject
sudo systemctl enable myproject # 开机自启
7. 其他优化
7.1 使用 Supervisor(替代 Systemd)
适合管理多个进程:
sudo apt install supervisor
配置(/etc/supervisor/conf.d/myproject.conf
):
ini
[program:myproject]
command=/path/to/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app
directory=/path/to/project
user=ubuntu
autostart=true
autorestart=true
stderr_logfile=/var/log/myproject.err.log
stdout_logfile=/var/log/myproject.out.log
启动:
bash
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start myproject
7.2 HTTPS 配置(Certbot)
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your_domain.com
证书会自动续签。
8. 常见问题
Q1:端口被占用?
sudo lsof -i :8000 # 查看占用进程
sudo kill -9 <PID> # 强制结束
Q2:如何查看日志?
-
Gunicorn 日志:
journalctl -u myproject.service
-
Nginx 日志:
/var/log/nginx/error.log
Q3:静态文件(CSS/JS)不加载?
在 Nginx 配置中添加:
nginx
location /static/ {
alias /path/to/your/static/files/;
}
Django 需运行:
bash
python manage.py collectstatic
按照以上步骤,你的 Python 项目应该能在服务器上稳定运行。如果是高流量场景,可进一步优化:
-
使用 Docker 容器化部署。
-
配置 Redis 缓存或 Celery 异步任务。
-
使用 PM2(Node.js 工具)管理 Python 进程(非主流但可行)。