首先确保Debian系统为最新状态,并安装Python运行及包管理所需的工具:
sudo apt update && sudo apt upgrade -y # 更新系统包
sudo apt install python3 python3-pip python3-venv git nginx -y # 安装Python、pip、虚拟环境工具、git及Nginx
验证安装:
python3 --version # 确认Python版本(建议3.8及以上)
pip3 --version # 确认pip版本
为避免项目依赖与系统Python环境冲突,强烈推荐使用虚拟环境:
mkdir myproject && cd myproject # 创建项目目录
python3 -m venv venv # 创建虚拟环境(venv为目录名,可自定义)
source venv/bin/activate # 激活虚拟环境(激活后终端提示符会显示venv前缀)
requirements.txt(包含项目所需Python包及版本,如flask==2.3.2),可直接安装;若没有,需通过pip freeze生成:pip install -r requirements.txt # 安装依赖(若无requirements.txt,先创建)
pip freeze > requirements.txt # 生成依赖清单(用于后续环境复现)
poetry(更现代化的依赖管理工具)替代pip:curl -sSL https://install.python-poetry.org | python3 - # 安装poetry
poetry init # 初始化项目(交互式填写项目元数据)
poetry add package_name # 添加依赖(如poetry add flask)
poetry install # 安装所有依赖(自动生成poetry.lock锁定版本)
python app.py # Flask示例(需app.py中有app.run())
python manage.py runserver # Django示例
pip install gunicorn # 安装Gunicorn
gunicorn -w 4 -b 127.0.0.1:8000 app:app # 启动(-w指定工作进程数,-b指定绑定地址,app:app为模块与应用实例)
Nginx负责处理HTTP请求并转发给Gunicorn,提升并发性能与安全性:
sudo nano /etc/nginx/sites-available/myproject # 新建配置文件
your_domain_or_ip为实际域名/IP):server {
listen 80;
server_name your_domain_or_ip; # 绑定域名或IP
location / {
proxy_pass http://127.0.0.1:8000; # 转发到Gunicorn
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直接处理(提升性能)
location /static/ {
alias /path/to/yourproject/static/; # 静态文件目录
}
}
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled # 启用配置
sudo nginx -t # 测试配置语法(无错误则继续)
sudo systemctl restart nginx # 重启Nginx
确保Gunicorn在系统重启后自动启动,并在后台运行:
sudo nano /etc/systemd/system/myproject.service # 新建服务文件
[Unit]
Description=Gunicorn daemon for myproject
After=network.target
[Service]
User=your_username # 替换为你的Linux用户名
Group=www-data # Nginx默认用户(避免权限问题)
WorkingDirectory=/path/to/yourproject # 项目根目录
ExecStart=/path/to/yourproject/venv/bin/gunicorn -c /path/to/yourproject/gunicorn_config.py app:app # Gunicorn启动命令
Restart=always # 崩溃后自动重启
[Install]
WantedBy=multi-user.target
sudo systemctl start myproject # 启动服务
sudo systemctl enable myproject # 设置开机自启
sudo systemctl status myproject # 查看服务状态(确认运行中)
使用Let’s Encrypt获取免费SSL证书,启用HTTPS:
sudo apt install certbot python3-certbot-nginx -y # 安装Certbot
sudo certbot --nginx -d your_domain_or_ip # 自动配置Nginx HTTPS
按照提示完成证书申请(需验证域名所有权),Certbot会自动修改Nginx配置以支持HTTPS。
打开浏览器访问http://your_domain_or_ip(或https://,若配置了SSL),应能看到Python应用正常运行。若为动态应用(如Flask),可通过访问/health等接口确认后端服务状态。
以上流程覆盖了Debian系统上Python项目从环境准备到生产部署的关键步骤,可根据项目具体需求(如使用Django、FastAPI等框架)调整配置细节。