β

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

树叶的BLOG 70 阅读

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分钟左右编译完成

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

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

2169931091.png

客户端ping测试

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

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

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

572957800.png

客户端命令测试

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

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

2638294778.png

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

Redis应用i

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

参考资料

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

作者:树叶的BLOG
——折腾是一门生活艺术
原文地址:在OpenShift应用平台上编译和部署Redis, 感谢原作者分享。

发表评论