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取的,不翻墙的话看不到验证码,不过仅注册的这一次验证码,注册完再登录不需要翻墙便可以正常登录。
注册可能会发你一封验证邮件,点一下验证邮件里的链接即完成注册,然后便可以用此用户登录使用了。
创建新的应用
用你刚注册的用户登录,到 http://www.openshift.com 点击右上角MY ACCOUNT里的WEB CONSOLE菜单登录。登录上去可以看到你的控制台,点击下面的Add Application按钮即可新建一个应用:
点击完后需要你选择应用的类型,比如你可以选择python2.7,当然你也可以选择python3.3,选择完后会让先让你给应用起个名称,名称都会加上你的用户名后缀。
其它的选项暂时可以不用改,点击最下面的Create Application按钮,这个应用便是创建完成了。每个免费的用户可以创建3个应用,每个应用1GB的存储空间,包括数据库和语言相关包以及你的所有的程序文件共享这1GB的空间。点完Create Application后可以看到一些提示信息,不管它直接Continue即可。
服务端会给你的应用建立一个python的virtualenv,你的程序在此virtualenv中运行。
现在你的应用已经可以通过WEB进行访问了,生成的时候会自动生成一些默认的代码。
添加数据库
点击你的应用后面有个图标,可以为应用添加一个数据库,我选择用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 <appname>
为你的程序启用cron。
然后将需要定期运行的脚本放在.openshift/cron/相应的目录下,并把其权限改为可执行的即可。
在openshift上部scrapy爬虫的步骤
有这么个资源用来部爬虫我觉得还是挺不错的,当然了,数据量超过1GB的话可能会有问题。
- 首先在代码目录下建一个requirements.txt的文件,然后写入:
scrapy
。 - 用scrapy写爬虫,然后用git push部署。
- 在.openshift/cron/daily下写一个调用scrapy爬虫的脚本,并把其改为可执行文件,即可实现每天定期进行爬虫。
- 爬虫的结果如果存储在数据库中直接远程入库即可,如果存储为文件可以通过rhc scp的方式down下来。
我自己在使用过程中的一点建议
由于国内直接用rhc访问Openshift有些慢,一点技巧:
- 如果在requirements.txt中写入的依赖包在push的时候安装失败(特别是对于需要编译的情况很容易失败),则可以直接登录上去安装,但最好用nohup的方式安装,这样启动了任务后你的ssh便可以退下,免得ssh断线后安装程序中断。
nohup pip install -r $OPENSHIFT_REPO_DIR/requirements.txt > /dev/null &
Redhat Openshift云平台注册使用相关推荐
- 关于微赞,微擎,微动力模块安装时出现 版权保护,未在云平台注册 的解决办法
关于微赞,微擎,微动力模块安装时出现 版权保护,未在云平台注册 等如下之类提示: 您的程序需要在微赞云服务平台注册你的站点资料, 来接入云平台服务后才能使用相应功能. 此模块已设置版权保护,您只能通过 ...
- 阿里云平台注册与使用Linux
注册阿里云:阿里云-上云就上阿里云 (aliyun.com) 可以使用支付宝,淘宝等账号登入 阿里云与河海大学的合作:河海大学云计算技术与应用课程实验 (aliyun.com) 如果学校没有相关合作就 ...
- 在阿里云平台注册一个域名
我们访问阿里云官网 阿里云 然后 我们右上角点击登录 然后 按正常操作流程登录 登录成功后 我们点击控制台 我们将鼠标 移入 右上角 图片指向的位置 我们点击域名 进入界面后点击注册域名 在输入框中输 ...
- 怎么下载在阿里云平台注册域名的域名证书
首先登陆阿里云账号,点击控制台. 鼠标移到产品与服务,点击域名. 在想下载域名证书的域名右边点击管理. 在左边会有域名证书下载,点击即可,这样就下载好了. 如果你下载不了,可能是没有实名制域名信息吧.
- 骐俊CAT1模组 - MQTT接入腾讯云平台篇
本次实验使用骐俊ML110S系列模组及开发底板,通过MQTT协议采用密钥的方式接入腾讯云平台,实现消息的发布及订阅,可分为接入注册及动态注册两种方式. 设备注册(接入注册) A.进入腾讯云平台注册 ...
- BC26电信云平台LWM2M接入指南
BC26电信云平台LWM2M接入指南 最近使用移远BC26做了电信云平台的LWM2M介入设计,遇到几个问题,逐一解决,做个记录 准备工作 相对于移动的OneNet平台,电信平台的LWM2M接入指令完全 ...
- GSM模块联网 GPRS上传物联网云平台调试笔记
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...
- 云平台设计思路——表单篇
云平台注册成功后,首先创建项目信息,然后就可以开始创建表单信息了,在一个项目下可以创建20个表单信息,表单信息对应会在项目软件中生成表单窗体,窗体分为三种类型(纵向.横向.主次),另外表单之间可以设置 ...
- Esp8266 进阶之路35【项目篇】借助机智云平台用乐鑫esp8266芯片做一个商业化的七彩RGB灯泡可调整体方案项目,炫彩夺目高大尚。
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. Esp8266之 搭建开发环境,开始一个" ...
最新文章
- Spring详解(一):简介
- gradle 指定java版本_Eclipse使用gradle编译时,使用固定的jdk版本进行编译(修改gradle的jdk编译版本)...
- JaveWeb中实现分页的总结
- mysql 建前缀索引_MySQL_前缀索引_建立
- Codevs 1191 数轴染色
- cocos2d-x3.6 连连看随机地图实现
- apache之mod_status mod_info即时监控模块
- vb集合类接收子类事件时,给集合类赋值应注意的一个定义
- ROS下面调用自定义的头文件和.cpp/.so文件(亲测有效)
- 全网首发:成功解决UOS系统上运行JAVA程序任务栏名称问题
- Julia: MFDCCA和MFCCA算法代码
- OpenGL 编程指南 ( 原书第 9 版 ) --- 第一章
- 手机显示无法接通服务器怎么办,手机无法接通是什么原因及如何解决【图文】...
- 什么是ISCSI?ISCSI又能干什么呢?
- 阿里云 windows 服务器卸载阿里云盾
- 对php课程的建议,万紫千红总是春——对新课程语文教学、复习的建议与采饶措施a href=http://www.ruiwen.com/friend/list.php(教师中心专稿)/a...
- 2018年7月北航举办软件工程师师资培训札记
- 世界最著名的十大悖论
- 无线安全专题_破解篇03--打造个人字典
- 搜索技术-全文检索概述