Ubuntu 22.04下宝塔面板安装Python和Django的步骤?

在 Ubuntu 22.04 上通过宝塔面板(BT Panel)安装 Python 和 Django,通常不需要手动编译源码,而是利用宝塔自带的“网站”管理功能来快速部署。以下是标准操作流程:

1. 安装并配置 Python 环境

宝塔面板默认支持多版本 Python 共存,建议先安装所需的 Python 版本(推荐 3.8+)。

  1. 登录宝塔面板,进入左侧菜单的 “软件商店”
  2. 在搜索框输入 Python,找到 Python 应用(通常由宝塔官方提供)。
  3. 点击 “安装”,选择版本号(例如 Python 3.93.10),等待安装完成。
    • 注意:如果系统提示需要安装依赖库(如 gcc, make 等),请根据提示确认安装,或者在终端执行 sudo apt update && sudo apt install -y build-essential libssl-dev zlib1g-dev libncurses5-dev libreadline-dev libsqlite3-dev libbz2-dev liblzma-dev 以完善编译环境。
  4. 安装完成后,在宝塔主界面右侧可以看到已安装的 Python 版本列表。

2. 创建网站项目目录

Django 项目需要运行在 Web 服务器(Nginx/Apache)下,因此需要先创建一个网站站点。

  1. 点击左侧菜单 “网站” -> “添加站点”
  2. 填写域名(如果没有域名,可以填本地 IP 或 localhost),设置 根目录(例如 /www/wwwroot/my_django_project)。
  3. 数据库部分:Django 可以连接 MySQL/PostgreSQL,也可以先用 SQLite 测试。如果选 SQLite,后续代码中需配置 db.sqlite3;如果选 MySQL,请在下方创建对应的数据库账号。
  4. 点击 “提交” 创建站点。

3. 上传 Django 项目代码

你有两种方式将代码放入服务器:

方式 A:使用宝塔文件管理器(适合小项目)

  1. 进入 “文件” 菜单,打开刚才创建的站点根目录。
  2. 点击右上角的 “上传” 按钮,将你的 Django 项目文件夹(包含 manage.py, requirements.txt, settings.py 等)打包成 .zip 上传,然后右键解压。

方式 B:使用 SSH 命令行(推荐,适合大项目)

  1. 在宝塔左侧菜单点击 “终端” 或使用本地的 SSH 工具(如 Xshell, PuTTY)登录服务器。
  2. 切换到站点目录并拉取代码:
    cd /www/wwwroot/你的域名文件夹
    # 如果你有 git 仓库
    git clone <你的仓库地址> .
    # 或者直接上传 zip 后解压

4. 配置虚拟环境与安装依赖

为了避免污染系统 Python,建议在项目目录下创建独立的虚拟环境(Virtualenv)。

  1. 在终端中进入项目目录:
    cd /www/wwwroot/你的域名文件夹
  2. 激活宝塔安装的 Python 环境(假设你安装了 Python 3.9):
    source /www/server/panel/virtualenvs/python39/bin/activate

    注:如果不确定路径,可以在宝塔“软件商店”->"Python"详情里查看安装路径,或者直接使用系统默认的 python3 命令。

  3. 创建虚拟环境并安装依赖:

    # 创建虚拟环境
    python -m venv venv
    
    # 激活虚拟环境
    source venv/bin/activate
    
    # 升级 pip
    pip install --upgrade pip
    
    # 安装 requirements.txt (如果你有的话)
    pip install -r requirements.txt
    
    # 如果没有 requirements.txt,手动安装 Django
    pip install django gunicorn psycopg2-binary  # 如果是 MySQL 用户

5. 配置 Django Settings

确保你的 settings.py 配置正确:

  • ALLOWED_HOSTS: 必须包含你的域名或 IP。
    ALLOWED_HOSTS = ['your_domain.com', 'localhost', '127.0.0.1']
  • 静态文件配置: 确保 STATIC_ROOT 指向一个绝对路径,例如 /www/wwwroot/你的域名文件夹/staticfiles
  • 数据库配置: 如果使用 MySQL,确保 DATABASES 中的用户名、密码与宝塔创建的数据库一致。

6. 迁移数据库与收集静态文件

在虚拟环境激活状态下执行以下命令:

# 迁移数据库结构
python manage.py migrate

# 收集静态文件到 STATIC_ROOT
python manage.py collectstatic --noinput

# (可选) 如果有超级管理员需求
python manage.py createsuperuser

7. 启动服务 (Gunicorn + Nginx)

Django 不能直接处理高并发请求,需要通过 WSGI 服务器(如 Gunicorn)配合 Nginx。

方法一:使用宝塔面板图形化配置(推荐新手)

  1. 回到宝塔 “网站” 页面,点击你刚创建的站点的 “设置” -> “PHP 版本”(这里其实是用来配置反向X_X的,但宝塔对 Python 有专门的处理逻辑,通常在 “其他”“配置文件” 中)。
    • 修正:宝塔对 Python 项目的原生支持不如 PHP 直观。更稳妥的方式是手动配置 Nginx 反向X_X。

方法二:手动配置 Nginx 反向X_X(最稳定)

  1. 启动 Gunicorn(后台运行):
    在项目目录下执行:

    gunicorn your_project_name.wsgi:application --bind 127.0.0.1:8000 --workers 3

    注意:将 your_project_name 替换为你实际的项目包名(即包含 wsgi.py 的那个文件夹名)。

    为了让它在开机自启且后台运行,建议使用 Supervisor 或 systemd。宝塔面板有一个插件叫 "Supervisor",可以在软件商店安装它,然后添加守护进程来管理这个 Gunicorn 命令。

  2. 配置 Nginx

    • 进入 “网站” -> 点击站点名的 “设置” -> “配置文件”
    • location / 块中添加以下内容(替换 your_project_name 和端口):

      
      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;
      
      # 如果使用了 WebSocket
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      }

    静态文件直接由 Nginx 托管(性能更好)

    location /static/ {
    alias /www/wwwroot/你的域名文件夹/staticfiles/;
    expires 30d;
    add_header Cache-Control "public, immutable";
    }

    
    *注意:请将 `/www/wwwroot/你的域名文件夹/staticfiles/` 替换为你实际收集的静态文件路径。*
  3. 保存并重启 Nginx。

8. 验证

打开浏览器访问你的域名。如果看到 Django 的欢迎页面或你的项目首页,说明部署成功。


💡 常见问题排查

  • 权限问题:如果报错 Permission denied,尝试给项目目录赋予所有者权限:
    chown -R www:www /www/wwwroot/你的域名文件夹

    (宝塔默认 Web 用户通常是 www)

  • Gunicorn 无法启动:检查是否端口被占用,或者 wsgi.py 路径是否正确。
  • 数据库连接失败:检查 settings.py 中的密码是否正确,以及 MySQL 用户是否有远程连接权限(宝塔创建的 MySQL 用户默认允许本地连接,如果是远程部署需注意防火墙)。

通过以上步骤,你可以在 Ubuntu 22.04 上利用宝塔面板高效地运行 Django 项目。

未经允许不得转载:CLOUD云枢 » Ubuntu 22.04下宝塔面板安装Python和Django的步骤?