ソースインストールredis初期化インスタンススクリプト
13736 ワード
1 #!/bin/bash -
2 #Date: 2014-05-20
3 #Auth: Jin
4
5 version='2.8.7'
6 progname='redis'
7 pkgname="${progname}-${version}"
8 pkgfilename="${pkgname}.tar.gz"
9 installdir="/usr/local/${progname}"
10 logdir="/var/log/${progname}"
11 installbindir="${installdir}/bin"
12 installetcdir="${installdir}/etc"
13 datadir='/data/redis'
14 binfile='redis-server redis-cli redis-check-aof redis-check-dump redis-benchmark redis-sentinel'
15
16
17 function install_redis() {
18 test -f /etc/redhat-release && PKGM=yum || PKG=zypper
19 ${PKGM} install gcc wget
20 ### create base dir ###
21 mkdir -p ${datadir}
22 mkdir -p ${installbindir}
23 mkdir -p ${installetcdir}
24 ### down and copy bin ###
25 mkdir -p ~root/Downloads/ && cd ~root/Downloads/
26 test -f ${pkgfilename} || wget http://download.redis.io/releases/${pkgfilename} && tar -zxvf ${pkgfilename} && cd ${pkgname}
27 make MALLOC=libc && find ./src -perm 755 -exec cp {} ${installbindir}/ \;
28 #for i in ${binfile};do
29 # cp ${i} ${installbindir}/ && echo "Install $i OK"
30 #done
31 ### config file ###
32 cp ./redis.conf ${installetcdir}/ && echo "Install redis.conf OK"
33 ### kernel option of ram is low ###a
34 #echo 'vm.overcommit_memory=1' >> /etc/sysctl.conf && sysctl -p /etc/sysctl.conf
35 }
36
37
38 function config_instance(){
39 if [ $# -eq 1 ];then
40 port=$1
41 else
42 echo 'Please give instance port!'
43 exit 1
44 fi
45
46 grep -vE '^$|^#' ${installetcdir}/redis.conf > ${installetcdir}/${port}.conf
47 #set port number
48 sed -i /port/s/6379/${port}/ ${installetcdir}/${port}.conf
49 #enable daemonize
50 sed -i /daemonize/s/no/yes/ ${installetcdir}/${port}.conf
51 #set pid with port number
52 sed -i /pidfile/s/redis.pid/redis-${port}.pid/ ${installetcdir}/${port}.conf
53 #data
54 mkdir -p ${datadir}/${port}
55 sed -i "/dir/s/\.\//\/data\/redis\/${port}/" ${installetcdir}/${port}.conf
56 #set logfile with port number
57 #LOG ,
58 sed -i "/logfile/s/\"\"/${port}\.log/" ${installetcdir}/${port}.conf
59 ##start intance
60 cd ${installdir} && ${installbindir}/redis-server ${installetcdir}/${port}.conf
61 }
62
63 function uninstall_redis() {
64 rm -rf ${datadir} && echo "Clean ${datadir} OK"
65 rm -rf ${installdir} && echo "Clean ${installdir} OK"
66 }
67
68 #main
69 if [ $# -ge 1 ];then
70 if [ $1 = 'install' ];then
71 echo 'Install'
72 install_redis
73 elif [ $1 = 'uninstall' ];then
74 uninstall_redis
75 elif [ $1 = 'confinstance' ];then
76 if [ $# -eq 2 ];then
77 port=$2
78 config_instance $port
79 else
80 echo "Please give a instance port!"
81 fi
82 else
83 echo "Usage: ${0} {install|uninstall|confinstance [portnumber]}"
84 fi
85 else
86 echo "Usage: ${0} {install|uninstall|confinstance [portnumber]}"
87 fi