Created
January 25, 2022 16:35
-
-
Save bajpangosh/a884b80c7ca75d1b9fdc80637bdb3026 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
if [[ "$EUID" -ne 0 ]]; then | |
echo "Sorry, you need to run this as root" | |
exit | |
fi | |
while [[ -z $action ]]; do | |
clear | |
echo "What do you want to do?" | |
echo " 1) Install Redis" | |
echo " 2) Enable Redis for a site" | |
echo " 3) Disable Redis for a site" | |
echo " 4) Clear Redis cache" | |
echo " 5) Restart Redis" | |
echo " 6) Remove Redis" | |
echo | |
read -p "Action: " action | |
until [[ -z "$action" || "$action" =~ ^[1-6]$ ]]; do | |
echo "$action: invalid selection." | |
read -p "Action: " action | |
done | |
done | |
if [[ $action == "install_redis" || $action == "1" ]]; then | |
if hash redis-cli 2>/dev/null; then | |
echo | |
echo "Redis is already installed!" | |
exit | |
fi | |
apt-get update -y | |
apt-get install redis-server php7.4-redis -y | |
# Was redis installed? If the redis.conf file does not exist there's a good chance it wasn't installed properly or not at all. | |
if [ ! -f /etc/redis/redis.conf ] | |
then | |
echo "redis has not been properly installed"; | |
exit | |
fi | |
sed -i "s/supervised no/supervised systemd/g" /etc/redis/redis.conf | |
systemctl restart redis | |
echo | |
echo "Redis has been installed. You can run this script again to enable it for a site." | |
exit | |
fi | |
if [[ $action == "enable" || $action == "2" ]]; then | |
while [[ -z $domain ]]; do | |
echo | |
echo "Please, select which site you want to work with" | |
echo | |
ls /var/www/ | grep -v html | nl | |
read -p "Select site: " site_number | |
number_of_sites=$(ls /var/www/ | grep -v html | wc -l) | |
until [[ "$site_number" =~ ^[0-9]+$ && "$site_number" -le "$number_of_sites" ]]; do | |
echo "$site_number: invalid selection." | |
read -p "Select site: " site_number | |
done | |
domain=$(ls /var/www/ | grep -v html | sed -n "$site_number"p) | |
done | |
user_name=$(echo $domain | cut -c1-32) | |
if [[ -e /var/www/$domain/public/wp-content/object-cache.php ]]; then | |
echo "An object cache is already enabled for $domain" | |
echo | |
echo "If you want to enable Redis, the currently enabled cache system needs to be disabled first." | |
exit | |
fi | |
cd /var/www/$domain/public/ | |
wp plugin install --activate redis-cache --allow-root | |
cd /var/www/$domain/public/wp-content/; ln -s ./plugins/redis-cache/includes/object-cache.php ./object-cache.php | |
echo | |
echo "Redis has been enabled for $domain" | |
exit | |
fi | |
if [[ $action == "disable" || $action == "3" ]]; then | |
while [[ -z $domain ]]; do | |
echo | |
echo "Please, select which site you want to work with" | |
echo | |
ls /var/www/ | grep -v html | nl | |
read -p "Select site: " site_number | |
number_of_sites=$(ls /var/www/ | grep -v html | wc -l) | |
until [[ "$site_number" =~ ^[0-9]+$ && "$site_number" -le "$number_of_sites" ]]; do | |
echo "$site_number: invalid selection." | |
read -p "Select site: " site_number | |
done | |
domain=$(ls /var/www/ | grep -v html | sed -n "$site_number"p) | |
done | |
user_name=$(echo $domain | cut -c1-32) | |
cd /var/www/$domain/public/ | |
rm -f wp-content/object-cache.php | |
wp plugin uninstall --deactivate redis-cache --allow-root | |
echo | |
echo "Redis has been disabled for $domain" | |
exit | |
fi | |
if [[ $action == "redis_clear" || $action == "4" ]]; then | |
redis-cli FLUSHALL | |
echo | |
echo "Redis cache has been cleared" | |
exit | |
fi | |
if [[ $action == "redis_restart" || $action == "5" ]]; then | |
systemctl restart redis.service | |
echo | |
echo "Redis server has been restarted" | |
exit | |
fi | |
if [[ $action == "remove_redis" || $action == "6" ]]; then | |
apt-get remove redis-server php7.4-redis redis-tools -y | |
echo | |
echo "Redis has been removed from the system." | |
exit | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment