2021-08-19 06:35:24 +08:00

132 lines
4.5 KiB
Bash

#!/usr/bin/env bash
Install_Redis()
{
echo "====== Installing Redis ======"
echo "Install ${Redis_Stable_Ver} Stable Version..."
Press_Start
rm -f ${PHP_Path}/conf.d/007-redis.ini
Addons_Get_PHP_Ext_Dir
zend_ext="${zend_ext_dir}redis.so"
if [ -s "${zend_ext}" ]; then
rm -f "${zend_ext}"
fi
cd ${cur_dir}/src
if [ -s /usr/local/redis/bin/redis-server ]; then
echo "Redis server already exists."
else
if gcc -dumpversion|grep -q "^[34]."; then
Redis_Stable_Ver='redis-5.0.9'
fi
Download_Files http://download.redis.io/releases/${Redis_Stable_Ver}.tar.gz ${Redis_Stable_Ver}.tar.gz
Tar_Cd ${Redis_Stable_Ver}.tar.gz ${Redis_Stable_Ver}
Get_OS_Bit
Get_ARM
if [ "${Is_ARM}" = "y" ]; then
sed -i 's/FINAL_LIBS=-lm/FINAL_LIBS=-lm -latomic/' src/Makefile
fi
if [[ "${Is_64bit}" = "y" || "${Is_ARM}" = "y" ]]; then
make PREFIX=/usr/local/redis install
else
make CFLAGS="-march=i686" PREFIX=/usr/local/redis install
fi
mkdir -p /usr/local/redis/etc/
\cp redis.conf /usr/local/redis/etc/
sed -i 's/daemonize no/daemonize yes/g' /usr/local/redis/etc/redis.conf
if ! grep -Eqi '^bind[[:space:]]*127.0.0.1' /usr/local/redis/etc/redis.conf; then
sed -i 's/^# bind 127.0.0.1/bind 127.0.0.1/g' /usr/local/redis/etc/redis.conf
fi
sed -i 's#^pidfile /var/run/redis_6379.pid#pidfile /var/run/redis.pid#g' /usr/local/redis/etc/redis.conf
cd ../
rm -rf ${cur_dir}/src/${Redis_Stable_Ver}
if command -v iptables >/dev/null 2>&1; then
if iptables -C INPUT -i lo -j ACCEPT; then
iptables -A INPUT -p tcp --dport 6379 -j DROP
if [ "$PM" = "yum" ]; then
service iptables save
service iptables reload
elif [ "$PM" = "apt" ]; then
if [ -s /etc/init.d/netfilter-persistent ]; then
/etc/init.d/netfilter-persistent save
/etc/init.d/netfilter-persistent reload
else
/etc/init.d/iptables-persistent save
/etc/init.d/iptables-persistent reload
fi
fi
fi
fi
fi
if [ -s ${PHPRedis_Ver} ]; then
rm -rf ${PHPRedis_Ver}
fi
if echo "${Cur_PHP_Version}" | grep -Eqi '^5.2.';then
Download_Files http://pecl.php.net/get/redis-2.2.7.tgz redis-2.2.7.tgz
Tar_Cd redis-2.2.7.tgz redis-2.2.7
elif echo "${Cur_PHP_Version}" | grep -Eqi '^5.[3456].';then
Download_Files http://pecl.php.net/get/redis-4.3.0.tgz redis-4.3.0.tgz
Tar_Cd redis-4.3.0.tgz redis-4.3.0
else
Download_Files http://pecl.php.net/get/${PHPRedis_Ver}.tgz ${PHPRedis_Ver}.tgz
Tar_Cd ${PHPRedis_Ver}.tgz ${PHPRedis_Ver}
fi
${PHP_Path}/bin/phpize
./configure --with-php-config=${PHP_Path}/bin/php-config
Make_Install
cd ../
cat >${PHP_Path}/conf.d/007-redis.ini<<EOF
extension = "redis.so"
EOF
\cp ${cur_dir}/init.d/init.d.redis /etc/init.d/redis
\cp ${cur_dir}/init.d/redis.service /etc/systemd/system/redis.service
chmod +x /etc/init.d/redis
echo "Add to auto startup..."
StartUp redis
Restart_PHP
StartOrStop start redis
if [ -s "${zend_ext}" ] && [ -s /usr/local/redis/bin/redis-server ]; then
Echo_Green "====== Redis install completed ======"
Echo_Green "Redis installed successfully, enjoy it!"
else
rm -f ${PHP_Path}/conf.d/007-redis.ini
Echo_Red "Redis install failed!"
fi
}
Uninstall_Redis()
{
echo "You will uninstall Redis..."
Press_Start
rm -f ${PHP_Path}/conf.d/007-redis.ini
Restart_PHP
Remove_StartUp redis
echo "Delete Redis files..."
rm -rf /usr/local/redis
rm -rf /etc/init.d/redis
if command -v iptables >/dev/null 2>&1; then
iptables -D INPUT -p tcp --dport 6379 -j DROP
if [ "$PM" = "yum" ]; then
service iptables save
service iptables reload
elif [ "$PM" = "apt" ]; then
if [ -s /etc/init.d/netfilter-persistent ]; then
/etc/init.d/netfilter-persistent save
/etc/init.d/netfilter-persistent reload
else
/etc/init.d/iptables-persistent save
/etc/init.d/iptables-persistent reload
fi
fi
fi
Echo_Green "Uninstall Redis completed."
}