如何在OpenShift上配置Django?

Ant*_*ard 23 python django redhat openshift

我最近尝试在OpenShift上导出一个Django项目,但是没有成功.我发现的唯一解决方案是"预构建"(例如https://github.com/openshift/django-example).

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

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

Ant*_*ard 30

我终于弄明白了.首先要做的是启动openshift应用程序并编辑setup.py文件:

rhc app create -a APPNAME -t python-2.6
cd APPNAME
vim setup.py
Run Code Online (Sandbox Code Playgroud)

你需要取消注释"install_requires = ['Django> = 1.3']"

然后你可以提交到服务器:

git commit -a -m "Initialization"
git push
Run Code Online (Sandbox Code Playgroud)

默认情况下,它会安装django 1.4,但我认为您可以在setup.py中选择具有正确安装要求的其他版本.无论如何,你必须在你的计算机和服务器上运行相同的django版本以进行以下操作.

创建你的django项目:

cd wsgi
django-admin.py startproject PROJECTNAME
Run Code Online (Sandbox Code Playgroud)

然后你必须编辑文件应用程序,用以下内容替换整个内容:

#!/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()
Run Code Online (Sandbox Code Playgroud)

最后,您可以提交修改:

cd ..
git add .
git commit -a -m "Project Creation"
git push
Run Code Online (Sandbox Code Playgroud)

你应该看到django欢迎页面.现在,您可以编辑设置并导入django应用程序,而不会有不需要的内容

  • 不幸的是,当我尝试你的解决方案时,我得到了503 Service Temporarily Unavailable错误.我根据项目名称编辑了PROJECTNAME,并使用python2.7编辑了该行.OpenShift似乎缺乏项目文档:( (5认同)
  • 做得好.谢谢!对上述步骤进行小幅扩展.1.为了提供静态文件,你需要将它们放在`PROJECTNAME/wsgi/static`中.2.在`PROJECTNAME/wsgi/static`中你还应该放置`site-packages/Django-xxx/django/contrib/admin/static/admin`中的`admin`文件夹.否则你会错过静态Django Admin文件. (4认同)