在OpenShift应用平台上编译和部署Redis

OpenShift官方的Application没有支持Redis,但是由于OpenShift开放了SSH权限,并且所有类型的Application都有编译环境,所以我们可以将带源码的软件编译和部署到OpenShift。也就是说,只要有充分的想象力,就可以将任何喜欢的应用部署到OpenShift,这样我们就可以让OpenShift支持Redis了。

编译Redis

Redis的编译过程非常简单,先通过SSH登陆到OpenShift,然后几条命令就搞定了:

# 切换到临时目录
cd /tmp
# 下载源代码
wget http://download.redis.io/releases/redis-2.8.9.tar.gz
# 解压文件
tar -xzvf redis-2.8.9.tar.gz
# 进入工作目录
cd redis-2.8.9
# 编译
make
# 等待1分钟左右编译完成

http://uploads.shuyz.com/2014/06/933744161.png

安装Redis

由于没有权限,我们当然不能期望通过make install这样一条简单的命令来自动安装。这里说的“安装”,其实就是把可执行文件拷贝到指定的目录,这里我们假定为${OPENSHIFT_DATA_DIR}目录,即OpenShift应用的data目录。

# 继续上一步的工作
# 先在${OPENSHIFT_DATA_DIR}目录下建立redis文件夹,我们将redis安装在这里
mkdir ${OPENSHIFT_DATA_DIR}/redis
# 这个目录用来放数据库缓存
mkdir ${OPENSHIFT_DATA_DIR}/redis/db
# 这个目录用来放配置文件
mkdir ${OPENSHIFT_DATA_DIR}/redis/conf
# 这个目录用来放可执行文件
mkdir ${OPENSHIFT_DATA_DIR}/redis/sbin

#拷贝配置文件模板到安装目录
cp redis.conf ${OPENSHIFT_DATA_DIR}/redis${OPENSHIFT_DATA_DIR}/redis/redis.conf.erb
# Redis编译后的可执行文件在src目录
cd src
# 拷贝可执行文件到安装目录
cp redis-benchmark redis-check-aof redis-check-dump redis-cli redis-sentinel redis-server ${OPENSHIFT_DATA_DIR}/redis/sbin

# 到这里安装已经完成了,记得删掉临时文件
rm -rf /tmp/redis*

# 去安装目录看看成果吧
cd ${OPENSHIFT_DATA_DIR}/redis
tree

http://uploads.shuyz.com/2014/06/3679874936.png

到这里Redis已经在OpenShift安装完成了,但是还不能直接运行,我们需要先配置一下。

配置Redis

由于配置项比较多,直接放出我的配置文件模板,点此下载

下载后上传到redis安装目录下的conf目录,覆盖掉原来的文件。

为了方便通用,模板文件里使用了OpenShift的环境变量来配置参数,使用时,只需要使用erb命令就可以生成适合你应用的配置文件:

erb ${OPENSHIFT_DATA_DIR}/redis/conf/redis.conf.erb > ${OPENSHIFT_DATA_DIR}/redis/conf/redis.conf

注意:

  1. 对于OpenShift,关键的一个配置就是bind项。由于Redis默认绑定127.0.0.1,而OpenShift应用的local ip并不是这个,所以必须修改为bind <%= ENV['OPENSHIFT_PHP_IP'] %>,我在刚开始测试时,就是由于这个配置项没注意导致客户端一直不能连接。

  2. 测试时,将logfile设为空,这样可以看到redis-server的输出;测试后,设为日志文件路径就行了。

测试Redis

服务端测试

使用下面的命令来启动Redis服务端,如果没有错误提示就说明启动成功了。这时候redis-server运行在前台,所有的日志都显示在控制台上。

${OPENSHIFT_DATA_DIR}/redis/sbin/redis-server ${OPENSHIFT_DATA_DIR}/redis/conf/redis.conf

http://uploads.shuyz.com/2014/06/2169931091.png

客户端ping测试

保持redis-server的窗口一直运行,这时我们需要启动另一个SSH窗口启动redis-cli命令行客户端。
先用ping命令测试一下连接是否通畅:

${OPENSHIFT_DATA_DIR}/redis/sbin/redis-cli -h ${OPENSHIFT_PHP_IP} -p 6379 ping

如果服务端回复PONG,说明连接没有问题。

http://uploads.shuyz.com/2014/06/572957800.png

客户端命令测试

这时候我们就可以使用命令行客户端连接服务器了:

# 连接
${OPENSHIFT_DATA_DIR}/redis/sbin/redis-cli -h ${OPENSHIFT_PHP_IP} -p 6379
# 保存测试
set testkey 123
# 读取测试
get testkey

http://uploads.shuyz.com/2014/06/2638294778.png

测试完成之后,我们就可以将将配置模板里的logfile设为具体的文件,让Redis服务端后台运行时将日志输出到文件。

Redis应用

Redis经常被用来做缓存,如果你的博客是Typecho或WordPress,你可以参考下面的文章将Redis作为网站缓存来加速网站:

参考资料

关键字:WordPress, OpenShift, typecho, redis

本文链接:树叶的BLOG >> 在OpenShift应用平台上编译和部署Redis

本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议进行许可。

上一篇 : 用Typecho Redis Cache来为Typecho提供全站超高速缓存 下一篇 : 建立一个Openwrt软件源的镜像