Ubuntu上Python如何部署应用
导读:Ubuntu上Python应用部署完整流程 一、前置准备  更新系统包:确保系统软件包为最新版本 sudo apt update && sudo apt upgrade -y 安装基础工具:安装Python、pip、git等...
    
Ubuntu上Python应用部署完整流程
一、前置准备
- 更新系统包:确保系统软件包为最新版本
 sudo apt update & & sudo apt upgrade -y
- 安装基础工具:安装Python、pip、git等必要工具
 sudo apt install python3 python3-pip python3-venv git curl -y
二、部署核心步骤
1. 上传应用代码
- Git克隆(推荐,适用于版本控制的项目):
 git clone https://github.com/your-username/your-python-app.git /opt/your-app
- SCP传输(适用于本地已有代码):
 scp -r /local/path/to/app user@your_server_ip:/opt/your-app
2. 创建并激活虚拟环境
虚拟环境可隔离项目依赖,避免全局包冲突:
cd /opt/your-app
python3 -m venv venv          # 创建虚拟环境
source venv/bin/activate     # 激活虚拟环境(激活后命令行前会显示(venv))
3. 安装项目依赖
若项目根目录有requirements.txt文件(包含Flask、Django等依赖),执行:
pip install --upgrade pip &
    &
     pip install -r requirements.txt
(若未生成requirements.txt,可通过pip freeze >
 requirements.txt生成)
4. 使用生产级WSGI服务器(以Gunicorn为例)
Python内置开发服务器(如app.run())不适合生产环境,需用Gunicorn作为WSGI服务器:
# 安装Gunicorn
pip install gunicorn
# 启动应用(假设应用入口为app.py,应用对象为app)
gunicorn -w 4 -b 127.0.0.1:8000 app:app
# 参数说明:-w 4(4个工作进程)、-b 绑定地址(127.0.0.1仅本地访问)、app:app(app.py中的Flask/Django应用对象)
5. 配置Nginx反向代理(提升性能与安全性)
Nginx可作为反向代理,处理静态文件、负载均衡及SSL加密:
# 安装Nginx
sudo apt install nginx -y
# 创建Nginx配置文件(针对你的应用)
sudo nano /etc/nginx/sites-available/your-app
# 添加以下内容(替换your_domain_or_ip为实际域名/IP)
server {
    
    listen 80;
    
    server_name your_domain_or_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;
    }
    # 可选:处理静态文件(如CSS/JS/图片)
    location /static/ {
    
        alias /opt/your-app/static/;
  # 指向应用中的静态文件目录
    }
}
    
# 启用配置(创建软链接到sites-enabled目录)
sudo ln -s /etc/nginx/sites-available/your-app /etc/nginx/sites-enabled/
# 测试Nginx配置语法
sudo nginx -t
# 重启Nginx使配置生效
sudo systemctl restart nginx
6. 设置开机自启动(确保服务稳定)
通过systemd创建服务,实现应用随系统重启自动启动:
# 创建systemd服务文件
sudo nano /etc/systemd/system/your-app.service
# 添加以下内容(替换路径、用户、组为实际值)
[Unit]
Description=Gunicorn server for Your Python App
After=network.target
[Service]
User=your_username       # 替换为你的Ubuntu用户名(如ubuntu)
Group=www-data           # 通常用www-data组(Nginx默认用户)
WorkingDirectory=/opt/your-app
Environment="PATH=/opt/your-app/venv/bin"
ExecStart=/opt/your-app/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app
Restart=always           # 崩溃后自动重启
[Install]
WantedBy=multi-user.target
# 重载systemd配置
sudo systemctl daemon-reload
# 启动服务并设置开机自启
sudo systemctl start your-app
sudo systemctl enable your-app
# 检查服务状态(确认是否运行中)
sudo systemctl status your-app
三、可选优化步骤
1. 配置防火墙(允许HTTP/HTTPS流量)
若服务器启用了UFW防火墙,需开放80(HTTP)和443(HTTPS)端口:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable  # 启用防火墙(若未启用)
2. 部署Docker容器(环境一致性)
若需确保开发与生产环境一致,可使用Docker打包应用:
# 创建Dockerfile(在应用根目录)
nano Dockerfile
# 添加以下内容(以Flask为例)
FROM python:3.9-slim
WORKDIR /app
COPY . /app
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 8000
CMD ["gunicorn", "-w 4", "-b 0.0.0.0:8000", "app:app"]
# 构建Docker镜像
docker build -t your-python-app .
# 运行Docker容器(映射80端口到宿主机)
docker run -d -p 80:8000 your-python-app
四、验证部署
打开浏览器访问http://your_domain_or_ip,若看到应用首页(如Flask的"Hello, World!"),则部署成功。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu上Python如何部署应用
本文地址: https://pptw.com/jishu/740243.html
