Python 如何在OpenShift上配置Django?

Python 如何在OpenShift上配置Django?,python,django,openshift,redhat,Python,Django,Openshift,Redhat,我最近尝试在OpenShift上导出一个Django项目,但没有成功。我发现的唯一解决方案是“预构建”的解决方案(例如) 我花了几个小时试图使它适应我的项目,但我总是得到一个内部服务器错误 那么,如何在openshift上设置django呢?我终于找到了答案。首先要做的是启动openshift应用程序并编辑setup.py文件: rhc app create -a APPNAME -t python-2.6 cd APPNAME vim setup.py 您需要取消注释“install_req

我最近尝试在OpenShift上导出一个Django项目,但没有成功。我发现的唯一解决方案是“预构建”的解决方案(例如)

我花了几个小时试图使它适应我的项目,但我总是得到一个内部服务器错误


那么,如何在openshift上设置django呢?

我终于找到了答案。首先要做的是启动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应用程序,而无需添加不需要的内容

这是一项了不起的工作。谢谢对上述步骤的小扩展。1.为了提供静态文件,您需要将它们放入
PROJECTNAME/wsgi/static
中。2.在
PROJECTNAME/wsgi/static
中,还应放置
site packages/Django xxx/Django/contrib/admin/static/admin
中的
admin
文件夹。否则,您将错过静态Django管理文件。不幸的是,当我尝试您的解决方案时,我得到一个503服务暂时不可用的错误。我根据我的项目名称编辑了项目名称,并用python2.7编辑了行。OpenShift的项目文档似乎非常缺乏:(我知道您刚刚编辑了,但仍然感谢您的出色工作:))使用VirtualEnvrapper添加需求文件怎么样?我尝试了这个。我不知道这是否是一个常见问题,但是wsgi.py没有出现在它自己的文件夹中,现在是root。尝试这些建议会导致与@shailenTJ相同的问题,在那里我得到一个503错误。wsgi格式有很大的变化吗?