Linux下redis的安装

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 #安装到指定目录中
 
二、redis启动:
 
1、命令启动
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

文章源自微信公众号【刍荛采葑菲】,转载请注明。

原文地址:https://www.cnblogs.com/churao/p/8509697.html