85 lines
2.9 KiB
Bash
85 lines
2.9 KiB
Bash
#!/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 端口"
|