Найти - Пользователи
Полная версия: FastCGI и DatabaseError
Начало » Django » FastCGI и DatabaseError
1
Yanzay
Добрый день.
Возникла такая проблема: пытаюсь развернуть джанго на nginx, однако при таком способе у меня джанго в упор не видит базы данных, то есть выдаёт DatabaseError (no such table) при заходе на любую страничку. Хотя в тестовом сервере (runserver) всё работает отлично.
Подскажите, в чём может быть загвоздка.

База в sqlite.
fashust
а syncdb что сказал?
Yanzay
fashust
а syncdb что сказал?
syncdb показывает что всё нормально. говорю же, с runserver всё работает как часы, а при использовании runfcgi таблиц в базе вообще не видит.

Всё, проблему решил, прописал полный путь к файлу базы в settings.py (кривое решение, может кто подскажет получше?), появилась новая: в админке отвалились стили, что вообще странно. Кто что скажет?
Александр Кошелев
Yanzay
Кто что скажет?
Одна тема – один вопрос!
fashust
Ну, для начала пропиши в settings.py что-то типо такого:
import os
.....
PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
....
MEDIA_ROOT = PROJECT_ROOT + '/media'
....
STATIC_ROOT = PROJECT_ROOT + '/static'
для бд потом можешь просто написать
PROJECT_ROOT + 'что-то там где лежит твой файл'
По поводу стилей в админке. А что у тебя помимо fastcgi? или все на нем висит?
Yanzay
Александр Кошелев
Одна тема – один вопрос!
Прошу прощения, просто решение одного потянуло другой =)

fashust
Ну, для начала пропиши в settings.py что-то типо такого:
За это огромное спасибо, помогло. Надо было и самому до этого догадаться.

fashust
По поводу стилей в админке. А что у тебя помимо fastcgi? или все на нем висит?
Оказалось (на сколько я понял) nginx и не пытается запрашивать статику у джанго, а отдаёт её сам. А так как он не знает где находится статика админки, вот и не подтягивал стили. Решилось добавлением в конфиг nginx алиаса такого типа (может кому пригодится):

location /static/admin {
alias /usr/local/lib/python2.6/dist-packages/Django-1.3.1-py2.6.egg/django/contrib/admin/media;
expires 30d;
}
Соответственно нужно поставить свой путь к каталогу django/contrib/admin/media
fashust
ну вообще лучше не прописывать так как у тебя тут:
Yanzay
location /static/admin {
alias /usr/local/lib/python2.6/dist-packages/Django-1.3.1-py2.6.egg/django/contrib/admin/media;
expires 30d;
}
Лучше сделай символическую ссылку на admin/media и помести ее куда-то в свой проект, а в конфигах nginx пропиши:
location /static/admin {
alias /project_dir/other/admin/media;
expires 30d;
}
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