我用django构建了一个webapp。为了托管它,我正在尝试使用openshift,但是很难让任何东西工作。这方面似乎缺乏一步一步的努力。到目前为止,git运行良好,应用程序在本地开发环境下运行,我已经在openshift上成功地创建了一个应用程序。
一旦创建了openshift上的URL,我就得到了“欢迎使用openshift应用程序”的标准页面。
我已经按照这个https://developers.openshift.com/en/python-getting-started.html#step1尝试更改wsgi.py文件。把它改成hello world,按下它,但我仍然得到openshift默认页面。
有没有一个很好的综合资源可以让本地Django应用程序在Openshift上运行?我能在谷歌上找到的大多数只是一些示例应用,它们并不像我已经构建的那样有用。
这些步骤对我很有用: 我已经手动完成了一些步骤,但是您可以在以后使用每个push命令自动完成这些步骤。
连接到ssh控制台
rhc ssh myapp
10.执行
转到应用程序目录
cd~/app-root/runtime/repo/wsgi/app-name
使用以下项进行迁移:
python manage.py迁移
创建超级用户:
python manage.py createsuperuser
15.重新启动应用程序
编辑:请记住,这是一个依赖于平台的答案,而且由于服务于Django的OpenShift平台可能会发生更改,因此该答案可能会无效。截至2016年4月1日,本答复在其整个范围内仍然有效。
很多时候,这种情况发生在我身上,因为我必须至少装载5个应用程序,所以我必须创建自己的生命周期:
通过git克隆存储库。你将得到
yourproject
和。。。为克隆到本地计算机中的全新存储库制作一个virtualenv。激活它并通过
pip
和您需要的所有依赖项(例如,一个新的枕头包,MySQL数据库包,…)安装Django。在那里创建一个django项目。喂,你的DJ项目。编辑创建一个wsgi/static
目录,其中包含一个空的、虚拟的文件(例如.gitkeep
-名称只是约定:您可以使用任何想要的名称)。在那里创建一个django应用程序。说吧,你的应用程序。把它包括在你的项目中。
你会得到这样的东西(django 1.7):
像往常一样设置django应用程序(这里我不详细介绍)。请记住相应地在setup.py文件中包含您安装的所有依赖项(这个答案不是描述原因的地方,但是setup.py是包安装程序,openshift使用它在每次部署时重新安装您的应用程序,因此请使其与依赖项保持最新)。
按如下所示编辑给定WSGI脚本的openshift。在包含virtualenv(openshift为python墨盒创建一个)之后,您将包括django WSGI应用程序,因此pythonpath将被正确设置。
编辑钩子。openshift/action_钩子自动执行db sincronization和媒体管理:
建立挂钩
展开挂钩
现在您已经准备好了wsgi,通过导入指向django wsgi,并且您的脚本正在运行。现在是时候考虑我们在这些脚本中使用的静态和媒体文件的位置了。编辑您的Django设置以告诉您希望这些文件位于何处:
创建一个示例视图、一个示例模型、一个示例迁移,并推送所有内容。
编辑请记住将正确的设置考虑到这两个环境,以便您可以在本地环境和openshift中测试和运行(通常,这需要有一个
local_settings.py
,如果文件存在,可以选择导入,但我将省略该部分并将所有内容放在同一个文件中)。请仔细阅读此文件,因为您的localdbname是必须相应设置的值:Git添加,提交,推送,享受。
你的Django应用程序示例已经准备就绪!但是如果你的应用程序有外部的依赖关系,它会毫无理由的崩溃。这就是我告诉你开发一个简单应用程序的原因。现在是时候让依赖项工作了。
[未经测试!]假设您的项目中存在requirements.txt文件,您可以编辑deploy hook并在命令
cd $OPENSHIFT_REPO_DIR
之后添加命令,如下所示:pip install -r requirements.txt
。pip
应该存在于virtualenv中,但如果不存在,则可以看到下一个解决方案。或者,setup.py是OpenShift上已经提供的方法。我做了很多次-假设存在requirements.txt文件-是:
strip
前导和尾随空白。setup
调用中的install_requires=
关键字参数。很抱歉之前我没有将此内容包含在教程中!但您需要在服务器中实际安装Django。也许这是一个显而易见的建议,每个Python开发人员都可以事先知道。但抓住这个机会,我要说的是:在requirements.txt中包含适当的Django依赖项(或setup.py,取决于您是否使用requirements.txt文件),因为您包含了任何其他依赖项。
这将有助于您装载Django应用程序,并花了我很多时间来标准化进程。享受吧,如果出了什么问题,请随时通过评论与我联系
编辑(对于那些有相同问题但不希望在本文的评论中找到答案的人):请记住,如果您在Windows下编辑构建或部署hook文件并推送这些文件,它们将以0644权限飞向服务器,因为Windows不支持此权限方案Unix已经并且无法分配权限,因为这些文件没有任何扩展名。您会注意到这一点,因为部署时不会执行脚本。因此,尝试仅从基于Unix的系统部署这些文件。
编辑2:您可以使用git钩子(例如pre_commit)设置某些文件的权限,例如管道脚本(build、deploy,…)。请参阅此答案中@StijndeWitt和@OliverBurdekin的评论,以及this question了解更多详细信息。
相关问题 更多 >
编程相关推荐