【问题标题】:Django Nginx Staticfiles not showing in AWSDjango Nginx 静态文件未在 AWS 中显示
【发布时间】:2019-04-13 00:19:44
【问题描述】:

我有一个添加到 AWS 的 Django 项目。在开发服务器中,该站点运行良好,但是我无法将静态文件获取到我的 aws 站点

下面是我的项目树,静态文件在项目中

下面是我的 settings.py

下面是我的 nginx 服务器

下面是我的supervisor.conf

[program:Khal]
command = /home/samir/KhalEventsVenv/bin/uwsgi --http :9000 --wsgi-file /home/samir/khal-events/src/Khal/Khal/wsgi.py
directory = /home/samir/khal-events/src/Khal/
user = root
autostart = true
autorestart = true
stdout_logfile = /var/log/Khal.log
stderr_logfile = /var/log/Khal_err.log

把 nginx 改成

server {
    listen 80 default_server;

    location /static/admin {
        alias /home/samir/KhalEventsVenv/lib/python3.6/site-packages/django/contrib/admin/static/admin;

    }

    location /static/ {
        alias /home/samir/khal-events/src/Khal/staticfiles;

    }

页面仍然没有得到静态,见下图

我已经检查了路径。他们很好。但是由于某种原因,当我从 AWS 运行该站点时,当我进入管理页面时也没有获取静态文件。管理员的静态文件也不在那里。如何在 AWS 中获取我的静态文件

正如@CoolestNerdIII 所建议的那样

【问题讨论】:

  • 您是否在服务器上运行过python manage.py collectstatic 命令?有关详细信息,请参阅docs
  • @Anto 我刚刚在问题中添加了我的supervisor.conf 文件。要运行服务器,我会 supervisorctl restart all
  • 如果您对服务器有 ssh 访问权限,只需到那里并在正确的目录中运行 python manage.py collectstatic,然后重新启动您的 wsgi 服务器。
  • @Anto 我做了 collectstatic 我更新了相关终端的图像。但仍然没有显示静态文件
  • 您的静态文件(您在哪里收集静态文件)与 nginx 指向的位置不同

标签: django nginx amazon-ec2 django-staticfiles django-static


【解决方案1】:

看起来好像在您的 django 设置文件中,您将静态文件目录定义为/home/samir/khal-events/src/Khal/staticfiles(基于您的collectstatic 命令和settings.py 文件的屏幕截图)。

但是,在您的 nginx 配置文件中,您正在寻找 home/samir/khal-events/src/Khal/static 内的静态目录。您需要将其更改为正确的路径,并且您应该一切顺利。 (意思是使用/home/samir/khal-events/src/Khal/staticfiles


更新#1:

您应该从您的 nginx 中删除 /static/admin。此外,您可以尝试使用/static/ 复制您的/static 组。确保在进行更改后重新启动 nginx 服务。

最后,如果这些都无法正确显示页面,请检查 Web 浏览器中的控制台日志以及 nginx 日志,因为它们通常指向信息加载不正确的位置。


更新 #2:

location /static/ {
    alias /home/samir/khal-events/src/Khal/staticfiles;
}

location /static {
    alias /home/samir/khal-events/src/Khal/staticfiles;
}

【讨论】:

  • 更改了 nginx 中的静态,见上图也运行了 collectstatic 命令,但管理页面仍然很奇怪,即使在正常站点中也没有导入静态
  • @SamirTendulkar 我更新了我的答案并尝试了一些东西。
  • 我已根据您的建议更改了我的 nginx,并在上面的问题中对其进行了更新。看起来对吗?我打算用sudo systemctl restart nginx重新启动nginx
  • 试过你的代码也试过location /static/ { alias /home/samir/khal-events/src/Khal/staticfiles; } location /static { alias /home/samir/khal-events/src/Khal/staticfiles/; }还是一样还在第二条路径中尝试了额外的/
  • 您是否查看了 nginx 日志并在浏览器中查找控制台错误?
【解决方案2】:

对我有用的只是将 root 更改为 alias 我希望这会有所帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-29
    • 2021-05-30
    • 2013-09-14
    • 2012-06-03
    • 1970-01-01
    • 2016-09-24
    • 2018-08-23
    • 2014-06-07
    相关资源
    最近更新 更多