Anybody

  • AI相关
  • 网络
  • 工具
  1. 首页
  2. Linux
  3. 正文

Redis无法启动, “Failed to configure LOCALE for invalid locale name”

2025年8月12日 1651点热度 0人点赞 0条评论

今天宝塔安装了Redis,编辑了一下监听IP,突然就无法启动了

查看日志-应用日志-redis后发现报错是

4181681:C 12 Aug 2025 16:12:30.227 * Redis version=7.4.5, bits=64, commit=00000000, modified=1, pid=4181681, just started 4181681:C 12 Aug 2025 16:12:30.227 * Configuration loaded 4181681:M 12 Aug 2025 16:12:30.227 # Failed to configure LOCALE for invalid locale name.

Debian系统的解决方案

sudo apt update && sudo apt install -y locales

生成 en_US.UTF-8 区域

编辑区域配置文件 /etc/locale.gen,取消注释 en_US.UTF-8 行(用 nano 或 vim):

sudo nano /etc/locale.gen

找到以下行(可能被注释,以 # 开头):

# en_US.UTF-8 UTF-8

删除行首的 # 以启用

en_US.UTF-8 UTF-8

保存并退出(nano 按 Ctrl+O 保存,Ctrl+X 退出)。

执行区域生成命令

sudo locale-gen

这会根据 /etc/locale.gen 生成所有启用的区域,包括 en_US.UTF-8。

步骤 2:设置系统默认区域

通过 update-locale 命令设置全局默认区域(影响所有用户):

sudo update-locale LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8

此命令会自动更新 /etc/default/locale 文件,确保环境变量持久化。

步骤 3:验证区域设置生效

重新加载环境变量(或重启终端),再次运行 locale 检查:

source /etc/default/locale # 立即生效 locale

输出应显示 LC_ALL=en_US.UTF-8 且无警告,类似:

LANG=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" ... LC_ALL=en_US.UTF-8

步骤 4:重启 Redis 服务

 

 

Centos stream 9/AlmaLinux 9/RockyLinux 9系统的解决方案

  • 检查当前语言环境设置 运行以下命令查看系统当前的语言环境设置:

    locale

    这将显示当前的语言环境变量(如 LANG、LC_ALL、LC_CTYPE)。检查是否有无效或未安装的语言环境设置,例如 en_US.UTF-8。

    示例输出:

    LANG=en_US.UTF-8
    LC_CTYPE="en_US.UTF-8"
    LC_NUMERIC="en_US.UTF-8"
    ...

    如果看到类似 locale: Cannot set LC_ALL to default locale 的警告,说明语言环境配置有问题。

  • 列出可用语言环境 使用以下命令检查系统中已安装的语言环境:

    locale -a

    确认 en_US.UTF-8 或其他需要的语言环境是否存在。如果不存在,需要安装。

  • 安装缺失的语言环境 如果所需的语言环境(如 en_US.UTF-8)未安装,可以通过以下步骤安装:

    sudo dnf install glibc-langpack-en

    安装完成后,重新运行 locale -a 确认语言环境已添加。

  • 设置正确的语言环境 编辑 /etc/locale.conf 或用户的 shell 配置文件(如 ~/.bashrc),确保语言环境变量正确。例如:

    echo "LANG=en_US.UTF-8" | sudo tee /etc/locale.conf
    echo "LC_ALL=en_US.UTF-8" >> ~/.bashrc
    source ~/.bashrc
  • 检查 Redis 配置文件 打开 Redis 配置文件(通常位于 /etc/redis.conf 或 /etc/redis/redis.conf),查找是否有与语言环境相关的设置。确保没有指定无效的 LC_* 环境变量。如果有问题,可以注释掉相关行或设置正确的语言环境。

  • 以正确环境启动 Redis 尝试手动指定语言环境启动 Redis:

    LANG=en_US.UTF-8 redis-server /etc/redis.conf

    如果成功,说明问题出在系统默认环境变量。

  • 检查 systemd 服务配置 如果通过 systemd 启动 Redis(如 sudo systemctl start redis),检查服务文件:

    sudo systemctl cat redis

    确保 [Service] 部分没有设置无效的 Environment= 变量。如果有问题,编辑服务文件:

    sudo systemctl edit redis

    添加或修改:

    [Service]
    Environment="LANG=en_US.UTF-8"
  • 重启 Redis 服务 修改完成后,重新加载 systemd 配置并重启 Redis:

    sudo systemctl daemon-reload
    sudo systemctl restart redis
  • 验证 Redis 运行状态 检查 Redis 是否正常运行:

    sudo systemctl status redis

    或使用 Redis CLI:

    redis-cli ping

    如果返回 PONG,说明 Redis 已正常启动。

 

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: linux Redis
最后更新:2025年9月3日

管理员

Github

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2026 Anybody. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang