Как мне заставить этот Django CSS правильно отображаться в моей производственной среде? - PullRequest
0 голосов
/ 21 марта 2012

Я пытаюсь развернуть приложение Django в производственной среде, и я не могу заставить CSS правильно отображаться.В моем местном окружении это работает отлично.В настройках я установил:

STATIC_URL = '/static/'
ADMIN_MEDIA_PREFIX = '/static/admin/'

На сервере я запустил collectstatic, чтобы собрать файлы в следующую папку:

STATIC_ROOT = '/sites/thetweethereafter.com/public/static'

Веб-сервер - nginx, иМой файл nginx.conf:

events {
    worker_connections  1024;
}
http {
    server {
      listen 80;
      server_name www.thetweethereafter.com;
      rewrite ^/(.*) http://thetweethereafter.com/$1 permanent;
    }

    server {
      listen 80;
      server_name thetweethereafter.com;

      access_log /sites/thetweethereafter.com/logs/access.log;
      error_log /sites/thetweethereafter.com/logs/error.log;

      location /static {
          autoindex on;
          root /sites/thetweethereafter.com/public/;
      }

      location / {
        proxy_pass http://127.0.0.1:29000;
      }
    }
}

Если я перехожу непосредственно к статическим файлам, я могу получить их без проблем.

http://thetweethereafter.com/static/css/styles.css

Однако, когда язагрузите страницу, которая ссылается на один из этих файлов, браузер не отображает их.

http://thetweethereafter.com

Я не могу понять, что я делаю неправильно.У меня есть много других проектов, созданных подобным образом, и они работают нормально.Чего мне не хватает?

Ответы [ 3 ]

6 голосов
/ 21 марта 2012

Проверка индекса вашего веб-сайта. Я заметил, что файлы css представлены как «text / plain» вместо типа «text / css». Так что проблема должна зависеть от конфигурации сервера.

Nginx должен знать, какой тип MIME применяется в соответствии с расширением файла. При новой установке Debian в разделе http есть директива include:

http {
[...]
   include /etc/nginx/mime.types;
[...]
}

Это должно сработать.

2 голосов
/ 02 июля 2013

У меня была точно такая же проблема раньше.Чтобы решить это для CSS и других внешних статических файлов:

  1. Отредактируйте файл mime.types (или создайте его, если он не существует).(Ваш файл mime.types, вероятно, находится в / etc / nginx /)

  2. Скопируйте и вставьте его (цитата из http://wiki.nginx.org/FullExample):

    types { text/html html htm shtml; text/css css; text/xml xml rss; image/gif gif; image/jpeg jpeg jpg; application/x-javascript js; text/plain txt; text/x-component htc; text/mathml mml; image/png png; image/x-icon ico; image/x-jng jng; image/vnd.wap.wbmp wbmp; application/java-archive jar war ear; application/mac-binhex40 hqx; application/pdf pdf; application/x-cocoa cco; application/x-java-archive-diff jardiff; application/x-java-jnlp-file jnlp; application/x-makeself run; application/x-perl pl pm; application/x-pilot prc pdb; application/x-rar-compressed rar; application/x-redhat-package-manager rpm; application/x-sea sea; application/x-shockwave-flash swf; application/x-stuffit sit; application/x-tcl tcl tk; application/x-x509-ca-cert der pem crt; application/x-xpinstall xpi; application/zip zip; application/octet-stream deb; application/octet-stream bin exe dll; application/octet-stream dmg; application/octet-stream eot; application/octet-stream iso img; application/octet-stream msi msp msm; audio/mpeg mp3; audio/x-realaudio ra; video/mpeg mpeg mpg; video/quicktime mov; video/x-flv flv; video/x-msvideo avi; video/x-ms-wmv wmv; video/x-ms-asf asx asf; video/x-mng mng; }

  3. Затем вставьте в раздел http файла nginx.conf (находится в / etc / nginx /):

    include /etc/nginx/mime.types; (или любой другой путьведет к вашему файлу mime.types)

  4. Наконец, перезагрузите nginx.conf, введя в командной строке:

    sudo /etc/init.d/nginx reload

  5. Я бы также перезапустил nginx:

    sudo /etc/init.d/nginx restart

РЕДАКТИРОВАТЬ: я не знаю, почему мой фрагмент кода вышеотформатирован так странно. Извинения.

0 голосов
/ 21 марта 2012

Убедитесь, что ваше правило location /static предшествует правилу location / в вашей конфигурации nginx.Вот мой, например:

server {

        listen   81; ## listen for ipv4

        server_name  172.27.111.152;
        root /opt/projects/msv/www;

        access_log  /var/log/nginx/msv.access.log;

        location /static {
                root /opt/projects/msv/www;
        }
        location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov) {
               access_log   off;
               expires      30d;
        }
        location / {
                uwsgi_pass 127.0.0.1:3002;
                include uwsgi_params;
        }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...