Linux下redis的安装
(环境是 centos7 的虚拟机)
一、下载安装redis (需要管理员权限)
1、希望安装包下载目录
/usr/local/development/nosql/redis/download
2、希望安装目录
/usr/local/development/nosql/redis
3、下载安装
yum install gcc # make命令需要安装gcc,如果系统没有安装,就需要执行这条命令 cd /usr/local mkdir development/nosql/redis/download cd development/nosql/redis/download wget http://download.redis.io/releases/redis-3.0.7.tar.gz tar xzf redis-3.0.7.tar.gz ln -s redis-3.0.7 redis #建立一个链接 cd redis make PREFIX=/usr/local/development/nosql/redis install #安装到指定目录中
cd /usr/local/development/nosql/redis/redis-3.0.7/src ./redis-server ../redis.conf >> ../logs/redis.log & ./redis-server ../redis38002.conf >> ../logs/redis38002.log &
2、做成服务(由于虚拟机问题,linux做成服务这块我没有验证过)
a、复制脚本到/etc/rc.d/init.d目录
/etc/rc.d/init.d/目录下的脚本就类似与windows中的注册表,在系统启动的时候某些指定脚本将被执行
按以上步骤安装Redis时,其服务脚本位于:
/usr/local/development/nosql/redis/redis-3.0.7/utils/redis_init_script
必须将其复制到/etc/rc.d/init.d的目录下:
cp /usr/local/development/nosql/redis/redis-3.0.7/utils/redis_init_script /etc/rc.d/init.d/redis
将redis_init_script复制到/etc/rc.d/init.d/,同时易名为redis。
如果这时添加注册服务:
chkconfig --add redis
将报以下错误:
redis服务不支持chkconfig
为此,我们需要更改redis脚本。
b、更改redis脚本
打开使用vim打开脚本,查看脚本信息: vim /etc/rc.d/init.d/redis
看到的内容如下(下内容是更改好的信息):
#!/bin/sh #chkconfig: 2345 80 90 # Simple Redis init.d script conceived to work on Linux systems # as it does use of the /proc filesystem. REDISPORT=6379 EXEC=/usr/local/redis/bin/redis-server CLIEXEC=/usr/local/redis/bin/redis-cli PIDFILE=/var/run/redis_${REDISPORT}.pid CONF="/etc/redis/${REDISPORT}.conf" case "$1" in start) if [ -f $PIDFILE ] then echo "$PIDFILE exists, process is already running or crashed" else echo "Starting Redis server..." $EXEC $CONF & fi ;; stop) if [ ! -f $PIDFILE ] then echo "$PIDFILE does not exist, process is not running" else PID=$(cat $PIDFILE) echo "Stopping ..." $CLIEXEC -p $REDISPORT shutdown while [ -x /proc/${PID} ] do echo "Waiting for Redis to shutdown ..." sleep 1 done echo "Redis stopped" fi ;; *) echo "Please use start or stop as first argument" ;; esac
和原配置文件相比:
1.原文件是没有以下第2行的内容的,
#chkconfig: 2345 80 90
2.原文件EXEC、CLIEXEC参数,也是有所更改。
EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/bin/redis-cli
3.redis开启的命令,以后台运行的方式执行。
$EXEC $CONF &
注意后面的那个“&”,即是将服务转到后面运行的意思,否则启动服务时,Redis服务将 占据在前台,占用了主用户界面,造成其它的命令执行不了。
4.将redis配置文件拷贝到/etc/redis/${REDISPORT}.conf
mkdir /etc/redis
cp /usr/local/development/nosql/redis/redis-3.0.7/redis.conf /etc/redis/6379.conf
这样,redis服务脚本指定的CONF就存在了。默认情况下,Redis未启用认证,可以通过开启6379.conf的requirepass 指定一个验证密码。
以上操作完成后,即可注册yedis服务:
chkconfig --add redis
c.启动redis服务
service redis start
3、将Redis的命令所在目录添加到系统参数PATH中
修改profile文件:vim /etc/profile
在最后行追加:
export PATH="$PATH:/usr/local/redis/bin"
然后马上应用这个文件:
. /etc/profile
这样就可以直接调用redis-cli的命令了,如下所示:
$ redis-cli redis 127.0.0.1:6379> auth superman OK redis 127.0.0.1:6379> ping PONG redis 127.0.0.1:6379>
三、我遇到的问题:
问题一: 执行下面命令,报错 Another app is currently holding the yum lock
yum install gcc
原因:根据提示,原来是系统进程已经有一个update在运行了。在进程里查看下:ps -ef | grep update
解决方法:1、查看
ps -ef | grep update
2、kill该进程强制删除pid
rm -f /var/run/yum.pid
3、重启yum服务 (我这边没重启也行)
/sbin/service yum-updatesd restart
4、重新运行安装gcc命令
问题二:
wget 和 install gcc 的访问都被拒绝 ,不知道是不是公司网络问题,回家再试试。
四、再次安装
由于之前环境网络问题,wget和install gcc都无法下载,这次换了一个主机。
环境是 Red Hat Enterprise Linux Server release 6.5 (Santiago)
1、在使用make命令时,报错:
Last login: Sat Jul 23 01:22:47 2016 from 10.10.34.185 [boss@localhost ~]$ ls redis [boss@localhost ~]$ cd redis/ [boss@localhost redis]$ ls download [boss@localhost redis]$ cd download/ [boss@localhost download]$ ls [boss@localhost download]$ tar xzf redis-3.0.7.tar.gz [boss@localhost download]$ ln -s redis-3.0.7 redis [boss@localhost download]$ cd ../ [boss@localhost redis]$ make prefix=/home/boss/redis install make: *** 没有规则可以创建目标“install”。 停止。
发现是切换错了文件夹,改成如下即可
[boss@localhost redis]$ make prefix=/home/boss/redis install make: *** 没有规则可以创建目标“install”。 停止。 [boss@localhost redis]$ ^C [boss@localhost redis]$ cd download/ [boss@localhost download]$ ls redis redis-3.0.7 redis-3.0.7.tar.gz [boss@localhost download]$ cd redis [boss@localhost redis]$ make prefix=/home/boss/redis install cd src && make install make[1]: Entering directory `/home/boss/redis/download/redis-3.0.7/src' rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-dump redis-check-aof *.o *.gcda *.gcno *.gcov redis.info lcov-html (cd ../deps && make distclean) make[2]: Entering directory `/home/boss/redis/download/redis-3.0.7/deps' (cd hiredis && make clean) > /dev/null || true (cd linenoise && make clean) > /dev/null || true (cd lua && make clean) > /dev/null || true (cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true (rm -f .make-*) make[2]: Leaving directory `/home/boss/redis/download/redis-3.0.7/deps' (rm -f .make-*) echo STD=-std=c99 -pedantic >> .make-settings echo WARN=-Wall -W >> .make-settings echo OPT=-O2 >> .make-settings echo MALLOC=jemalloc >> .make-settings echo CFLAGS= >> .make-settings echo LDFLAGS= >> .make-settings ... MAKE hiredis cd hiredis && make static make[3]: Entering directory `/home/boss/redis/download/redis-3.0.7/deps/hiredis' gcc -std=c99 -pedantic -c -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb net.c make[3]: gcc:命令未找到 make[3]: *** [net.o] 错误 127 make[3]: Leaving directory `/home/boss/redis/download/redis-3.0.7/deps/hiredis' make[2]: *** [hiredis] 错误 2 make[2]: Leaving directory `/home/boss/redis/download/redis-3.0.7/deps' make[1]: [persist-settings] 错误 2 (忽略) CC adlist.o /bin/sh: cc: command not found make[1]: *** [adlist.o] 错误 127 make[1]: Leaving directory `/home/boss/redis/download/redis-3.0.7/src' make: *** [install] 错误 2
发现可以编译了,但是报找不到gcc错误,于是需要安装gcc,使用命令 yum install gcc
[boss@localhost redis]$ yum install gcc Loaded plugins: product-id, security, subscription-manager [Errno 13] 权限不够: '/etc/pki/entitlement' You need to be root to perform this command.
由于我不是管理员权限,不能安装,于是让管理员帮忙安装。
接着继续跑make命令
发现还是报错,还是因为权限不够
[boss@localhost redis]$ make prefix=/home/boss/redis install cd src && make install make[1]: Entering directory `/home/boss/redis/download/redis-3.0.7/src' Hint: It's a good idea to run 'make test' ;) INSTALL install install: 无法创建普通文件"/usr/local/bin/redis-server": 权限不够 make[1]: *** [install] 错误 1 make[1]: Leaving directory `/home/boss/redis/download/redis-3.0.7/src' make: *** [install] 错误 2
总结:
1、为了让编译成功,需要先安装gcc
2、使用管理员权限编译。
完整流程如下,测试通过:
[boss@localhost ~]$ yum install gcc [boss@localhost ~]$ mkdir redis/download [boss@localhost ~]$ ls redis [boss@localhost ~]$ cd redis/ [boss@localhost redis]$ ls download [boss@localhost redis]$ cd download/ [boss@localhost redis]$ wget http://download.redis.io/releases/redis-3.0.7.tar.gz [boss@localhost download]$ ls redis-3.0.7.tar.gz [boss@localhost download]$ tar xzf redis-3.0.7.tar.gz [boss@localhost download]$ ln -s redis-3.0.7 redis [boss@localhost download]$ cd redis #这个redis对应的是ln -s 软链接对应的redis目录 [boss@localhost redis]$ make prefix=/home/boss/redis install