Ubuntu Python项目部署与运行完整流程
Ubuntu 20.04及以上版本默认安装Python 3.8+,但需确认版本并安装pip(Python包管理工具):
# 检查Python 3版本
python3 --version
# 检查pip 3版本
pip3 --version
# 若未安装pip,通过apt安装
sudo apt update && sudo apt install python3-pip -y
虚拟环境是避免项目依赖冲突的关键,推荐使用Python自带的venv模块:
# 进入项目目录(示例:~/python_projects/my_project)
mkdir -p ~/python_projects/my_project && cd ~/python_projects/my_project
# 创建虚拟环境(生成venv文件夹)
python3 -m venv venv
# 激活虚拟环境(终端提示符前显示(venv))
source venv/bin/activate
# 退出虚拟环境(后续步骤完成后执行)
# deactivate
requirements.txtrequirements.txt是项目依赖的清单,需在开发环境中生成:
# 在开发环境中生成requirements.txt(包含所有依赖及版本)
pip freeze > requirements.txt
部署时,通过以下命令快速安装所有依赖:
pip install -r requirements.txt
# 安装Poetry
curl -sSL https://install.python-poetry.org | python3 -
# 初始化项目(生成pyproject.toml)
poetry init
# 添加依赖(如flask)
poetry add flask
# 安装所有依赖(自动创建虚拟环境)
poetry install
根据项目类型选择运行方式:
直接执行脚本文件:
python your_script.py
FLASK_APP环境变量):export FLASK_APP=app.py # 替换为你的主文件
flask run --host=0.0.0.0 # 允许外部访问
python manage.py runserver 0.0.0.0:8000
开发环境运行后,需用Gunicorn(WSGI服务器)替代Flask/Django内置服务器,提升性能;用Nginx作反向代理,处理静态文件与负载均衡。
在虚拟环境中安装Gunicorn:
pip install gunicorn
以4个工作进程启动应用(假设应用入口为app:app,即Flask/Django的主文件与应用实例):
gunicorn -w 4 -b 127.0.0.1:8000 app:app
/etc/nginx/sites-available/myproject):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;
}
# 可选:处理静态文件(需在Django/Flask中配置STATIC_ROOT)
location /static/ {
alias /path/to/your/static/files/;
}
}
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
sudo nginx -t # 测试配置语法
sudo systemctl restart nginx
确保应用在服务器重启后自动运行,创建Systemd服务文件:
sudo nano /etc/systemd/system/myproject.service
写入以下内容(替换路径与用户):
[Unit]
Description=My Python Project
After=network.target
[Service]
User=your_username # 替换为你的用户名
WorkingDirectory=/path/to/your/project # 替换为项目路径
ExecStart=/path/to/your/project/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.service
sudo systemctl enable myproject.service # 开机自启
# 检查服务状态
sudo systemctl status myproject.service
Docker可打包应用及依赖,确保环境一致性:
在项目根目录创建Dockerfile:
# 使用官方Python镜像
FROM python:3.9-slim
# 设置工作目录
WORKDIR /app
# 复制项目文件
COPY . /app
# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt
# 暴露端口
EXPOSE 80
# 运行Gunicorn
CMD ["gunicorn", "-w 4", "-b 0.0.0.0:80", "app:app"]
# 构建镜像(标签为myproject:latest)
docker build -t myproject .
# 运行容器(映射80端口到主机)
docker run -d -p 80:80 --name myproject_container myproject
通过以上步骤,即可在Ubuntu上完成Python项目的部署与运行,涵盖从环境配置到生产优化的完整流程。