一台服务器部署多个站点时,第一个网站装了Redis插件,连接成功。由于只有一个redis端口,当第二个、第三个网站装了Redis扩展后自动跳转到第一个站点了。所以在多个网站部署后会产生冲突,因此导致在一台电脑上访问同一个服务器上不同的网站,就会把另一个网站的redis节点给弹出去,真心的不爽!
需要解决的问题点:
解决方案如下:
第一步:拷贝多个redis.conf并修改配置,这个自己想怎么搞就这么搞……
#cd /www/server/regis
#cp redis.conf redis6380.conf
#vi redis6380.conf #注:修改redis6380.conf这一步可以进宝塔面板修改,只修改以下几项哦
port 6380
pidfile /www/server/redis/redis_6380.pid
logfile "/www/server/redis/redis_6380.log"
dbfilename dump_6380.rdb
第二步:进入/etc/init.d目录,拷贝多个redis启动项并修改配置,这个自己严格按照要求来搞……
#cd /etc/init.d
#cp redis redis6380
#vi redis6380
修改下面脚本中的REDIS_PORT端口号
#!/bin/sh
# chkconfig: 2345 56 26
# description: Redis Service
### BEGIN INIT INFO
# Provides: Redis
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts Redis
# Description: starts the BT-Web
### END INIT INFO
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
REDIS_PORT="6380"
CONF="/www/server/redis/redis${REDIS_PORT}.conf"
REDISPORT=$(cat $CONF |grep port|grep -v '#'|awk '{print $2}')
REDISPASS=$(cat $CONF |grep requirepass|grep -v '#'|awk '{print $2}')
REDISHOST=$(cat $CONF |grep bind|grep -v '#'|awk '{print $2}')
if [ "$REDISPASS" != "" ];then
REDISPASS=" -a $REDISPASS"
fi
if [ -f "/www/server/redis/start${REDIS_PORT}.pl" ];then
STARPORT=$(cat /www/server/redis/start${REDIS_PORT}.pl)
else
STARPORT="${REDIS_PORT}"
fi
EXEC=/www/server/redis/src/redis-server
CLIEXEC="/www/server/redis/src/redis-cli -h $REDISHOST -p $STARPORT$REDISPASS"
PIDFILE=/var/run/redis_${REDIS_PORT}.pid
redis_start(){
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis server..."
nohup sudo -u redis $EXEC $CONF >> /www/server/redis/logs${REDIS_PORT}.pl 2>&1 &
echo ${REDISPORT} > /www/server/redis/start${REDIS_PORT}.pl
fi
}
redis_stop(){
echo "Stopping ..."
$CLIEXEC shutdown
sleep 1
PID=`ps aux|grep "sudo -u redis"|grep -v "grep"|grep -v "/etc/init.d/redis${REDIS_PORT}"|awk '{print $2}'`
if [ "${PID}" != "" ];then
sleep 3
pkill -9 redis-server
rm -f $PIDFILE
fi
echo "Redis stopped"
}
case "$1" in
start)
redis_start
;;
stop)
redis_stop
;;
restart|reload)
redis_stop
sleep 0.3
redis_start
;;
*)
echo "Please use start or stop as first argument"
;;
esac
第三步:把redis6380……添加到自启动项,查看启动项
#cd /etc/init.d
#chkconfig --add redis6380 或 #chkconfig redis6380 on
#chkconfig --list
注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。
要列出 systemd 服务,请执行 'systemctl list-unit-files'。
查看在具体 target 启用的服务请执行
'systemctl list-dependencies [target]'。
bt 0:关 1:关 2:开 3:开 4:开 5:开 6:关
bt_syssafe 0:关 1:关 2:开 3:开 4:开 5:开 6:关
memcached 0:关 1:关 2:开 3:开 4:开 5:开 6:关
mysqld 0:关 1:关 2:开 3:开 4:开 5:开 6:关
netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关
network 0:关 1:关 2:开 3:开 4:开 5:开 6:关
nginx 0:关 1:关 2:开 3:开 4:开 5:开 6:关
php-fpm-54 0:关 1:关 2:开 3:开 4:开 5:开 6:关
php-fpm-56 0:关 1:关 2:开 3:开 4:开 5:开 6:关
redis 0:关 1:关 2:开 3:开 4:开 5:开 6:关
redis6380 0:关 1:关 2:开 3:开 4:开 5:开 6:关
redis6381 0:关 1:关 2:开 3:开 4:开 5:开 6:关
同样的方法,你想要加N多个都行,接下来就随便搞吧…
加入启动项后,立即启动方法:
cd /etc/init.d
./redis6380 start
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...