ubuntu

Python项目Ubuntu如何部署

小樊
47
2025-09-25 07:21:07
栏目: 编程语言

Python项目在Ubuntu上的部署流程

1. 准备基础环境

首先更新系统包列表并安装Python3及pip(Python包管理工具),确保系统具备Python运行环境:

sudo apt update
sudo apt install python3 python3-pip python3-venv -y

验证安装版本:

python3 --version  # 确认Python版本(建议3.6+)
pip3 --version     # 确认pip版本

2. 创建并激活虚拟环境

使用venv模块创建项目专属虚拟环境,隔离项目依赖避免全局污染:

cd /path/to/your_project  # 进入项目目录
python3 -m venv myenv     # 创建虚拟环境(myenv为环境名称,可自定义)
source myenv/bin/activate # 激活虚拟环境(激活后命令行前缀显示环境名)

⚠️ 注意:后续所有操作需在激活的虚拟环境中进行,避免依赖冲突。

3. 安装项目依赖

将项目依赖包及其版本记录在requirements.txt文件中(若项目已有该文件),通过pip批量安装:

pip install -r requirements.txt  # 安装所有依赖

若项目未生成requirements.txt,可通过以下命令生成(需在虚拟环境中):

pip freeze > requirements.txt  # 导出当前环境依赖到文件

4. 运行项目

根据项目类型选择运行方式:

5. 配置生产级WSGI服务器

生产环境需使用高性能WSGI服务器(如Gunicorn),替代内置开发服务器:

pip install gunicorn  # 安装Gunicorn

以Flask应用为例(假设应用入口为app.py中的app对象),启动Gunicorn:

gunicorn -w 4 -b 127.0.0.1:8000 app:app  # -w指定工作进程数,-b指定绑定地址

或通过Systemd创建守护进程(确保应用随系统启动):

sudo nano /etc/systemd/system/myapp.service  # 创建服务文件

写入以下内容(替换路径和用户):

[Unit]
Description=Gunicorn Server for My Python App
After=network.target

[Service]
User=ubuntu  # 替换为你的系统用户
Group=www-data
WorkingDirectory=/path/to/your_project
ExecStart=/path/to/your_project/myenv/bin/gunicorn --workers 4 --bind unix:/run/myapp.sock app:app
Restart=always

[Install]
WantedBy=multi-user.target

保存后启动服务:

sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp  # 设置开机自启

6. 配置Nginx反向代理

Nginx作为反向代理,负责转发外部请求到Gunicorn,并提供静态文件服务:

sudo apt install nginx -y  # 安装Nginx

创建或修改Nginx配置文件(如/etc/nginx/sites-available/myapp):

sudo nano /etc/nginx/sites-available/myapp

写入以下内容(替换域名/IP和端口):

server {
    listen 80;
    server_name your_domain_or_ip;  # 替换为你的域名或服务器IP

    location / {
        include proxy_params;
        proxy_pass http://unix:/run/myapp.sock;  # 转发到Gunicorn的Unix socket
    }

    # 可选:配置静态文件目录(需在Django/Flask中设置STATIC_ROOT)
    location /static/ {
        alias /path/to/your_project/static/;  # 替换为静态文件目录
    }
}

启用配置并重启Nginx:

sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/  # 创建符号链接
sudo nginx -t  # 测试配置语法
sudo systemctl restart nginx  # 重启Nginx

7. 配置防火墙(可选但推荐)

若服务器启用了UFW防火墙,需允许HTTP(80)和HTTPS(443)流量:

sudo ufw allow 'Nginx Full'  # 允许HTTP和HTTPS
sudo ufw enable              # 启用防火墙(若未启用)

8. 验证部署

在浏览器中访问http://your_domain_or_ip,若看到应用页面则表示部署成功。

可选优化步骤

0
看了该问题的人还看了