Найти - Пользователи
Полная версия: Ошибка 404 при загрузке static, openshift + python2.7 + django 1.5.1
Начало » Django » Ошибка 404 при загрузке static, openshift + python2.7 + django 1.5.1
1 2
wwnnbb
Суть проблемы:
При запуске на локальном компьютере всё работает, на серевере же выдает :
==> python/logs/appserver.log <==
127.4.210.129 - - [2013-08-21 12:58:07] "GET / HTTP/1.1" 200 1315 0.004668
127.4.210.129 - - [2013-08-21 12:58:07] "GET /static/blog/css/bootstrap.css HTTP/1.1" 404 2118 0.005347
127.4.210.129 - - [2013-08-21 12:58:08] "GET /static/blog/css/bootstrap-responsive.css HTTP/1.1" 404 2151 0.004989
127.4.210.129 - - [2013-08-21 12:58:08] "GET /static/blog/js/bootstrap.min.js HTTP/1.1" 404 2124 0.005177
127.4.210.129 - - [2013-08-21 12:58:08] "GET /static/blog/js/jquery.js HTTP/1.1" 404 2103 0.004873
127.4.210.129 - - [2013-08-21 12:58:08] "GET /static/blog/js/bootstrap.min.js HTTP/1.1" 404 2124 0.005036
#settings.py
STATIC_ROOT = ''
STATIC_URL = '/static/'
# Additional locations of static files
STATICFILES_DIRS = (
    os.path.join(PROJECT_DIR, '..', 'static'),
)
подскажите как исправить.
http://unipages-wwnbb.rhcloud.com/
openshift использует apache может есть способ добавить доступ к папке static через .htaccess
подскажите что просписать
lorien
Проверенный годами вариант:

В settings.py:

ROOT = os.path.dirname(os.path.realpath(__file__))
MEDIA_ROOT = os.path.join(ROOT, 'static')
MEDIA_URL = '/static/'
STATIC_ROOT = os.path.join(ROOT, 'static/pub')
STATIC_URL = '/static/pub/'
STATICFILES_DIRS = ()
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

В urls.py:

from django.conf.urls import *
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = patterns('',
....
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

> STATICFILES_DIRS
Не трогайте эту переменную, пусть будет пустая.
wwnnbb
Не помогло
lorien
> Не помогло

На сервере надо сделать manage.py collectstatic и правильно настроить веб-сервер.
Если у вас 404, вы можете в error log сервера посмотреть откуда именно он файлы пытается прочитать, если из неправильного места, разбирайтесь с веб-серером, иначе - с джанго-проектом.
Budulianin
lorien
Проверенный годами вариант:

Зачем вообще на сервере статику отдавать через django ?

Сразу apache или nginx
lorien
Budulianin, Статика на сервере отдаётся через nginx из STATIC_ROOT, куда она попадает с помощью команды collectstatic. Строка:
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Выполняется только в DEBUG=True режиме, который на продакшне должен быть отключен.
wwnnbb
lorien
Budulianin, Статика на сервере отдаётся через nginx из STATIC_ROOT, куда она попадает с помощью команды collectstatic. Строка:
вопрос если на сервере есть файл .htaccess с содержнием :
RewriteEngine On
RewriteRule ^application/static/(.+)$ /static$1 [L]
и он находится в …/wsgi в котором есть
/wsgi/static
может ли джанго блокировать пердачу статики веб сервером?
https://github.com/wwnbb/unipages
Budulianin
lorien
куда она попадает с помощью команды collectstatic.
Это знаю, а вот:
lorien
Выполняется только в DEBUG=True режиме
Не знал, посмотрел в код, теперь знаю :)
bismigalis
wwnnbb вебсервером статика отдается из wsgi/static
как она туда попадет твоя забота.

EDIT: был неправ, вижу что там у тебя файлы есть, но они не доступны, фиг знает почему
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB