在 Debian 上部署 Python 服务通常有几种常见方式,从简单到生产级依次如下。你可以根据项目规模和需求选择。
sudo apt update
sudo apt upgrade -y
Debian 通常自带 Python3:
python3 --version
sudo apt install python3 python3-pip python3-venv -y
mkdir -p /opt/myproject
cd /opt/myproject
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python3 app.py
后台运行:
nohup python3 app.py > app.log 2>&1 &
⚠️ 不适合生产环境
sudo nano /etc/systemd/system/myproject.service
示例:
[Unit]
Description=My Python Service
After=network.target
[Service]
User=www-data
WorkingDirectory=/opt/myproject
ExecStart=/opt/myproject/venv/bin/python app.py
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable myproject
sudo systemctl start myproject
sudo systemctl status myproject
journalctl -u myproject -f
✅ 优点:开机自启、自动重启、日志管理方便
pip install gunicorn
gunicorn -w 4 -b 127.0.0.1:8000 app:app
ExecStart=/opt/myproject/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app
sudo apt install nginx -y
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
}
}
sudo nginx -t
sudo systemctl reload nginx
FROM python:3.11-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
docker build -t myproject .
docker run -d -p 8000:8000 myproject
python app.py 直接暴露journalctl 或 logging如果你能告诉我:
我可以给你更精确的部署方案。