Openshift 指南

2012年5月21日 12:07

Openshift 是 RedHat 推出的 PaaS. 从 wr 那里听说的, 这几天一直在玩儿, 感觉很不错, 相比一直以来在压榨的 gae 来说, 更自由, 更像个 vps, 没有明确的配额限制, 用 git 直接提交, 有多个数据库可选, 有简单的 ssh 等等. 简单记录一下, 方便再折腾.

首先在 https://openshift.redhat.com/app/ 注册, 看看首页上的那些语言, 总有一门适合你!

进入后, 可以在 web 上建立 app, 选择语言和平台就好了.

点进去 app 的管理页面, 没有意象之中的繁杂的各种管理选项, 只列出了当前用的语言和本项目的 git 地址. 等等, 这里还有一个隐藏功能, 就是添加 cartridge. 点右上角那个加号, 可以看到可以添加 MongoDB, MySQL, PostgreSQL 这几个数据库和对应的管理界面 RockMongo, PhpMyAdmin, 还有 Cron 可以定时执行任务, 还有个废柴的 Openshift Metrics 会显示 cpu 和 mem 消耗, 最后还有个不明真相的 Jenkins Client. 这个界面不能显示安装了的 cartridge 的端口啊密码啊等信息, 也不能删除 cartridge, Orz.

言而总之, web 界面就是个摆设, 牛逼的工具都在叫 rhc 的命令行工具包里. 在下面链接里有 mac, win, linux 下的安装指南. 看到上面说 win 下需要 Cygwin, 原来觉得这个挺好, 现在觉得挺不伦不类的, 还不如直接到 linux 里折腾. Arch 里 AUR 里就有 rhc, 可以看出丫其实就是一个 Ruby gem, 安装过程也主要就是补齐 gems 依赖: ruby-rest-client, ruby-parseconfig, ruby-json.

在 web 上创建 app 时, 应该就已经让你选一个 domain 做为 app 的后缀了, 不得不说又长又难看. 下面举例说明一下命令用法.

console 下创建 domain, 即使在 web 端做了, 本地也有必要做一下:

rhc domain create -n $NAMESPACE -l $USERNAME

会在 ~/.ssh 下生成 libra_id_rsa.pub 文件, 可在 web 的 My account 页面加入 public keys.

创建 app:

rhc app create -a $APPNAME -t python-2.6

app 这个子命令下还有 start, stop, tail, add-alias, cartridge 等有用的子命令, 用法类似. add-alias 可以绑定域名, tail 可以看 log, 这个超有用, cartridge 下 又有 add, remove 等子命令可以操作 cartridges.

git clone 一下 app 的 git 地址, 会得到一个如下的目录(以python为例):

.
|-- .git/
|-- .gitignore
|-- .openshift/
|-- data/
|-- libs/
|-- README
|-- README.md
|-- setup.py
`-- wsgi/
    |-- application
    `-- static/
        `-- README

README 必读, 有各目录的用法, 一些有用的环境变量. wsgi/ 目录里放代码, application 是主程序, 如何修改参见下面链接里的例子. wsgi/static/ 目录里放静态文件, 放进去后代码里用 href='/static/...' 就行了. data 和 libs 尚不会用. setup.py 文件里可以配置 install_requires 项包含项目所需的包如 pymongo, bottle, django, 尚不知那些包可自动安装.

app 的 git 地址里的那个 ssh 可以直接登录的! 有 .git/ 和一些 logs 可以看.

关于 bottle 需要说明的一点是,在 "./views" 下是找不到模板的,请添加这一句,其他本地文件操作也请参考:

bottle.TEMPLATE_PATH.append(
  os.path.join(os.environ['OPENSHIFT_GEAR_DIR'],
               'runtime/repo/wsgi/views/'))

另外关于 mongodb 有一些诡异, 用的不是 README 里说的环境变量, 而是 'OPENSHIFT_NOSQL_DB_USERNAME' 这种的, 第一次用会怎么也连不上, 需要在代码里替换变量为在命令行下添加 mongodb 时给出的信息, 连一次以后就好了. 如果不是在命令行下添加的或者没有记下, 可以参考下面链接里的例子里的 '/DEBUG/env' 查看所有环境变量, 或者可能可以 ssh 进去看.

有用的一些链接:
bottle+mongodb实现的山寨twitter
使用bottle的例子
官方安装指南
官方命令详解

评论(3) 阅读(14146)

reeeder for stylish

2012年4月24日 10:37

回到学校, 没有mac, 没有reeder, 刷GR变成一件不能忍受的事了. 虽然chrome上有个非官方的reeder插件, 但是我们firefox党是有底线的啊啊啊! 遂心血来潮调教一下GR娘, 文字瘦身行距加大背景换换颜色之类的. 之所以用stylish而不是油猴, 是因为后者是js的而stylish只用写写css就好了. 折腾时多亏了firefox的自带的查看工具和firebug. 我觉得效果还可以:

reeeder for stylish

代码在gist上, 注释良好.

update: 一段时间的使用和修改后, 放到 userstyles.org 上了, 可在此直接安装: http://userstyles.org/styles/68750/reeeder

Tags: reeder for firefox
评论(1) 阅读(2702)

SICP Ch1

2011年6月05日 00:09

我的部分练习题解答,望指正

评论(1) 阅读(1684)

[转]Guile Common Problems

2011年5月26日 12:09

来自这儿的Google Notebook

作者是王垠,不过貌似他的主页上已经找不到这篇文章

很多内容可以进一步info guile解决

评论(1) 阅读(3192)

删除ipv6隧道

2011年2月26日 11:29

cmd->netsh->interface->ipv6->teredo->set state disable

cmd->netsh->interface->ipv6->isatap ->set state disable

评论(0) 阅读(3570)