Linux下Redis数据库的安装做法与自动启动脚本分享实用指南
平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“Linux下Redis数据库的安装做法与自动启动脚本分享”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
安装Redis
(1) 下载Redis
wget http://redis.googlecode.com/files/redis-2.2.11.tar.gz
tar xzvf redis-2.2.11.tar.gz
(2) 编译并安装Redis
make && make install
(3) 复制并修改设置文件
cp redis.conf /etc/redis.conf
vi /etc/redis.conf
注意修改以下几项:
daemonize yes
loglevel warning
logfile /var/log/redis.log
maxmemory 2GB
(自行斟酌是不要开通Virtual Memory选项)
(4) 设置Redis-Server自动启动服务
结合项目来看,上网下载启动脚本(gist.github.com,搜索redis init.d),同时轻松修改
(至少需修改redis、REDIS_CONF_FILE)
vi /etc/init.d/redisctl
chmod 755 redisctl
cp /etc/init.d/redisctl /etc/rc.d/init.d/redisctl
&& ln -s /etc/init.d/redisctl /etc/rc.d/rc2.d/S90redisctl && ln -s /etc/init.d/redisctl /etc/rc.d/rc3.d/S90redisctl
&& ln -s /etc/init.d/redisctl /etc/rc.d/rc4.d/S90redisctl && ln -s /etc/init.d/mongod /etc/rc.d/rc5.d/S90redisctl
chkconfig --add redisctl
(5) 重新启动后能够测试redis-server是否正常启动
```redis-cli set foo Bar
redis-cli get foo
Redis自动启动脚本
```ruby
#!/bin/sh
#
# redis - this script starts and stops the redis-server daemon
#
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
# processname: redis-server
# config: /etc/redis.conf
# config: /etc/sysconfig/redis
# pidfile: /var/run/redis.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
redis="/usr/local/bin/redis-server"
prog=$(basename $redis)
REDIS_CONF_FILE="/etc/redis.conf"
[ -f /etc/sysconfig/redis ] && . /etc/sysconfig/redis
lockfile=/var/lock/subsys/redis
start() {
[ -x $redis ] || exit 5
[ -f $REDIS_CONF_FILE ] || exit 6
echo -n $"Starting $prog: "
daemon $redis $REDIS_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
stop
start
}
reload() {
echo -n $"Reloading $prog: "
killproc $redis -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
stop
start
}
reload() {
echo -n $"Reloading $prog: "
killproc $redis -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
stop
start
}
reload() {
echo -n $"Reloading $prog: "
killproc $redis -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
exit 2
esac
Redis自动启动脚本
记得修改:
(1) —chuid group:user
在这个场景下,(2) ln /etc/init.d/redisctl /etc/rc2.d/redisctl,重复rc3,rc4,rc5
启动脚本:
#! /bin/sh
### BEGIN INIT INFO
# Provides: redis-server
# Required-Start: $syslog
# Required-Stop: $syslog
# Should-Start: $local_fs
# Should-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: redis-server - Persistent key-value db
# Description: redis-server - Persistent key-value db
### END INIT INFO
DAEMON=/usr/local/bin/redis-server
DAEMON_ARGS=/etc/redis.conf
NAME=redis-server
DESC=redis-server
PIDFILE=/var/run/redis.pid
test -x $DAEMON || exit 0
test -x $DAEMONBOOTSTRAP || exit 0
set -e
case "$1" in
start)
echo -n "Starting $DESC: "
touch $PIDFILE
# chown redis:redis $PIDFILE
if start-stop-daemon —start —quiet —umask 007 —pidfile $PIDFILE —chuid redis:redis —exec $DAEMON — $DAEMON_ARGS
then
echo "$NAME."
else
echo "failed"
fi
;;
stop)
echo -n "Stopping $DESC: "
if start-stop-daemon —stop —retry 10 —quiet —oknodo —pidfile $PIDFILE —exec $DAEMON
then
echo "$NAME."
else
echo "failed"
fi
rm -f $PIDFILE
;;
restart|force-reload)
${0} stop
${0} start
;;
*)
echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
您可能感兴趣的文章:
- CentOS下redis自启动shell脚本
- Centos下设置Redis开机启动脚本
- windows下借助批处理脚本启动redis的操作
- Windows系统一键启动Redis脚本
相关资讯
-
09.03
Cinematic East Asian Woman Portrait
-
09.03
旅行社活动策划总结:如何通过AI写作提升客户体验与市场份额!
-
09.03
Candid East Asian Street Photography
-
09.03
Preppy High-Angle Fashion Portrait
-
09.03
Urban Realism Elevator Portrait
-
09.03
谷歌开始肢解DeepMind,数个团队被划归总部
游戏推荐
推荐专题
热门阅读
-
-
- 完整指南Ruby中的代码块及其参数传递
- 09.03
-
-
-
-
- AI 面试模拟系统-主要信息和内容重点
- 09.03
推荐下载
-
-
下载
- |
-
-
下载
- 《行尸走肉第一章》免安装中文汉化硬盘版下载
- 单机|436 MB
- 一款以动作冒险为主题的游戏
-
-
下载
- 《街头霸王X铁拳》免安装中文汉化硬盘版下载
- 单机|111MB
- 一款非常好玩的格斗游戏
-
-
下载
- |
-
-
下载
- 《暗黑破坏神3》免安装繁体中文正式版下载
- 单机|7630 MB
- 一款以角色扮演为主题的游戏
-
-
下载
- 《马克思佩恩3》免安装硬盘版下载
- 单机|27033 MB
- 一款以第三人称射击为主题的游戏