Redhat Openshift云平台注册使用

【编者按】一直想申请一个免费的托管空间,国内找了一圈sinaapp还算差强人意,但是对于python不以安装C extension的包,而且SAE的一整套流程用起来感觉很不爽,而openshift的平台的工作流更适合一般开发人员的思维模式(我是针对Python,其他语言没有试过没有发言权),鉴于国内关注得还比较少,我把自己注册到开发的经验记录下来,希望对需要的人有所帮助。

Openshift简介

Openshift是RedHat公司的一款平台云产品,openshift.com是由RedHat公司维护的一个公有平台云服务平台,提供基础的语言环境、数据库以及其他运维相关的环境。用git实现自动部署,免费用户可以得到1GB的空间,流量无限制。因为RedHat服务器在国外,访问国外的网站速度也会有优势。特别是管理端,可以通过ssh直接登录上去进行调试管理,使用十分方便。语言方面,支持Java、Python、Ruby、Perl、PHP、Node.js等主流的编程语言。

缺点嘛,国外的网站,管理端访问速度确实有点慢,做出来网站的访问速度感觉还可以,当然现在我做的规模还比较小,但对于个人做点事情(比如爬虫)感觉还是可以的。

Openshift注册及新建应用

注册用户

到Openshift官网点SIGN UP FOR FREE,不过,那个验证码是从google取的,不的话看不到验证码,不过仅注册的这一次验证码,注册完再登录不需要便可以正常登录。

Redhat Openshift云平台注册使用_第1张图片

注册可能会发你一封验证邮件,点一下验证邮件里的链接即完成注册,然后便可以用此用户登录使用了。

创建新的应用

用你刚注册的用户登录,到 http://www.openshift.com 点击右上角MY ACCOUNT里的WEB CONSOLE菜单登录。登录上去可以看到你的控制台,点击下面的Add Application按钮即可新建一个应用:

Redhat Openshift云平台注册使用_第2张图片

点击完后需要你选择应用的类型,比如你可以选择python2.7,当然你也可以选择python3.3,选择完后会让先让你给应用起个名称,名称都会加上你的用户名后缀。

Redhat Openshift云平台注册使用_第3张图片

其它的选项暂时可以不用改,点击最下面的Create Application按钮,这个应用便是创建完成了。每个免费的用户可以创建3个应用,每个应用1GB的存储空间,包括数据库和语言相关包以及你的所有的程序文件共享这1GB的空间。点完Create Application后可以看到一些提示信息,不管它直接Continue即可。

Redhat Openshift云平台注册使用_第4张图片

服务端会给你的应用建立一个python的virtualenv,你的程序在此virtualenv中运行。

现在你的应用已经可以通过WEB进行访问了,生成的时候会自动生成一些默认的代码。

Redhat Openshift云平台注册使用_第5张图片

添加数据库

点击你的应用后面有个图标,可以为应用添加一个数据库,我选择用postgresql9.2,后面再介绍如何进行数据库访问。

rhc及其一些基本用法

rhc是Openshift的客户端管理程序,利用它可以不必每次都登录到Web控制台上去点鼠标。Ubuntu/Debian可以直接在其官方源里搜索rhc并安装,RHEL/Centos下可以用gem install rhc来,需要系统安装了Ruby和Git。

首次运行rhc需要先进行初始化,rhc setup,按照提示输入账户和密码进行初始化后,系统会生成一个token,下一次便不用再输入了,这个token也是有一定有效期的,过期之后还要重新输入密码,以下所有的rhc命令均是。

将代码克隆到本地

rhc git-clone mytest

远程登录

我觉得Openshift一个很赞的用法是可以通过ssh远程登录到你的主机平台,有些操作(比如安装Python包,比如看一下远方的环境变量设置,比如看一下远端数据库里的内容(当然Mysql数据库可以通过PhpMyadmin来看)等可以直接登录上去用。

rhc ssh <appname>

登录上去后你可以运行env看一下其中的环境变量,其中有几个要用得到的。

  • OPENSHIFT_DATA_DIR: 是指你的数据目录,指向你的代码目录下的data目录。
  • OPENSHIFT_REPO_DIR: 是指你的代码仓库根目录。
  • OPENSHIFT_POSTGRESQL_DB_URL: 用sqlalchemy访问postgresql数据库的访问字符串,Mysql的情况没有试过应该也是差不多的,这样需要在你的程序中访问数据库时便用这个环境变量来访问。
  • OPENSHIFT_PYTHON_PORT: 对外服务的端口,8080。

如果在本地环境中模拟远端的运行,则可以通过设置上述环境变量使其指向本地的路径即可。

代码的部署

克隆到本地的代码可以在本地进行修改,用Git进行版本管理,如果需要部署,可以通过git push的形式部署:

git push origin master

两点注意的是:
1. 如果有python依赖包需要安装,则可以在代码的根目录下建一个requirements.txt的文件,里面把依赖的包名称写上,这样每次你push的时候,服务端总会检查一下系统中是否安装了这些包,如果没有安装,则会在部署时用pip进行安装。
1. 如果想要在远端运行程序(比如初始化数据库)除上直接ssh上去运行外,也可以在.openshift/action_hooks目录下添加一个deploy的可执行脚本,这样在你git push进行部署的时候会自动调用这个脚本。

scp

rhc scp mytest upload initial.sql $OPENSHIFT_REPO_DIR/
rhc scp mytest download ./ $OPENSHIFT_DATA_DIR/test.log

以上两条命令一是向mytest应用的服务端拷贝文件,第二条是从远程下载文件。

创建app

刚才讲的是用Web的方式创建app,你也可以直接用rhc的方式创建:

rhc app-create mytest python-2.7 postgresql-9.2

即完成刚才Web界面点击的那套东西。

查看app的信息

rhc apps

查看远程的日志信息

rhc tail <appname>

还有一些用法可以参见rhc的帮助:

rhc help

开启cron定期运行一些程序

可以在远程部署定期运行的程序,可支持按分钟、小时、天、月、周等不同的周期定期运行程序,比如你可以在上面部署爬虫。

可以运行rhc cartridge-add cron -a 为你的程序启用cron。

然后将需要定期运行的脚本放在.openshift/cron/相应的目录下,并把其权限改为可执行的即可。

在openshift上部scrapy爬虫的步骤

有这么个资源用来部爬虫我觉得还是挺不错的,当然了,数据量超过1GB的话可能会有问题。

  1. 首先在代码目录下建一个requirements.txt的文件,然后写入:scrapy
  2. 用scrapy写爬虫,然后用git push部署。
  3. 在.openshift/cron/daily下写一个调用scrapy爬虫的脚本,并把其改为可执行文件,即可实现每天定期进行爬虫。
  4. 爬虫的结果如果存储在数据库中直接远程入库即可,如果存储为文件可以通过rhc scp的方式down下来。

我自己在使用过程中的一点建议

由于国内直接用rhc访问Openshift有些慢,一点技巧:

  • 如果在requirements.txt中写入的依赖包在push的时候安装失败(特别是对于需要编译的情况很容易失败),则可以直接登录上去安装,但最好用nohup的方式安装,这样启动了任务后你的ssh便可以退下,免得ssh断线后安装程序中断。
nohup pip install -r $OPENSHIFT_REPO_DIR/requirements.txt > /dev/null &

你可能感兴趣的:(虚拟化技术,Linux)