File redis.spec of Package redis
Name: redis
Version: 6.2.14
Release: 1.iflybak%{?dist}
Summary: A persistent key-value database
License: BSD
Group: Applications/Databases
URL: https://redis.io/
Source0: redis-6.2.14.tar.gz
BuildRequires: gcc
BuildRequires: make
BuildRequires: tcl
%description
Redis is a key-value database in a similar vein to memcached, but with a rich set of datatype
s for storing more complex data types than a simple string value. Redis also provides dur
ability and atomicity guarantees by persisting changes to disk.
%prep
%setup -q -n redis-%{version}
%build
make %{?_smp_mflags}
#make test
%pre
# create user
getent group |grep redis
result=$?
if [ "$result" -ne 0 ];then
/usr/sbin/groupadd redis
fi
id redis
result=$?
if [ "$result" -ne 0 ];then
/usr/sbin/useradd -g redis -c "Redis user" -m -d ${redisHome:=/home/redis} redis
# create redis server and redis sentinel directory
mkdir ${redisHome}/redis-master/{logs,run} -p
mkdir ${redisHome}/redis-sentinel/{logs,run} -p
chown redis:redis -R ${redisHome}
fi
%install
make install PREFIX=%{buildroot}/usr/local/redis
mkdir -p %{buildroot}/etc/redis/
install -m 0645 redis.conf %{buildroot}/etc/redis/
install -m 0645 sentinel.conf %{buildroot}/etc/redis
%files
%defattr(-,redis,redis,-)
/usr/local/redis
/etc/redis
/etc/redis/redis.conf
/etc/redis/sentinel.conf
%post
if [ "$installMode" == "sentinel" ];then
if [ "$hostRole" == "master" ];then
# Edit redis public configuration variables
sed -i "s/bind 127.0.0.1/bind ${Bind:=0.0.0.0}/g" /etc/redis/redis.conf
sed -i "/# bind 127.0.0.1 192.168.1.1/a bind ${Bind}" /etc/redis/sentinel.conf
sed -i "s/daemonize no/daemonize yes/g" /etc/redis/redis.conf
sed -i "/# protected-mode no/a protected-mode yes" /etc/redis/sentinel.conf
sed -i "s/daemonize no/daemonize yes/g" /etc/redis/sentinel.conf
# Edit redis server configuration variables
sed -i "s@pidfile /var/run/redis_6379.pid@pidfile /var/run/redis_${serverPort:=6379}.pid@g" /etc/redis/redis.conf
sed -i "s/port 6379/port ${serverPort}/g" /etc/redis/redis.conf
sed -i "s@logfile .*@logfile ${redisHome}/redis-master/logs/log${serverPort}.log@g" /etc/redis/redis.conf
sed -i "s@dir ./@dir ${redisHome}/redis-master/run@g" /etc/redis/redis.conf
sed -i "/# masterauth <master-password>/a masterauth ${password:=Iflybank@2024}" /etc/redis/redis.conf
sed -i "/# requirepass foobared/a requirepass ${password}" /etc/redis/redis.conf
# Edit redis sentinel configuration variables
sed -i "s/port 26379/port ${sentinelPort:=26379}/g" /etc/redis/sentinel.conf
sed -i "s@pidfile /var/run/redis-sentinel.pid@pidfile /var/run/redis_${sentinelPort}.pid@g" /etc/redis/sentinel.conf
sed -i "s@logfile .*@logfile ${redisHome}/redis-sentinel/logs/log${sentinelPort}.log@g" /etc/redis/sentinel.conf
sed -i "s@dir /tmp@dir ${redisHome}/redis-sentinel/run@g" /etc/redis/sentinel.conf
sed -i "s/sentinel monitor mymaster 127.0.0.1 6379 2/sentinel monitor ${mastername:=redisMaster} ${masterip:=127.0.0.1} ${masterport:-6379} 2/g" /etc/redis/sentinel.conf
sed -i "s/sentinel down-after-milliseconds mymaster 30000/sentinel down-after-milliseconds ${mastername} 30000/g" /etc/redis/sentinel.conf
sed -i "s/sentinel parallel-syncs mymaster 1/sentinel parallel-syncs ${mastername} 1/g" /etc/redis/sentinel.conf
sed -i "s/sentinel failover-timeout mymaster 180000/sentinel failover-timeout ${mastername} 180000/g" /etc/redis/sentinel.conf
sed -i "/# sentinel auth-pass <master-name> <password>/a sentinel auth-pass ${mastername} ${password:-Iflybank@2024}" /etc/redis/sentinel.conf
else
# Edit redis public configuration variables
sed -i "s/bind 127.0.0.1/bind ${Bind:=0.0.0.0}/g" /etc/redis/redis.conf
sed -i "/# bind 127.0.0.1 192.168.1.1/a bind ${Bind}" /etc/redis/sentinel.conf
sed -i "s/daemonize no/daemonize yes/g" /etc/redis/redis.conf
sed -i "/# protected-mode no/a protected-mode yes" /etc/redis/sentinel.conf
sed -i "s/daemonize no/daemonize yes/g" /etc/redis/sentinel.conf
# Edit redis server configuration variables
sed -i "s@pidfile /var/run/redis_6379.pid@pidfile /var/run/redis_${serverPort:=6379}.pid@g" /etc/redis/redis.conf
sed -i "s/port 6379/port ${serverPort}/g" /etc/redis/redis.conf
sed -i "s@logfile .*@logfile ${redisHome}/redis-master/logs/log${serverPort}.log@g" /etc/redis/redis.conf
sed -i "s@dir ./@dir ${redisHome}/redis-master/run@g" /etc/redis/redis.conf
sed -i "/# masterauth <master-password>/a masterauth ${password:=Iflybank@2024}" /etc/redis/redis.conf
sed -i "/# replicaof <masterip> <masterport>/a replicaof ${masterip:-127.0.0.1} ${masterport:-6379}" /etc/redis/redis.conf
sed -i "/# requirepass foobared/a requirepass ${password}" /etc/redis/redis.conf
# Edit redis sentinel configuration variables
sed -i "s/port 26379/port ${sentinelPort:=26379}/g" /etc/redis/sentinel.conf
sed -i "s@pidfile /var/run/redis-sentinel.pid@pidfile /var/run/redis_${sentinelPort}.pid@g" /etc/redis/sentinel.conf
sed -i "s@logfile .*@logfile ${redisHome}/redis-sentinel/logs/log${sentinelPort}.log@g" /etc/redis/sentinel.conf
sed -i "s@dir /tmp@dir ${redisHome}/redis-sentinel/run@g" /etc/redis/sentinel.conf
sed -i "s/sentinel monitor mymaster 127.0.0.1 6379 2/sentinel monitor ${mastername:=redisMaster} ${masterip:=127.0.0.1} ${masterport:-6379} 2/g" /etc/redis/sentinel.conf
sed -i "s/sentinel down-after-milliseconds mymaster 30000/sentinel down-after-milliseconds ${mastername} 30000/g" /etc/redis/sentinel.conf
sed -i "s/sentinel parallel-syncs mymaster 1/sentinel parallel-syncs ${mastername} 1/g" /etc/redis/sentinel.conf
sed -i "s/sentinel failover-timeout mymaster 180000/sentinel failover-timeout ${mastername} 180000/g" /etc/redis/sentinel.conf
sed -i "/# sentinel auth-pass <master-name> <password>/a sentinel auth-pass ${mastername} ${password:-Iflybank@2024}" /etc/redis/sentinel.conf
fi
elif [ "$installMode" == "sentinel" ];then
if [ "$hostRole" == "master" ];then
# Edit redis public configuration variables
sed -i "s/bind 127.0.0.1/bind ${Bind:=0.0.0.0}/g" /etc/redis/redis.conf
sed -i "s/daemonize no/daemonize yes/g" /etc/redis/redis.conf
sed -i "s/daemonize no/daemonize yes/g" /etc/redis/sentinel.conf
# Edit redis server configuration variables
sed -i "s@pidfile /var/run/redis_6379.pid@pidfile /var/run/redis_${serverPort:=6379}.pid@g" /etc/redis/redis.conf
sed -i "s/port 6379/port ${serverPort}/g" /etc/redis/redis.conf
sed -i "s@logfile .*@logfile ${redisHome}/redis-master/logs/log${serverPort}.log@g" /etc/redis/redis.conf
sed -i "s@dir ./@dir ${redisHome}/redis-master/run@g" /etc/redis/redis.conf
sed -i "/# masterauth <master-password>/a masterauth ${password:=Iflybank@2024}" /etc/redis/redis.conf
sed -i "/# requirepass foobared/a requirepass ${password}" /etc/redis/redis.conf
else
# Edit redis public configuration variables
sed -i "s/bind 127.0.0.1/bind ${Bind:=0.0.0.0}/g" /etc/redis/redis.conf
sed -i "/# bind 127.0.0.1 192.168.1.1/a bind ${Bind}" /etc/redis/sentinel.conf
sed -i "s/daemonize no/daemonize yes/g" /etc/redis/redis.conf
sed -i "/# protected-mode no/a protected-mode yes" /etc/redis/sentinel.conf
sed -i "s/daemonize no/daemonize yes/g" /etc/redis/sentinel.conf
# Edit redis server configuration variables
sed -i "s@pidfile /var/run/redis_6379.pid@pidfile /var/run/redis_${serverPort:=6379}.pid@g" /etc/redis/redis.conf
sed -i "s/port 6379/port ${serverPort}/g" /etc/redis/redis.conf
sed -i "s@logfile .*@logfile ${redisHome}/redis-master/logs/log${serverPort}.log@g" /etc/redis/redis.conf
sed -i "s@dir ./@dir ${redisHome}/redis-master/run@g" /etc/redis/redis.conf
sed -i "/# masterauth <master-password>/a masterauth ${password:=Iflybank@2024}" /etc/redis/redis.conf
sed -i "/# replicaof <masterip> <masterport>/a replicaof ${masterip:-127.0.0.1} ${masterport:-6379}" /etc/redis/redis.conf
sed -i "/# requirepass foobared/a requirepass ${password}" /etc/redis/redis.conf
fi
else
# Edit redis public configuration variables
sed -i "s/bind 127.0.0.1/bind ${Bind:=0.0.0.0}/g" /etc/redis/redis.conf
sed -i "s/daemonize no/daemonize yes/g" /etc/redis/redis.conf
sed -i "s/daemonize no/daemonize yes/g" /etc/redis/sentinel.conf
# Edit redis server configuration variables
sed -i "s@pidfile /var/run/redis_6379.pid@pidfile /var/run/redis_${serverPort:=6379}.pid@g" /etc/redis/redis.conf
sed -i "s/port 6379/port ${serverPort}/g" /etc/redis/redis.conf
sed -i "s@logfile .*@logfile ${redisHome}/redis-master/logs/log${serverPort}.log@g" /etc/redis/redis.conf
sed -i "s@dir ./@dir ${redisHome}/redis-master/run@g" /etc/redis/redis.conf
sed -i "/# masterauth <master-password>/a masterauth ${password:=Iflybank@2024}" /etc/redis/redis.conf
sed -i "/# requirepass foobared/a requirepass ${password}" /etc/redis/redis.conf
fi