LINUX.ORG.RU

Проблема с развертыванием Django через CGI

 , geodjango, spatialite


0

1

Сразу скажу, что могу развертывать только через CGI

Так работает ряд сайтов. Делаю приложение на Geodjango/Spatialite (первый опыт). Через manage.py runserver ( http://127.0.0.1:8000/) все хорошо работает, когда запускаю через cgi выдает

Exception Type: 	DatabaseError
Exception Value: 	

malformed database schema - near "VIRTUAL": syntax error

Так понимаю, что поблема в том, что он пытается работать с геобазой не через Spatialite, а через простой sqlite3. Runserver вероятно какие-то переменные окружения инициализирует, которые нужно прописать при работе через CGI. Вот какие строки есть в django.cgi:

  os.putenv('PATH','/home/u/soft/bin:/home/u/soft/src/gdal-1.7.2/swig/python/scripts:/home/u/perl5/bin:/usr/kerberos/bin:/usr/\
local/bin:/bin:/usr/bin:/opt/dell/srvadmin/bin')

   os.putenv('LD_LIBRARY_PATH','/home/u/soft/lib:/usr/lib64')


   sys.path.insert(0,"/home/u/soft/pyenv/lib/python2.7/site-packages/Django-1.2.5-py2.7.egg")

os.putenv - отсебятина



Последнее исправление: alexkarta (всего исправлений: 1)

Место возникновения исключения:

Exception Location: 	/home/alexkrt/soft/pyenv/lib/python2.7/site-packages/Django-1.2.5-py2.7.egg/django/db/backends/sqlite3/base.py in execute, line 200

я так и думал. Проблема в том, что запрос должн строить не django/db/backends/sqlite3/base.py а django/contrib/gis/db/backends/spatialite/base.py

что надо сделать для этого, в INSTALLED_APPS вставил 'django.contrib.gis'

не знаю, что еще можно сделать, запустил manage.py shell, посмотрел все переменные окружения, задал их в django.cgi - безрезультатно, debugger показывает, что все переменные задаются. Что еще можно сделать?

alexkarta
() автор топика

оффтоп: но зачем так извращаться? Джанго через cgi это просто верх садомазо. Готов поспорить сайты еле ворочаются.

Ну а так гугли костыли, офицально джанга cgi не держит и не будет.

Хинт: https://code.djangoproject.com/ticket/2407

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

это скорее всего какой-то баг джанги, возможно cgi не при чем, т.к. при работе с django 1.4 через runserver получал такую же ошибку, пришлось вернуться к 1.2 - здесь хотя бы так работает.

alexkarta
() автор топика
Ответ на: комментарий от alexkarta

не спец по хостерам, всю жизнь свой сервак держал. Поищи по admin и web-development, тема очень много раз поднималась, минимум раз в месяц всплывает.

PS Я бы взял VPS или «облако». Вот сдесь иногда нахаляву дают: Бесплатный хостинг

true_admin ★★★★★
()

Я думаю, я знаю из-за чего возникает ошибка. Это не из-за spatialite. На сервере стоит старый sqlite, база сделана для последней версии. Я скомпилировал в $HOME последнюю версию sqlite, а джанго скорее всего обращается к базе через старый. Что нужно сделать, какие переменные окружения и как задать, чтобы python работал с «$HOME/lib», а не «/usr/lib»??? LD_LIBRARY_PATH=$HOME/lib задано. Может дело и не в этом. Как узнать через какой sqlite python работает?

alexkarta
() автор топика

Решено. Собрал Python 2.7.3 (был 2.7.0) и все заработало

alexkarta
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.