在Ubuntu上部署Python项目需依次环境准备、项目上传、虚拟环境创建、依赖安装、Gunicorn启动、Nginx反向代理及Systemd服务设置,可选Docker打包,确保生产稳定运行。
Ubuntu上Python项目部署完整流程

长期稳定更新的攒劲资源: >>>点此立即查看<<<
在Ubuntu上部署Python项目,其实说白了就是一套标准流程:从环境准备、项目上传,到依赖管理、服务启动,再到反向袋里和开机自启。把这些环节串起来,就能让项目稳定跑在生产环境里。下面按步骤走一遍,每个环节都有对应的命令和注意事项。
服务器到手后的第一件事,就是确认Python环境。Ubuntu通常自带Python 3,但为了保险,还是手动装一遍,顺便把pip和虚拟环境工具也带上——虚拟环境这东西能避免全局依赖打架,省心不少。
sudo apt update
sudo apt install python3 python3-pip python3-venv -y
装完检查一下版本,确保Python 3.8以上,pip能用:
python3 --version
pip3 --version
本地项目怎么传到服务器?最常用的方式是通过scp复制整个目录,或者用Git拉取代码。这里以scp为例:
scp -r /local/project/path username@server_ip:/remote/deploy/path
上传后进入项目目录,先看看有没有requirements.txt这个文件——这是依赖清单,后面安装依赖全靠它。
在项目根目录下创建虚拟环境,把依赖装进独立空间,不污染系统全局:
python3 -m venv myenv
source myenv/bin/activate
激活后终端提示符会变成(myenv) user@server,这时候所有操作都在虚拟环境里进行。
用requirements.txt安装依赖。可以先升级pip,避免版本太旧导致兼容问题:
pip install --upgrade pip
pip install -r requirements.txt
这一步会把所有依赖装好,确保本地和服务器的环境一致。
开发阶段直接启动Flask应用测试一下:
python app.py
但生产环境不能这么干——Flask自带的服务器性能扛不住。推荐用Gunicorn,一个轻量级的WSGI服务器,性能比Flask自带的好很多:
pip install gunicorn
gunicorn -w 4 -b 127.0.0.1:8000 app:app
注意:
app:app表示app.py文件中的Flask应用实例对象,Gunicorn要依赖这个对象来启动。
Nginx是生产环境的前端服务器,负责处理静态文件、负载均衡、SSL终止,然后把动态请求转发给Gunicorn。先安装Nginx:
sudo apt install nginx -y
然后创建站点配置文件,比如/etc/nginx/sites-a vailable/myapp:
sudo nano /etc/nginx/sites-a vailable/myapp
写入以下内容(记得把your_domain_or_ip换成你的域名或IP,端口号默认8000):
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;
}
location /static/ {
alias /remote/deploy/path/static/;
}
}
启用配置并测试语法:
sudo ln -s /etc/nginx/sites-a vailable/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
为了让应用在服务器重启后自动启动,需要注册一个systemd服务。创建服务文件/etc/systemd/system/myapp.service:
sudo nano /etc/systemd/system/myapp.service
写入以下内容(路径、用户、端口根据实际情况替换):
[Unit]
Description=Gunicorn Server for My Python App
After=network.target
[Service]
User=your_username
Group=www-data
WorkingDirectory=/remote/deploy/path
Environment="PATH=/remote/deploy/path/myenv/bin"
ExecStart=/remote/deploy/path/myenv/bin/gunicorn --workers 4 --bind unix:/run/myapp.sock app:app
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
启动并启用服务:
sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
sudo systemctl status myapp
如果状态显示active (running),说明服务已经跑起来了。
如果项目依赖很复杂,或者想彻底隔离环境,可以采用Docker打包。在项目根目录下创建Dockerfile:
FROM python:3.9-slim
WORKDIR /app
COPY . .
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 8000
CMD ["gunicorn", "--workers", "4", "--bind", "0.0.0.0:8000", "app:app"]
构建镜像并运行容器:
docker build -t my-python-app .
docker run -d -p 8000:8000 --name myapp my-python-app
然后同样用Nginx反向袋里,把请求转发到localhost:8000即可。
www-data组。location /static/直接处理,避免经过Uvicorn/Gunicorn。certbot)申请免费证书,给站点加上HTTPS,安全又专业。以上流程基本覆盖了Ubuntu上Python项目从环境准备到生产部署的完整链路。根据项目类型(Flask、Django、FastAPI)可能有些细节差异,但核心思路是一样的。照着走一遍,项目就能稳稳上线。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述