互联网服务
2014 年 6 月 6 日
在OpenShift应用平台上编译和部署Redis
本文介绍了如何在OpenShift上编译和安装Redis,以使OpenShift支持Redis。虽然OpenShift官方的Application不支持Redis,但是由于OpenShift开放了SSH权限和编译环境,通过编译和部署源代码,可以将任何喜欢的应用部署到OpenShift。文章详细介绍了编译和安装Redis的步骤,其中包括下载源代码、解压文件、编译、安装等操作。最终,Redis将被安装在OpenShift应用的data目录中,并且可执行文件、配置文件、数据库缓存等也将被放置在相应的目录中。
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分钟左右编译完成
安装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
到这里Redis已经在OpenShift安装完成了,但是还不能直接运行,我们需要先配置一下。
配置Redis
由于配置项比较多,直接放出我的配置文件模板,点此下载
下载后上传到redis安装目录下的conf目录,覆盖掉原来的文件。
为了方便通用,模板文件里使用了OpenShift的环境变量来配置参数,使用时,只需要使用
erb
命令就可以生成适合你应用的配置文件:erb ${OPENSHIFT_DATA_DIR}/redis/conf/redis.conf.erb > ${OPENSHIFT_DATA_DIR}/redis/conf/redis.conf
注意:
-
对于OpenShift,关键的一个配置就是
bind
项。由于Redis默认绑定127.0.0.1,而OpenShift应用的local ip并不是这个,所以必须修改为bind<%= ENV['OPENSHIFT_PHP_IP'] %>
,我在刚开始测试时,就是由于这个配置项没注意导致客户端一直不能连接。 -
测试时,将
logfile
设为空,这样可以看到redis-server的输出;测试后,设为日志文件路径就行了。
测试Redis
服务端测试
使用下面的命令来启动Redis服务端,如果没有错误提示就说明启动成功了。这时候redis-server运行在前台,所有的日志都显示在控制台上。
${OPENSHIFT_DATA_DIR}/redis/sbin/redis-server ${OPENSHIFT_DATA_DIR}/redis/conf/redis.conf
客户端ping测试
保持redis-server的窗口一直运行,这时我们需要启动另一个SSH窗口启动redis-cli命令行客户端。
先用
ping
命令测试一下连接是否通畅:${OPENSHIFT_DATA_DIR}/redis/sbin/redis-cli -h ${OPENSHIFT_PHP_IP} -p 6379 ping
如果服务端回复
PONG
,说明连接没有问题。客户端命令测试
这时候我们就可以使用命令行客户端连接服务器了:
# 连接
${OPENSHIFT_DATA_DIR}/redis/sbin/redis-cli -h ${OPENSHIFT_PHP_IP} -p 6379
# 保存测试
set testkey 123
# 读取测试
get testkey
测试完成之后,我们就可以将将配置模板里的
logfile
设为具体的文件,让Redis服务端后台运行时将日志输出到文件。Redis应用i
Redis经常被用来做缓存,如果你的博客是Typecho或WordPress,你可以参考下面的文章将Redis作为网站缓存来加速网站:
参考资料
本文为原创文章,未经允许请勿非法盗用资源。我们保护知识产权,尊重每一个创作者的劳动成果。如需转载,请务必注明出处并获得授权,谢谢合作!
作者:Lance | 发表日期:2014 年 6 月 6 日