Script-Collected/sh/redis/fix_redis.sh

85 lines
2.9 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Rocky Linux 8 Redis 5.x 基础配置脚本
# 功能配置Redis允许外部访问设置密码基础优化
# 检查是否为root用户
if [ "$(id -u)" -ne 0 ]; then
echo "请使用root用户运行此脚本!"
exit 1
fi
# 定义配置参数
REDIS_PASSWORD="hsc1825713423"
REDIS_CONFIG="/etc/redis.conf"
REDIS_PORT=6379
REDIS_BIND_IP="0.0.0.0" # 允许所有IP访问
# 备份原始配置文件
echo "备份原始配置文件到 /etc/redis.conf.bak..."
cp "$REDIS_CONFIG" "${REDIS_CONFIG}.bak"
# 基础安全配置
echo "配置Redis基础安全设置..."
sed -i "s/^# requirepass .*/requirepass $REDIS_PASSWORD/" "$REDIS_CONFIG"
sed -i "s/^bind 127.0.0.1/bind $REDIS_BIND_IP/" "$REDIS_CONFIG"
sed -i "s/^protected-mode yes/protected-mode no/" "$REDIS_CONFIG" # 关闭保护模式以允许远程访问
# 性能优化配置
echo "配置性能优化参数..."
sed -i "s/^# tcp-keepalive 300/tcp-keepalive 60/" "$REDIS_CONFIG"
sed -i "s/^# maxmemory-policy noeviction/maxmemory-policy allkeys-lru/" "$REDIS_CONFIG"
sed -i "s/^timeout 0/timeout 30/" "$REDIS_CONFIG" # 30秒无操作超时
# 持久化配置
echo "配置持久化选项..."
sed -i "s/^save 900 1/# save 900 1/" "$REDIS_CONFIG"
sed -i "s/^save 300 10/# save 300 10/" "$REDIS_CONFIG"
sed -i "s/^save 60 10000/# save 60 10000/" "$REDIS_CONFIG"
echo "appendonly yes" >> "$REDIS_CONFIG"
echo "appendfsync everysec" >> "$REDIS_CONFIG"
# 限制配置
echo "配置连接限制..."
echo "maxclients 10000" >> "$REDIS_CONFIG"
echo "tcp-backlog 511" >> "$REDIS_CONFIG"
# 防火墙配置
echo "配置防火墙允许Redis端口 $REDIS_PORT..."
if command -v firewall-cmd &> /dev/null; then
firewall-cmd --permanent --add-port=$REDIS_PORT/tcp
firewall-cmd --reload
else
echo "未找到firewalld请确保端口 $REDIS_PORT 已开放"
fi
# 重启Redis服务
echo "重启Redis服务应用配置..."
systemctl restart redis
# 验证配置
echo "验证Redis配置..."
echo "当前绑定IP:"
grep "^bind" "$REDIS_CONFIG"
echo "保护模式状态:"
grep "^protected-mode" "$REDIS_CONFIG"
echo "密码设置:"
grep "^requirepass" "$REDIS_CONFIG"
# 测试远程连接
echo "测试Redis连接..."
echo "本地连接测试:"
redis-cli -a "$REDIS_PASSWORD" ping
echo "如需远程测试,请在其他服务器执行:"
echo "redis-cli -h <你的服务器IP> -p $REDIS_PORT -a $REDIS_PASSWORD ping"
# 完成信息
echo "Redis基础配置完成!"
echo "重要信息:"
echo "- Redis密码: $REDIS_PASSWORD"
echo "- 监听端口: $REDIS_PORT"
echo "- 绑定IP: $REDIS_BIND_IP (允许所有IP访问)"
echo "- 配置文件: $REDIS_CONFIG"
echo "- 管理命令: systemctl [start|stop|restart|status] redis"
echo "注意: 请确保服务器安全组/防火墙已开放 $REDIS_PORT 端口"