Djangopipe理员不工作/丑 – 与nginx和gunicorn服务

我在Ubuntu EC2实例上运行nginx,gunicorn,django。 整个网站运行良好。 除了pipe理员。 pipe理员显示不正确。 我运行了“python manage.py collectstatic”并编辑了STATIC_ROOT和STATIC_URL。 当我加载pipe理页面,这是丑陋的,但是当我检查源,CSS文件位于他们应该

<title>Site administration | Django site admin</title> <link rel="stylesheet" type="text/css" href="http://staticfiles.mydomain.com/static/admin/css/base.css" /> <link rel="stylesheet" type="text/css" href="http://staticfiles.mydomain.com/static/admin/css/dashboard.css" /> 

我可以看看nginx的access.log,看看文件正在请求和交付,但页面不能正常显示。 这就像文件正在接收,但没有处理。 错误日志是干净的。

解决了

在Chrome开发者工具的控制台标签下,我注意到了以下几点:

 Resource interpreted as Script but transferred with MIME type text/plain: "http://staticfiles.<mydomain>.com/static/admin/js/jquery.min.js". 

所以文件被传送到浏览器,但它不知道如何处理它们。 要解决这个问题,我不得不编辑nginx.conf文件,并指定几个目录的默认types…

 location /static/admin/js/ { default_type text/javascript; alias /home/ubuntu/webapps/<myproject>/static/admin/js/; } location /static/admin/css/ { default_type text/css; alias /home/ubuntu/webapps/<myproject>/static/admin/css/; } 

固定它; Django的pipe理员加载样式表和JavaScript文件,看起来和正常运行。 我希望这可以帮助别人。

我的解决办法

1.step

settings.py编辑

 from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP STATIC_ROOT = "/opt/venv/myDjangoProject/static/" STATICFILES_FINDERS = ( 'django.contrib.staticfiles.finders.AppDirectoriesFinder', 'django.contrib.staticfiles.finders.FileSystemFinder', ) TEMPLATE_CONTEXT_PROCESSORS = TCP + ( 'django.core.context_processors.request', ) 

2.step

在终端运行collesctstatic 🙂

 python manage.py collectstatic 

解决这个问题的正确方法是添加include /etc/nginx/mime.types; 在nginx配置文件的http部分。