【编者按】一直想申请一个免费的托管空间,国内找了一圈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的话可能会有问题。

  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 &

Redhat Openshift云平台注册使用相关推荐

  1. 关于微赞,微擎,微动力模块安装时出现 版权保护,未在云平台注册 的解决办法

    关于微赞,微擎,微动力模块安装时出现 版权保护,未在云平台注册 等如下之类提示: 您的程序需要在微赞云服务平台注册你的站点资料, 来接入云平台服务后才能使用相应功能. 此模块已设置版权保护,您只能通过 ...

  2. 阿里云平台注册与使用Linux

    注册阿里云:阿里云-上云就上阿里云 (aliyun.com) 可以使用支付宝,淘宝等账号登入 阿里云与河海大学的合作:河海大学云计算技术与应用课程实验 (aliyun.com) 如果学校没有相关合作就 ...

  3. 在阿里云平台注册一个域名

    我们访问阿里云官网 阿里云 然后 我们右上角点击登录 然后 按正常操作流程登录 登录成功后 我们点击控制台 我们将鼠标 移入 右上角 图片指向的位置 我们点击域名 进入界面后点击注册域名 在输入框中输 ...

  4. 怎么下载在阿里云平台注册域名的域名证书

    首先登陆阿里云账号,点击控制台. 鼠标移到产品与服务,点击域名. 在想下载域名证书的域名右边点击管理. 在左边会有域名证书下载,点击即可,这样就下载好了. 如果你下载不了,可能是没有实名制域名信息吧.

  5. 骐俊CAT1模组 - MQTT接入腾讯云平台篇

    本次实验使用骐俊ML110S系列模组及开发底板,通过MQTT协议采用密钥的方式接入腾讯云平台,实现消息的发布及订阅,可分为接入注册及动态注册两种方式.   设备注册(接入注册) A.进入腾讯云平台注册 ...

  6. BC26电信云平台LWM2M接入指南

    BC26电信云平台LWM2M接入指南 最近使用移远BC26做了电信云平台的LWM2M介入设计,遇到几个问题,逐一解决,做个记录 准备工作 相对于移动的OneNet平台,电信平台的LWM2M接入指令完全 ...

  7. GSM模块联网 GPRS上传物联网云平台调试笔记

    <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...

  8. 云平台设计思路——表单篇

    云平台注册成功后,首先创建项目信息,然后就可以开始创建表单信息了,在一个项目下可以创建20个表单信息,表单信息对应会在项目软件中生成表单窗体,窗体分为三种类型(纵向.横向.主次),另外表单之间可以设置 ...

  9. Esp8266 进阶之路35【项目篇】借助机智云平台用乐鑫esp8266芯片做一个商业化的七彩RGB灯泡可调整体方案项目,炫彩夺目高大尚。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. Esp8266之 搭建开发环境,开始一个" ...

最新文章

  1. Spring详解(一):简介
  2. gradle 指定java版本_Eclipse使用gradle编译时,使用固定的jdk版本进行编译(修改gradle的jdk编译版本)...
  3. JaveWeb中实现分页的总结
  4. mysql 建前缀索引_MySQL_前缀索引_建立
  5. Codevs 1191 数轴染色
  6. cocos2d-x3.6 连连看随机地图实现
  7. apache之mod_status mod_info即时监控模块
  8. vb集合类接收子类事件时,给集合类赋值应注意的一个定义
  9. ROS下面调用自定义的头文件和.cpp/.so文件(亲测有效)
  10. 全网首发:成功解决UOS系统上运行JAVA程序任务栏名称问题
  11. Julia: MFDCCA和MFCCA算法代码
  12. OpenGL 编程指南 ( 原书第 9 版 ) --- 第一章
  13. 手机显示无法接通服务器怎么办,手机无法接通是什么原因及如何解决【图文】...
  14. 什么是ISCSI?ISCSI又能干什么呢?
  15. 阿里云 windows 服务器卸载阿里云盾
  16. 对php课程的建议,万紫千红总是春——对新课程语文教学、复习的建议与采饶措施a href=http://www.ruiwen.com/friend/list.php(教师中心专稿)/a...
  17. 2018年7月北航举办软件工程师师资培训札记
  18. 世界最著名的十大悖论
  19. 无线安全专题_破解篇03--打造个人字典
  20. 搜索技术-全文检索概述

热门文章

  1. Java基础——Stream
  2. 传统数据库走向消亡?
  3. 对python的理解_《对》字意思读音、组词解释及笔画数 - 新华字典 - 911查询
  4. 9大方法快速美化文字成堆的PPT!
  5. 企业微信(创建群聊会话)60011错误
  6. RJ-45双绞线的制作和测试-网络实验1
  7. COS数据处理WebP压缩 | 减少70%图像大小
  8. 远程视频监控该如何组网
  9. 为什么说指针是 C 语言的精髓
  10. LeetCode(数据库)- 统计各专业学生人数