CSS-файлы не отображаются на рабочем сервере - PullRequest
0 голосов
/ 03 декабря 2011

Мои css-файлы не работают в Production server.Ive развернут с использованием WSGI.Не могли бы вы исправить мою проблему?Спасибо css link

<link href="{{ MEDIA_URL}}css/style.css" rel="stylesheet" type="text/css" />

settings.py

CURRENT_PATH = '/home/nibbler/code/project/
MEDIA_ROOT = os.path.join(CURRENT_PATH, 'templates/media')

MEDIA_URL = '/media/'
TEMPLATE_DIRS = (
    os.path.join(CURRENT_PATH, 'templates/temp_name'),
)

site-available\default

<VirtualHost *:80>
    ServerAdmin me@me.com
    ServerName project.org
    DocumentRoot "/home/nibbler/code/project/"
    ServerName localhost
    ErrorLog "/home/nibbler/code/project/logs/apache-error.log"
    CustomLog "/home/nibbler/code/project/logs/apache-access.log" common

    Options ExecCGI FollowSymLinks MultiViews

    AddHandler wsgi-script .wsgi
    WSGIDaemonProcess nibbler
    WSGIProcessGroup nibbler

    Alias /media /home/nibbler/code/project/templates/media/
    WSGIScriptAlias / /home/nibbler/code/project/apache/django.wsgi

    DirectoryIndex index.html index.cgi

    AddHandler cgi-script .cgi .pl
</VirtualHost>

urls.py

if settings.DEBUG:
    # static files (images, css, javascript, etc.)
    urlpatterns += patterns('',
        (r'^media/(?P<path>.*)$', 'django.views.static.serve', {
        'document_root': settings.MEDIA_ROOT}))

Ответы [ 2 ]

1 голос
/ 03 декабря 2011

У вас есть:

Alias /media /home/nibbler/code/project/templates/media/

неправильно для начала. Попробуйте:

Alias /media/ /home/nibbler/code/project/templates/media/

Они должны либо иметь косую черту, либо не иметь ее. У вас не может быть одного, а у другого - нет.

Кстати, имея:

DocumentRoot "/home/nibbler/code/project/"

плохая идея. Не устанавливайте DocumentRoot там, где находится ваш код. Если бы вы по какой-то причине удалили WSGISriptAlias, весь ваш код мог бы быть загружен внешними людьми.

Вам также не хватает блока Directory с директивой Allow для того, где присутствуют файлы сценариев WSGI и статические файлы. Это означает, что вы за пределами этого виртуального хоста каким-то образом изменили конфигурацию Apache, чтобы сказать, что Apache может обслуживать файлы из любого каталога на вашем компьютере, что является плохой идеей, так как он устраняет один уровень безопасности.

0 голосов
/ 03 декабря 2011

У вас проблемы только с файлами CSS или со всеми медиафайлами?

MEDIA_ROOT - должен быть полный путь к вашим файлам в системе, и, кажется, он у вас есть, так что все в порядке.MEDIA_URL - попробуйте указать полный URL-адрес медиа-файлов.Попробуйте связаться с ними вручную, указав полный URL-адрес, и посмотрите, правильно ли их обслуживает веб-сервер.Если да, то укажите полный URL-адрес MEDIA_URL.

Последнее, что вы показали с if settings.DEBUG, в производстве не требуется.Вы действительно хотите установить DEBUG = False на производственном сервере.

Кстати, Django предлагает иметь два виртуальных хоста - один для самого приложения Django, другой для носителя (где вы обслуживаете только статический контент напрямуюhttp-сервер, там нет динамических вещей).

Надеюсь, это немного помогло ...

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