阿里云服务器Ubuntu 22.04安装宝塔后如何配置Django?

在阿里云 Ubuntu 22.04 服务器上安装宝塔面板后配置 Django,通常有两种主流方案:通过宝塔“软件商店”一键部署(推荐新手)手动配置(适合进阶用户/需要精细控制)

以下是基于宝塔面板环境的具体操作步骤:


前置准备

  1. 登录宝塔:访问 http://你的服务器IP:8888,输入用户名密码登录。
  2. 安装基础环境
    • 进入左侧菜单 【软件商店】
    • 搜索并安装 Nginx(建议版本 1.20+)、MySQL(建议 5.7 或 8.0)或 MariaDBPython 3.9+(宝塔默认可能已预装,若未找到可手动安装)。
    • 注意:Ubuntu 22.04 对 Python 3.10+ 支持较好,宝塔通常会自动处理依赖。

方案一:使用宝塔“网站”功能自动部署(推荐)

这是最快捷的方式,宝塔会自动创建虚拟环境、配置 Nginx 和 Gunicorn/Uwsgi。

1. 创建网站

  • 点击左侧菜单 【网站】 -> 【添加站点】
  • 域名:填写你的域名(若无域名,直接填服务器 IP)。
  • 根目录:保持默认(如 /www/wwwroot/你的域名)。
  • 数据库:选择“有”,创建一个 MySQL/MariaDB 数据库,记录好账号密码。
  • PHP版本:选择 “纯静态”"Python"(如果列表中有 Python 选项),或者直接选“纯静态”后手动上传代码(推荐选纯静态,后续用 Gunicorn 运行)。
  • 点击提交。

2. 上传 Django 项目代码

  • 进入 【文件】 菜单,打开刚才创建的网站根目录。
  • 将你的 Django 项目代码(包含 manage.py, requirements.txt, myproject 文件夹等)上传到该目录。
    • 建议结构/www/wwwroot/你的域名/myproject/ (将代码放在子文件夹中,避免根目录混乱)。
  • 确保 .gitignore 中的敏感文件(如 __pycache__, *.pyc)已被忽略。

3. 安装 Python 依赖

  • 打开宝塔左侧菜单 【终端】(或 SSH 连接服务器)。
  • 切换到网站目录并创建虚拟环境:
    cd /www/wwwroot/你的域名
    python3 -m venv venv
    source venv/bin/activate
    pip install --upgrade pip
    # 安装依赖 (假设 requirements.txt 在项目根目录)
    pip install -r requirements.txt

    注意:如果代码在子目录,请 cd 进去后再执行。

4. 配置 Django (settings.py)

  • 在代码编辑器中修改 settings.py
    • ALLOWED_HOSTS:必须添加域名或 IP。
      ALLOWED_HOSTS = ['你的域名', 'localhost', '127.0.0.1']
    • STATIC_ROOTMEDIA_ROOT:确保路径正确。
    • DEBUG生产环境必须设置为 False
      DEBUG = False
    • SECRET_KEY:确保是一个随机生成的长字符串。
    • DATABASES:填入你在步骤 1 中创建的数据库信息。

5. 收集静态文件

在终端执行以下命令收集静态资源:

python manage.py collectstatic --noinput

此时,静态文件会生成在 staticfiles 目录下(或你配置的 STATIC_ROOT 路径)。

6. 启动 Django 应用 (Gunicorn)

宝塔通常推荐使用 Gunicorn 作为 WSGI 服务器。

  • 方法 A:使用宝塔面板的“进程管理”或“计划任务”启动

    • 进入 【计划任务】 -> 【添加任务】 -> 类型选 Shell
    • 名称:启动 Django
    • 执行周期:按周/天(或者手动触发,这里主要为了测试,生产环境建议配合 Supervisor)。
    • 脚本内容:
      cd /www/wwwroot/你的域名
      source venv/bin/activate
      gunicorn myproject.wsgi:application --bind 127.0.0.1:8000 --workers 4
    • 注意:将 myproject 替换为你的实际项目名称。
  • 方法 B:使用 Supervisor 管理(更稳定,推荐)

    1. 在软件商店安装 Supervisor
    2. 在 Supervisor 界面添加守护进程。
    3. 配置文件示例 (/etc/supervisor/conf.d/django.conf):
      [program:djangoproject]
      command=/www/wwwroot/你的域名/venv/bin/gunicorn myproject.wsgi:application --bind 127.0.0.1:8000 --workers 4
      directory=/www/wwwroot/你的域名
      user=root
      autostart=true
      autorestart=true
      redirect_stderr=true
      stdout_logfile=/www/wwwroot/你的域名/logs/gunicorn.log
    4. 保存后,点击 Supervisor 界面的 重载配置启动

7. 配置 Nginx 反向X_X

  • 回到宝塔 【网站】 列表,点击对应网站的 【设置】 -> 【配置文件】
  • 找到 location / 部分,修改为如下内容(确保指向 127.0.0.1:8000):

    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;
    }
    
    # 静态文件处理 (可选,如果 Django 已经 collectstatic 且由 Gunicorn 处理,可不配;但为了性能建议让 Nginx 直接托管)
    location /static/ {
        alias /www/wwwroot/你的域名/staticfiles/; # 根据实际 collectstatic 输出路径调整
        expires 30d;
        access_log off;
    }
    
    # 媒体文件处理
    location /media/ {
        alias /www/wwwroot/你的域名/media/;
        expires 30d;
        access_log off;
    }
  • 保存并重启 Nginx。

方案二:手动配置 (适合已有复杂架构)

如果你不想用宝塔的一键部署逻辑,可以完全手动操作:

  1. 安装环境:在终端手动安装 python3-pip, python3-venv, gunicorn, nginx, mysql-client
  2. 创建目录:在 /var/www/ 下建立项目目录。
  3. 上传代码:使用 FTP 工具或 scp 上传。
  4. 配置虚拟环境:同方案一的步骤 3。
  5. 配置 Supervisor:编写 systemd 服务文件或 supervisor 配置来管理 Gunicorn。
  6. 配置 Nginx:编辑 /etc/nginx/sites-available/your_domain,配置 upstream 指向本地端口,并启用该站点 (ln -s ... /etc/nginx/sites-enabled/)。
  7. 防火墙:在阿里云控制台和安全组放行 80443 端口(Django 内部监听 8000 不需要对外开放)。

常见问题排查

  1. 502 Bad Gateway

    • 检查 Gunicorn 是否正在运行 (ps aux | grep gunicorn)。
    • 检查 Nginx 错误日志 (/www/wwwlogs/你的域名_error.log),看是否能连通 127.0.0.1:8000。
    • 确认 settings.pyDEBUG=False 时,ALLOWED_HOSTS 是否正确。
  2. 权限问题

    • 如果无法写入数据库或上传文件,可能需要修改目录权限:
      chown -R www:www /www/wwwroot/你的域名
      chmod -R 755 /www/wwwroot/你的域名
  3. 安全组

    • 务必去阿里云控制台 -> 云服务器 ECS -> 安全组,确保 80 (HTTP) 和 443 (HTTPS) 端口对 0.0.0.0/0 开放。不要直接暴露 Django 的 8000 端口给公网。
  4. SSL 证书

    • 在宝塔 【网站】 -> 【SSL】 标签页,申请免费 Let’s Encrypt 证书,开启强制 HTTPS 即可。

通过以上步骤,你的 Django 应用应该可以在 Ubuntu 22.04 + 宝塔环境下稳定运行了。

未经允许不得转载:云知道CLOUD » 阿里云服务器Ubuntu 22.04安装宝塔后如何配置Django?