Django 部署:使用 Nginx 和 提供静态文件服务
所有 Django 部署(Web 或 REST 框架)都需要设置静态文件服务,但大多数情况下这会带来麻烦。有 3-4 个步骤可以使其正常工作:
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(本教程将遵循此步骤)。
您的静态文件应该可以正常工作。重新启动 gunicorn 和 ngnix 以使所有更改生效。