写教程,改变世界


0 推荐

作者:燕狂徒
2015-02-01 06:38:24
标签:openshift,paas
有效阅读:210
点击量:11324

免责声明:本站(guideep)之内的所有教程概由作者自由创作并承担全部责任。教程的内容和观点未经 guideep 审核。读者在阅读过程中应自行鉴别其是否真确、有效或安全。
特别地,如果教程内容涉及化学、生物、高压电气、放射性、医疗、气功、宗教、运动等可能造成严重后果的领域,请读者慎重鉴别,切勿盲目学习。
本站不对学习造成的后果承担任何责任。

Openshift 教程
[div=#ffffcc][color=red]基础要求[/color]:本教程向具有一定开发经验的读者介绍 Openshift 的使用。在阅读之前,读者应该熟悉 Linux 环境下的网络编程。[/div] [url=https://www.openshift.com]Openshift[/url] 是由[wiki=zh]红帽公司[/wiki]推出的 [wiki=zh]PaaS[/wiki] 云计算平台,供用户创建网络应用(App,网站)。 Openshift 目前共提供三种产品,[toggle=off] [title]OpenShift Online[/title] [content]面向普通开发者和小微企业的线上公有云平台。[/content][/toggle]、[toggle=off] [title]OpenShift Enterprise[/title] [content]面向企业的私有云平台。[/content][/toggle] 和 [toggle=off] [title]OpenShift Origin[/title] [content]开源项目,是构成前两个的基础。[/content][/toggle]。 本教程主要介绍 OpenShift Online。在本教程中,我们提到的 OpenShift 都是指 OpenShift Online。 [hr]点开下面条目阅读详细内容:[hr] [toggle=off] [title]为什么用 Openshift?[/title] [content]Openshift 为免费用户提供三个 [call=gear]gear[/call] 的资源,用户创建应用时可以用一个 gear,也可以用多个 gear。因此,每一用户最多可以创建三个免费应用。 [bird=gear]gear 是 openshift 上的一个[b]硬件资源单位[/b]。gear 共有四种规格:小型、CPU加强小型、中型、大型。 免费用户可获得三个小型 gear,每个小型 gear 含有 512M 的内存和 1G 的存储空间。[/bird] Openshift 提供的免费资源是所有 PaaS 服务中最慷慨的,一个 gear 的资源远远高于一个 [url=http://appengine.google.com/]GAE[/url] 应用的免费配额。[toggle=off] [title]Koding[/title] [content]参看:《[guide=5629652273987584]Koding 中文教程[/guide]》[/content][/toggle] 虽然提供性能相近的免费虚拟机,但虚拟机每次启动一小时之后就会自动关闭,只能学习,不能运营。 [hr] Openshift 的局限在于:与 Koding 相比,需要在本地安装一些管理工具,更改代码之后要用 [goto=usegit]git[/goto] 上传,调试速度较慢;与 GAE 相比,文档不够系统。 Openshift 应用的域名 rhcloud.com 在中国大陆被墙了。 [/content][/toggle] [toggle=on] [title]Openshift 使用起步[/title] [content]这一部分内容主要来自官方文档 [url=https://developers.openshift.com/en/getting-started-overview.html]Getting Started with OpenShift Online[/url],读者可以循着以下步骤,开始建立一个最简单的应用。 [toggle=off] [title]注册账户并登录[/title] [content]在[url=https://www.openshift.com/app/account/new]这里[/url]注册。填入注册邮箱、要在 OpenShift 使用的密码、再次输入密码、验证码四项,点下面的 Sign in 按钮。由于验证码(CAPTCHA )来自 google.com,墙内用户如果看不到,需要翻一下墙。 提交注册信息之后,你的邮箱里会收到来自 OpenShift 的注册邮件,点邮件中的  [u]Verify Your Account[/u] 链接,进入用户协议页 Legal terms。 在 Legal terms 页点下面的 I Accept 按钮,同意协议,进入[b][a=consolepage]控制台[/b]([url=https://openshift.redhat.com/app/console/applications]https://openshift.redhat.com/app/console/applications[/url])。 注册至此完成。 [/content][/toggle] [toggle=off] [title]创建第一个应用[/title] [content][a=setapp]免费用户注册之后就有了三个小 [call=gear]gear[/call],我们将向 gear 上添加各种 [call=cartridge]cartridge[/call],使之成为能够工作的应用(App,网站)。[bird=cartridge]cartridge 是 openshift 上的一个[b]软件功能单位[/b]。 例如,编程语言是一个 cartridge,你可以选择 Python2.7、Ruby2.0、Node.js0.10、PHP 5.4 等各种语言的 cartridge;而数据库也是一个 cartridge,你可以选择 MySQL、PostgreSQL、MongoDB 等多种数据库的 cartridge。 此外,还有一些辅助工具 cartridge,如 Cron 等。[/bird] [toggle=off] [title]选择应用类型[/title] [content]在[goto=consolepage]控制台[/goto],点 [u]Create your first application now[/u],进入[b][a=apptypepg]选择应用类型页[/b](https://openshift.redhat.com/app/console/application_types),在这里选择应用的类型。当然,这些类型都是 [call=cartridge]cartridge[/call]。 除了列出的应用类型(注意每一类后面都有个 see all 的链接,里面有更多的应用类型),你还可以选择 Do-It-Yourself 0.1,创建自己的 cartridge。[/content][/toggle] [toggle=off] [title]配置并创建应用[/title] [content]在[goto=apptypepg]选择应用类型页[/goto]点选应用类型之后进入[b]应用配置页[/b](https://openshift.redhat.com/app/console/application_type/cart!python-2.7[toggle=off] [title][sup][注][/sup][/title] [content]我选的应用类型是 Python2.7,如果你选择其它的应用类型,应用配置页的链接与此不同。[/content][/toggle]) 在这里,首先需要输入应用名。如果这是你的第一个应用,还需要输入一个空间名。每个免费用户最多可以有三个应用,这三个应用的应用名各不相同,但空间名是同一个。 openshift 将根据你的应用名和空间名为你提供一个三级域名。例如:你设定的空间名是 namespace1,第一个应用叫作 [size=1][a=appname]app1[/size],则第一个应用的网址是 http://app1-namespace1.rhcloud.com。 一个需要注意的选项是 Scaling。你可以将应用设置成可扩展的,即使用多个 [call=gear]gear[/call]。一种方案是让一个 gear 负责运算,另一个运行数据库;另一种情况是一旦访问量过大,超过一个运算 gear 的负载能力,系统会启动闲置的 gear 来分担这些负载。 最后一个选项是 Region,可以选择把这个应用的服务器放在美国东部还是欧洲西部。 点 Create Application 按钮,创建应用。 如果你刚才配置的应用名是 app1,空间名是 namespace1,现在就能用浏览器在 http://app1-namespace1.rhcloud.com 访问你的应用了。当然,现在网页的内容是 openshift 预设的。 如果你打不开应用的网址,很可能是墙的作用。[goto=setowndomain]将自己的域名解析到应用上[/goto]即可解决。 [/content][/toggle] 上述过程也可以[goto=userhc]通过 rhc 命令行工具完成[/goto]。 现在,在[url=https://openshift.redhat.com/app/console/applications]应用列表页[/url](https://openshift.redhat.com/app/console/applications)可以看到你所有的应用。点[goto=appname]应用名[/goto],进入[b][a=appmngpg]应用管理页[/b](地址形如:https://openshift.redhat.com/app/console/application/511a73cf2cf5f0a80b8072e5-app1)。 在[goto=appmngpg]应用管理页[/goto]右侧可以看到 [b][a=srccode]Souce code[/b] 的地址,形如 ssh://[color=blue][a=appid]34c319eb11ea9a486bd18989ee27320e[/color]@app1-namespace.rhcloud.com/~/git/username.git/ 其中,[goto=appid]蓝色的部分是应用的 ID[/goto]。 [/content][/toggle] [toggle=off] [title]设置本地开发环境[/title] [content][a=installtools]要使用 openshift,需要在你自己的计算机上安装两个工具:rhc 和 git。 rhc 是一个命令行工具,[goto=userhc]用来管理你的 openshift[/goto]。git 是一个版本控制工具。用户向 openshift 提交的程序代码只能[goto=usegit]通过 git 实现[/goto]。 ubuntu[toggle=off] [title][sup][?][/sup][/title] [content]由于开发 openshift 需要熟悉 linux,不妨假定读者都有一套 linux 环境可用,而 ubuntu 是当前十分流行的 linux 系统。[/content][/toggle] 用户可按照[toggle=off] [title]这些步骤[/title] [content]rhc 是用 Ruby 做的,需要先安装 Ruby,用这条命令同时安装 Ruby 和 git: [div]sudo apt-get install ruby-full ruby git-core[/div] [toggle=off] [title]测试 Ruby 是否装好[/title] [content] [div]ruby -e 'puts "Welcome to Ruby"'[/div] 应该打印出:Welcome to Ruby[/content][/toggle] [toggle=off] [title]测试 git 是否装好[/title] [content] [div]git --version[/div] 应该返回 git 的版本号。[/content][/toggle] 接着安装 rhc: [div]sudo gem install rhc[/div] 装好后运行: [div]rhc setup[/div] 跟着提示,中间可能提示创建密钥,选 yes 或直接回车。运行结束之后,rhc 和 git 就装好了。 [/content][/toggle]安装,其它操作系统的用户请看[toggle=off] [title]官方教程[/title] [content][url=https://developers.openshift.com/en/getting-started-client-tools.html#windows]Windows[/url] [url=https://developers.openshift.com/en/getting-started-client-tools.html#mac-os-x]Mac OS X[/url] [url=https://developers.openshift.com/en/getting-started-client-tools.html#fedora]Fedora[/url] [url=https://developers.openshift.com/en/getting-started-client-tools.html#red-hat-enterprise-linux-6]RHEL6[/url] [/content][/toggle]。 [/content][/toggle] [toggle=off] [title]更新你的应用[/title] [content]我们已经[goto=installtools]安装了 rhc 和 git[/goto]。现在,要学会使用这两种工具。 [toggle=off] [title]rhc 简要指南[/title] [content][a=userhc]此前在网页上所作的[goto=setapp]创建及配置应用[/goto]的工作都可以通过 rhc 完成。 你已经装好了 rhc,在命令行运行: [div]rhc[/div] [toggle=off] [title]会返回这些内容[/title] [content]$ rhc Usage: rhc [--help] [--version] [--debug] <command> [<args>] Command line interface for OpenShift. Getting started:   setup              Connects to OpenShift and sets up your keys and domain   create-app         Create an application   apps               List all your applications   cartridges         List available cartridges   add-cartridge      Add a cartridge to your application   set-env            Set one or more environment variable(s) to your application   logout             End the current session Working with apps:   tail               Tail the logs of an application   port-forward       Forward remote ports to the workstation   threaddump         Trigger a thread dump for JBoss and Ruby apps   snapshot           Save the current state of your application locally   git-clone          Clone and configure an application's repository locally [a=mngcmds]Management commands:   account            Display details about your OpenShift account   alias              Add or remove a custom domain name for an app   app                Commands for creating and managing applications   authorization      Manage your authorization tokens   cartridge          Manage your application cartridges   deployment         Commands for deploying and managing deployments of an application   domain             Add or rename the container for your apps   env                Manages user-defined environment variables set on a given application   member             Manage membership on domains and teams   region             Display the regions and zones available on the OpenShift server   scp                SCP a file to or from your application   server             Manage your configured servers and check the status of services   ssh                SSH into the specified application   sshkey             Add and remove keys for Git and SSH   team               Create or delete a team   Some management commands have nested actions - run 'rhc help <command>' for more info. See 'rhc help <command>' for more information on a specific command.  You can see a list of all commands with 'rhc help commands'. See 'rhc help options' for a list of global command-line options and information about the config file. [/content][/toggle] 对每一行前面的命令名,可以用 [b]rhc help 命令名[/b] 来查看详细说明。如: [div]rhc help  create-app[/div] 根据说明,我们知道,如果需要创建一个名为 app1 的基于 python-2.7 ([call=cartridge]cartridge[/call])的应用,可以用这样的命令: [div]rhc create-app app1 python-2.7[/div] 在 rhc 的说明之 [goto=mngcmds]Management commands[/goto] 这个部分,列出的是分类命令。对其中的每一个分类,如 cartridge,也可以查看它的详细说明: [div]rhc cartridge[/div] [toggle=off] [title]结果如下:[/title] [content]List of Actions   add                Add a cartridge to your application   list               List available cartridges   reload             Reload the cartridge's configuration   remove             Remove a cartridge from your application   restart            Restart a cartridge   scale              Set the scale range for a cartridge   show               Show useful information about a cartridge   start              Start a cartridge   status             Get current the status of a cartridge   stop               Stop a cartridge   storage            View/manipulate storage on a cartridge[/content][/toggle] 使用其中的 list 操作: [div]rhc cartridge list[/div] 即可列出所有可选的 [goto=cartridge]cartridge[/goto]。 通过 cartridge 分类下的命令,你可以对 cartridge 执行添加、删除、管理、启动、暂停、查看状态等操作。类似地,也可以用 app 分类下的命令完成所有对应用的管理配置工作,每一分类都是如此。 [/content][/toggle] [toggle=off] [title]git 简要指南[/title] [content][a=usegit]git 是一个分布式[toggle=off] [title][sup][?][/sup][/title] [content]git 除了管理本地的版本,还可以将[goto=repository]版本仓库[/goto]在本地机器与远端机器之间互相传送,对每次版本变动都能实现多处的同步更新。 [/content][/toggle]的版本管理[toggle=off] [title][sup][?][/sup][/title] [content]版本管理是做什么? 例如你写了一个程序(也可以是其它文本的、甚至非文本的创作),写好了。第二天,你为它增加了一段内容。第三天,你删除了一段内容。第四天,你修改了一段内容。第五天,你接着第二天的版本继续改,取消了第三、四两天的改动。对这个程序,你就有了五个版本。 版本一多就会带来记忆混乱。你想找记忆中的某个版本,却记不清它是第几个,更记不清它是从哪个版本改出来的。许多开发创作人员苦恼于此,因而有了版本管理工具。版本管理工具维护一个[b][a=repository]版本仓库[/b](Repository),帮你保存每一个版本的内容和对它的说明,还会记录各个版本之间的继承关系,于是最大限度地避免了混淆。 [/content][/toggle]工具,它的功能可以单独写一部教程。这里,我们只介绍在 openshift 中需要几个最简单的命令。 [toggle=off] [title]git clone[/title] [content][a=gitclone]clone 命令用于将远端已经存在的[goto=repository]版本仓库[/goto]整个读取到你的计算机,建立[b][a=localrepo]本地版本仓库[/b]。同时,它会把版本仓库中[b]当前版本[/b]的文件放在[b][a=localdir]本地工作目录[/b]。然后你可以访问并修改这些文件。 在你修改之前,这些文件是本地版本仓库中的当前版本。 本地版本仓库放在默认的路径下,你不需要直接访问它。你要通过下面介绍的其它 git 命令操作本地和远端的版本仓库。 在创建 openshift 的应用之后,我们看到了[goto=srccode]Source code 地址[/goto],在命令行终端里执行 [div]git clone [color=blue][a=srcaddr]ssh://34c319eb11ea9a486bd18989ee27320e@app1-namespace.rhcloud.com/~/git/username.git/[/color] [color=#a92][a=localpath]./app1[/color][/div] 即可把 openshift 为你创建的原本存在于 [goto=srcaddr]Source code 地址[/goto]的初始版本仓库克隆到[goto=localpath]本地工作目录[/goto]之下。 [/content][/toggle] [toggle=off] [title]git status[/title] [content][a=gitstatus]status 命令用于比较本地工作目录下的文件与本地版本仓库里当前版本的文件是否相同,列出[toggle=off] [title]新增[/title] [content]版本仓库中没有,本地工作目录中有的。[/content][/toggle]、[toggle=off] [title]改动[/title] [content]版本仓库和本地工作目录中都有,但内容不同的。[/content][/toggle]及[toggle=off] [title]已删[/title] [content]版本仓库中有,但本地工作目录中没有的。[/content][/toggle]的文件。 在你修改过[goto=localdir]本地工作目录[/goto]中的文件之后,这些文件与[goto=localrepo]本地版本仓库[/goto]中当前版本的文件不同了,我们用 status 命令来发现这些变更。 [/content][/toggle] [toggle=off] [title]git diff[/title] [content][a=gitdiff]diff 命令用于比较[goto=localdir]本地工作目录[/goto]下的文件与[goto=localrepo]本地版本仓库[/goto]里当前版本文件的内容。 与 linux 的 diff 命令类似,git diff 也会逐行列出同名文件内容的不同,让你能够确认需要提交的版本。 [/content][/toggle] [toggle=off] [title]git add[/title] [content][a=gitadd]add 命令用于建立一个向[goto=localrepo]本地版本仓库[/goto]中新增或变更的文件列表。 将新增的和改动的文件 add 到列表里,再 [goto=gitcommit]commit[/goto] 到本地版本库,形成一个新的当前版本。  [/content][/toggle] [toggle=off] [title]git rm[/title] [content][a=gitrm]rm 命令用于建立一个从[goto=localrepo]本地版本仓库[/goto]中删除文件的列表。 如果版本仓库中当前版本的某些文件已不再需要,对这些文件作一次 git rm,再 [goto=gitcommit]commit[/goto] 到本地版本库。 [/content][/toggle] [toggle=off] [title]git commit[/title] [content][a=gitcommit]commit 命令用于向版本仓库中提交新的版本。 在改变了本地工作目录的文件内容(对文件增删改)且希望保存为一个新版本时使用这个命令。通常要带一个参数 -m,提供对这一版本的说明。 commit 之前通常要使用 [goto=gitadd]add[/goto] 建立新增或变更的文件列表,有时也要用 [goto=gitrm]rm[/goto] 建立删除的文件列表。commit 之后,增、删、改的结果就保存在新版本里了。 如果与前一版相比,没有增加新文件,只有对原有文件的更改,也可以省略 git add,而在 commit 中加一个 -a 来代替。如: [div=#ffffcc]git commit -a -m "some notes.“[/div] [/content][/toggle] [toggle=off] [title]git push[/title] [content][a=gitpush]push 命令用于将本地版本仓库的改动同步到远端(openshift),使你对代码所作的改动在你的应用上体现出来。 [/content][/toggle] [/content][/toggle] 初步掌握了 git 命令之后,更新应用就变得简单了。步骤如下: 1、克隆远端的版本仓库到本地工作目录 [div][goto=gitclone]git clone[/goto] [color=blue]ssh://34c319eb11ea9a486bd18989ee27320e@app1-namespace.rhcloud.com/~/git/username.git/[/color] [color=#a92]./app1[/color][/div] 2、在本地工作目录中编辑文件。 3、准备向本地版本仓库提交新版本。如果新版本中新增或更改了文件,要用 [goto=gitadd]git add[/goto] 将这些文件添加到更新列表中;如果删除了文件,用 [goto=gitrm]git rm[/goto] 标记须删除的文件。 如果记不住更改了哪些文件,用 [goto=gitstatus]git status[/goto] 查看;如果想进一步确认更改的内容,用 [goto=gitdiff]git diff[/goto]。 4、提交版本 [div][goto=gitcommit]git commit[/goto] -m "this is a new version"[/div] 5、同步到远端 [div][goto=gitpush]git push[/goto][/div] 刷新你的网页,如果一切正常,你刚刚作出的改动就能在你的应用中呈现出来了。 [/content][/toggle] [toggle=off] [title]使用自己的域名[/title] [content][a=setowndomain]为 openshift 上的应用设置自己的域名可以避免被墙。 假设你要为应用 app1-namespace1.rhcloud.com 设置域名 www.xyz.com,按如下步骤设置: 1、用 rhc 命令添加域名 [div]rhc alias add app1 www.xyz.com[/div] app1 是你的[goto=appname]应用名[/goto]。 2、为你的域名设置一个 CNAME,指向 app1-namespace1.rhcloud.com。 过几小时,解析生效,就可以使用 www.xyz.com 访问你的应用了。 [/content][/toggle] [toggle=off] [title]用 ssh 登录到 gear[/title] [content]在安装 rhc 时已经设置了公钥。因此现在只要一条命令: [div]rhc ssh -a app1[/div] 即可登录到你的 gear。其中,app1 是你的[goto=appname]应用名[/goto]。 或者直接用 ssh 命令: [div]ssh [color=blue]34c319eb11ea9a486bd18989ee27320e[/color]@app1-namespace1.rhcloud.com[/div] 蓝色部分是[goto=appid]应用的 ID[/goto]。 [/content][/toggle] [/content][/toggle]
uu

对本段内容的讨论

点击书签可编辑,清空即删除。