我使用 Django + Nginx 设置了一个 Trusty VM(其他东西也)。
服务器正在运行,我得到了“欢迎来到 Django”页面。但是当我进入servername/admin
它时加载 HTML 页面但无法加载静态内容。
和管理页面有以下静态内容链接:
<link rel="stylesheet" type="text/css" href="/static/admin/css/base.css" />
<link rel="stylesheet" type="text/css" href="/static/admin/css/login.css" />
这两个 CSS 文件都给出 404 错误,正如 Nginx 日志所示:
192.168.56.1 - - [05/Jun/2014:12:04:09 -0300] "GET /admin HTTP/1.1" 301 5 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0"
192.168.56.1 - - [05/Jun/2014:12:04:09 -0300] "GET /admin/ HTTP/1.1" 200 833 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0"
192.168.56.1 - - [05/Jun/2014:12:04:10 -0300] "GET /static/admin/css/base.css HTTP/1.1" 404 142 "http://ubuntu-server/admin/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0"
192.168.56.1 - - [05/Jun/2014:12:04:10 -0300] "GET /static/admin/css/login.css HTTP/1.1" 404 142 "http://ubuntu-server/admin/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0"
我认为错误在于我nginx.conf文件,但不知道如何解决。这是站点树:
主要文件:urls.py
,settings.py
。
答案1
这很可能是 django 或 Nginx 中的配置问题
您需要检查两件事:
您的静态文件是否在 settings.py 中正确配置?对于基本 Django 页面,这些设置不是必需的,但对于您的静态文件,您需要配置静态文件。这对于生产用途来说不是必需的,因为 Web 服务器在那里提供静态文件。它们被收集了吗?配置完成后,您可能需要运行
python manage.py collectstatic
。例如,
#settings.py INSTALLED_APPS += [django.contrib.staticfiles,] STATIC_URL = '/static/' STATIC_ROOT = '/your_path/.../static/' # This collects all files in /static/ directories and puts them in the static ROOT folder. python manage.py collectstatic
Django 本身不提供静态文件(除非您
DEBUG=True
在 中设置settings.py
),因此您必须在引擎 x 中添加配置才能使其提供静态文件。您可能必须重新启动 nginx 和/或autoindex on;
在 nginx.conf 中为 /static/ 添加配置。
看部署静态文件。
在开发中,您可能还必须将/static/
url 添加到您的 urls.py(在开发中),而不仅仅是设置。
答案2
我遇到了同样的问题,对 nginx 配置进行轻微的更改就解决了这个问题。
这是我的用于提供静态文件的 nginx 配置:
location /static/ {
root /home/muqube/muqube_website/muqube/muqube_static_root/;
}
解决方案是用 替换root
,alias
如下所示:
location /static/ {
alias /home/muqube/muqube_website/muqube/muqube_static_root/;
}
答案3
我猜你的文件路径不对。根据服务器的说法,admin 文件夹和 static 文件夹位于同一路径中。
在 Linux 上 / 也是根路径。您的文件不在根目录中。
再次,我只是猜测,希望这会有所帮助!