【发布时间】:2013-05-22 12:20:13
【问题描述】:
您好,我是新开班次。我不知道如何创建存储库并将我们的项目部署到它。我已经通过命令提示符进行了配置。通过命令提示符成功安装 rhc 后,我对 Open Shift 网站上关于上传应用程序的帮助感到困惑,而不是关于推送和提交。我得到了关于提交和推送的想法,但我没有得到关于第一次部署或上传应用程序的想法。请帮助我,我被卡住了很长时间,提前谢谢
【问题讨论】:
标签: openshift openshift-client-tools
您好,我是新开班次。我不知道如何创建存储库并将我们的项目部署到它。我已经通过命令提示符进行了配置。通过命令提示符成功安装 rhc 后,我对 Open Shift 网站上关于上传应用程序的帮助感到困惑,而不是关于推送和提交。我得到了关于提交和推送的想法,但我没有得到关于第一次部署或上传应用程序的想法。请帮助我,我被卡住了很长时间,提前谢谢
【问题讨论】:
标签: openshift openshift-client-tools
部署和构建应用程序
所有 OpenShift 应用程序都是围绕 Git 源代码控制工作流程构建的 - 您在本地编码,然后将您的更改推送到服务器。然后服务器会运行许多钩子来构建和配置您的应用程序,最后重新启动您的应用程序。可选地,应用程序可以选择使用 Jenkins 构建,或者使用“热部署”运行,这可以加快将代码部署到 OpenShift 的速度。
更改您的应用程序 作为 OpenShift 的开发人员,您在本地机器上进行代码更改,在本地检查这些更改,然后将这些更改“推送”到 OpenShift。 Git 的主要优势之一是它不需要持续在线即可运行。在决定将这些更改上传到 OpenShift 之前,您可以轻松签入(在 Git 术语中为“提交”)并在本地恢复更改。
您创建的每个 OpenShift 应用程序都有自己的 Git 存储库,只有您可以访问。如果您从命令行创建应用程序,rhc 将自动下载该存储库的副本(Git 称之为“克隆”)到您的本地系统。如果您从 Web 控制台创建应用程序,则需要告诉 Git 克隆存储库。从应用页面找到Git URL,然后运行:
$ git clone <git_url> <directory to create>
一旦您做出更改,您需要“添加”和“提交”这些更改 - “添加”告诉 Git 一个文件或一组文件将成为更大签入的一部分,“提交”完成签入。Git 要求每个提交都有一条消息来描述它。
$ git add .
$ git commit -m "A checkin to my application"
最后,您已准备好将更改发送到您的应用程序 - 您将通过以下方式“推送”这些更改:
$ git push
push 命令的输出将包含来自 OpenShift 的有关您的部署的信息 -
来源Click me
【讨论】:
在 OpenShift 中将内容部署到 Tomcat 服务器有两种选择。两种选择 可以一起使用(即从源代码构建一个存档,其他存档)
1)(首选)您可以像此示例项目一样以 Maven src 结构上传您的内容 git push 已经构建和部署了应用程序。为此,您需要您的 pom.xml 存储库的根目录和本示例中的 maven-war-plugin 用于移动构建中的输出 到 webapps 目录。默认情况下,warName 在 pom.xml 中是 ROOT。这将导致 要在http://app_name-namespace.rhcloud.com/ 呈现的 webapp 内容。如果您在 pom.xml 到 app_name,然后您的基本 url 将变为 http://app_name-namespace.rhcloud.com/app_name。
注意:如果您在本地构建,您还需要在 webapps 下添加任何输出战争 从构建到您的 .gitignore 文件。
注意:如果您正在运行扩展的 EWS2.0,那么您需要将应用程序部署到根上下文(即 http://app_name-namespace.rhcloud.com/) 让 HAProxy 负载均衡器识别 EWS2.0 实例 处于活动状态。
或
2) 你可以将预建的战争 git push 到 webapps/.去做这个 使用默认存储库,您需要首先从存储库的根目录运行“git rm -r src/pom.xml”。
部署预建内容的基本工作流程(每个操作都需要关联的 git add/commit/push 操作才能生效):
A) 添加新的压缩内容并进行部署:
B) 取消部署当前部署的内容:
C) 将当前部署的压缩内容替换为新版本并部署:
注意:你可以通过运行 'rhc domain show' 来获取上面 uri 中的信息
如果您已经将大文件提交到您的 git 存储库,您可以在 git 中重写或重置这些文件的历史记录 到更早的时间点,然后“git push --force”将这些更改应用到远程 OpenShift 服务器上。一个 可以强制使用远程 OpenShift repo 上的 git gc (注意:tidy 还进行其他清理,包括清除日志 文件和 tmp 目录):
rhc app tidy -a appname
无论您选择选项 1) 还是 2),最终结果都将是应用程序 部署到 webapps 目录中。 webapps 目录中的 Tomcat 分布是最终用户可以放置的位置 他们的部署内容(例如war、ear、jar、sar文件)拥有它 自动部署到服务器运行时。
【讨论】:
这里是由 openshift 人员编写的非常好的教程,其中包含源代码,因此您可能会出错。 https://www.openshift.com/blogs/spring-polyglot-persistence-part-1
总而言之 - 如果您的应用程序位于某个存储库中,只需创建您的应用程序,以便在您的目录中创建包含 git repo 的文件夹
rhc app create notebook jbossas-7 -l <openshift_login_email> -d
转到新创建的目录并用您的 repo 替换默认的 openshift 代码
git rm -rf src/ pom.xml
git commit -am "removed default files"
git remote add notebook -m master git://github.com/shekhargulati/notebook-part1.git
git pull -s recursive -X theirs notebook master
git push
您应该会看到您的 java 应用程序构建。
【讨论】:
您的应用是什么应用类型? Java/PHP/Python...?如果它是一个基于 PHP 的应用程序,那么外部暴露的 PHP 代码应该进入“php”目录。每当您使用 rhc 命令创建应用程序时,都会创建一个本地存储库,您将在其中找到一个 README 文档,其中列出了您的部署步骤。此外,您可以在此处参考 OpenShift 用户指南:
https://www.openshift.com/sites/default/files/documents/OpenShift-2.0-User_Guide-en-US_5.pdf
【讨论】: