2013-09-30 1 views
1

У меня возникли проблемы с обслуживанием статических файлов на моем сервере разработки. Я настроил его следующим образом. Это в моем файле settings.py:Проблемы с обслуживанием статических файлов только на сервере разработки

STATIC_URL = '/static/' 
if socket.gethostname() == 'production_server': 
    STATIC_ROOT = "/var/www/html/static/" 
else: 
    STATIC_ROOT = os.path.join(PROJECT_DIR, 'static') 

Я нахожу пару вещей любопытным об этом:

  1. Все отлично работает на сервере.
  2. На сервере разработки, я получаю ошибки 404 для моих собственных файлов, но не админ файлы ...

    http://localhost:8000/static/media/default.cssFailed to load resource: the server responded with a status of 404 (NOT FOUND) 
    http://localhost:8000/static/media/javascript/pipe.jsFailed to load resource: the server responded with a status of 404 (NOT FOUND) 
    http://localhost:8000/static/media/javascript/imdb_form.jsFailed to load resource: the server responded with a status of 404 (NOT FOUND) 
    http://localhost:8000/static/media/pipe-img/wb-mpi-logo.pngFailed to load resource: the server responded with a status of 404 (NOT FOUND) 
    http://localhost:8000/static/media/pipe-img/wb-mpi-logo-large.pngFailed to load resource: the server responded with a status of 404 (NOT FOUND) 
    

... из этого шаблона ...

<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}media/default.css" media="screen"/> 
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}admin/css/forms.css" /> 
<link rel="shortcut icon" href="{{ STATIC_URL }}media/pipe-img/favicon.ico" type="image/x-icon" /> 
<link rel="icon" href="{{ STATIC_URL }}media/pipe-img/favicon.ico" type="image/x-icon"> 
<script type="text/javascript" src="{% url 'django.views.i18n.javascript_catalog' %}"></script> 
<script type="text/javascript" src="{{ STATIC_URL }}admin/js/core.js"></script> 
<script type="text/javascript" src="{{ STATIC_URL }}admin/js/admin/RelatedObjectLookups.js"></script> 
<script type="text/javascript" src="{{ STATIC_URL }}admin/js/jquery.js"></script> 
<script type="text/javascript" src="{{ STATIC_URL }}admin/js/jquery.init.js"></script> 
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js'></script> 
<script type="text/javascript" src="{{ STATIC_URL }}media/javascript/pipe.js"></script> 
<script type="text/javascript" src="{{ STATIC_URL }}media/javascript/imdb_form.js"></script> <!-- FUTURE: call from IMDB widget? --> 

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

Наконец, я также заметил, что если я запустил ./manage.py collectstatic, он собирает только файлы администратора в мой каталог STATIC_ROOT, а не медиафайлы моего приложения. Более того, даже если я уничтожу каталог STATIC_ROOT, ссылки администратора все еще работают.

Как я могу работать с этими 404 ошибками и получать все мои статические файлы правильно?

+0

Покажите нам свое определение project_dir – lalo

+0

Это 'project_dir = os.path.dirname (os.path.abspath (__ __ файл))', что переводится каталог моего приложения. – mobopro

+0

Говорит ли что-нибудь на сервере вывод/журнал о том, почему файлы не найдены? –

ответ

1

Установите переменную STATICFILES_DIRS в settings.py, чтобы указать путь к статическим активам. Это должно привести к их при работе ./manage.py runserver с DEBUG = True

Также я хотел бы использовать среду вары расширить кортеж для STATICFILES_DIRS

if os.environ['deploy_type'] == 'prod': 
    STATICFILES_DIRS += ("/var/www/html/static/",) 
else: 
    STATICFILES_DIRS += (os.path.join(PROJECT_DIR, 'static'),) 

Вы можете иметь ваши переменные окружения установлены как часть процесса развертывания и оказания помощи в том, гибкий процесс развертывания.

Извините за немного касательной и надеюсь, что это помогает :)

Смежные вопросы