Как настроить Django на OpenShift?[закрыто]
Вопрос
Недавно я пытался экспортировать проект Django в OpenShift, но безуспешно.Единственные решения, которые я нашел, были «готовыми» (например, https://github.com/openshift/django-example).
Я потратил несколько часов, пытаясь адаптировать его к своему проекту, но всегда получал внутреннюю ошибку сервера.
Итак, как настроить Django на openshift?
Решение
Я наконец-то понял.Первое, что нужно сделать, это запустить приложение openshift и отредактировать файл setup.py:
rhc app create -a APPNAME -t python-2.6
cd APPNAME
vim setup.py
Вам необходимо раскомментировать «install_requires=['Django>=1.3']»
Затем вы можете зафиксировать сервер:
git commit -a -m "Initialization"
git push
По умолчанию устанавливается django 1.4, но я думаю, вы можете выбрать другую версию с правильными требованиями к установке в setup.py.В любом случае вам придется запустить одну и ту же версию django на своем компьютере и на сервере для следующих целей.
Создайте свой проект Django:
cd wsgi
django-admin.py startproject PROJECTNAME
Затем вам придется отредактировать файл приложения, заменить все содержимое на:
#!/usr/bin/python
import os, sys
os.environ['DJANGO_SETTINGS_MODULE'] = 'PROJECTNAME.settings'
sys.path.append(os.path.join(os.environ['OPENSHIFT_REPO_DIR'], 'wsgi',
'PROJECTNAME'))
virtenv = os.environ['APPDIR'] + '/virtenv/'
os.environ['PYTHON_EGG_CACHE'] = os.path.join(virtenv, 'lib/python2.6/site-packages')
virtualenv = os.path.join(virtenv, 'bin/activate_this.py')
try:
execfile(virtualenv, dict(__file__=virtualenv))
except IOError:
pass
#
# IMPORTANT: Put any additional includes below this line. If placed above this
# line, it's possible required libraries won't be in your searchable path
#
from django.core.handlers import wsgi
application = wsgi.WSGIHandler()
Наконец, вы можете зафиксировать изменения:
cd ..
git add .
git commit -a -m "Project Creation"
git push
Вы должны увидеть страницу приветствия django.Теперь вы можете редактировать настройки и импортировать приложения Django без нежелательного контента.