Django 部署:使用 Nginx 和 提供静态文件服务

所有 Django 部署(Web 或 REST 框架)都需要设置静态文件服务,但大多数情况下这会带来麻烦。有 3-4 个步骤可以使其正常工作:

  • 进入Django项目settings.py进行设置
  • 设置到 Nginx 配置文件中
  • 收集所有静态文件
  • (可选)移动静态文件
  • 1.进入Django项目settings.py进行设置

    默认和大多数教程建议在项目的 settings.py 中进行以下配置

    STATIC_URL = "static/"
    
    import os
    
    STATIC_ROOT = os.path.join(BASE_DIR, "static/")

    对于此示例,我们采用相同的配置。

    注意:我们假设您已经设置好 nginx 并正在运行它。在本例中,nginx 在 AWS 的 EC2 上运行。

    2. 设置Nginx配置文件

    在您的 Nginx 服务器配置块中,您将具有以下(或类似的,取决于 /static 的路径)配置来提供静态文件。

    注意:建议将静态文件夹放在 Ngnix 可以顺利控制的位置。例如 /var/www/

    location /static/ {
    root /var/www/PROJECT_NAME;
    }

    3. 收集所有静态文件

    要收集静态文件,请运行以下命令:

    $python manage.py collectstatic

    collectstatic 的输出取决于步骤 1 中给定的路径。即 (STATIC_ROOT = os.path.join(BASE_DIR, "static/")

    因此,输出将存储在项目根目录中。

    4. (可选)移动静态文件

    如果 collectstatic 和 nginx 配置的路径相同,则此步骤是可选的。否则,我们需要将 /static 文件夹移动到 /var/www/PROJECT_NAME(本教程将遵循此步骤)。

  • 在 /var/www/ 创建项目文件夹(需要 root 权限,因此使用 sudo)var/www$sudo mkdir project_name
  • 将静态从您的项目移动到 /var/www/project_name project_name/$ sudo mv -r static/ /var/www/project_name
  • 您的静态文件应该可以正常工作。重新启动 gunicorn 和 ngnix 以使所有更改生效。