将 Moodle LMS 连接到 Redis 服务器以进行 Moodle 缓存

问题描述 投票:0回答:1

我正在尝试将托管在 Windows Server 2019 计算机上的 Moodle 3.9 网站连接到在 Red Hat Redis 服务器上运行的 Redis 实例,以便我可以将 Moodle 配置为使用 Redis 进行缓存,但我很难连接 Moodle站点到该 Redis 服务并让缓存正常工作。

我已经提到了https://docs.moodle.org/402/en/Redis_cache_store,但是该文档中有很多空白...

Moodle 中的“已安装的缓存存储”页面在 Moodle 的“缓存管理”页面中显示 Redis 的绿色勾号。

Moodle PHPInfo页面显示PHP中安装了PHP Redis模块。

在 Moodle 中,在“站点管理/插件/缓存/配置”下,Redis 显示在已安装的缓存存储列表中。

在 Moodle 中,我为 Redis 添加了一个存储实例,并将该存储实例中的服务器字段指向我的 Redis 服务器的“myredisserver.mydomain.com”名称。我也尝试过Redis服务器的IP地址。

在“站点管理/插件/缓存/缓存存储/Redis”下,我已在“测试服务器”字段中将我的 Redis Red Hat Linux 服务器名称添加为“myredisserver.mydomain.com”。

在 Red Hat 命令行上输入:

$redis-cli ping
命令,Redis 会响应
PONG
,表示 Redis 正在工作。

那么,为什么Moodle无法连接Redis呢?我做错了什么?

我需要在 Moodle 缓存配置中指定 6379 端口吗?

或者是我错过的 Linux 网络问题?

或者我还缺少什么?

caching redis moodle
1个回答
0
投票

有几件事可以尝试: 首先,你从哪里 ping 你的 redis 服务器?是从你的moodle服务器来的吗? 您是否启用了服务器的防火墙以允许它们进行通信?

在您的步骤中,您没有谈论您的 php redis 设置。你需要修改你的php.ini

session.save_handler = redis
session.save_path = "tcp://host1:6379?weight=1, tcp://host2:6379?weight=2&timeout=2.5, tcp://host3:6379?weight=2&read_timeout=2.5"

最后你还需要在moodle config.php中配置redis(你没有指定,所以我猜你没有)。搜索下面的行,它们已被注释,因此取消注释并填写您的配置信息:

//   Redis session handler (requires redis server and redis extension):
      $CFG->session_handler_class = '\core\session\redis';
      $CFG->session_redis_host = '127.0.0.1';
//      Use TLS to connect to Redis. An array of SSL context options.     Usually:
      $CFG->session_redis_encrypt = ['cafile' => '/path/to/ca.crt']; or...
      $CFG->session_redis_encrypt = ['verify_peer' => false, 'verify_peer_name' => false];
      $CFG->session_redis_port = 6379;                     // Optional.
      $CFG->session_redis_database = 0;                    // Optional, default is db 0.
      $CFG->session_redis_auth = '';                       // Optional, default is don't set one.
      $CFG->session_redis_prefix = '';                     // Optional, default is don't set one.
      $CFG->session_redis_acquire_lock_timeout = 120;      // Default is 2 minutes.
      $CFG->session_redis_acquire_lock_warn = 0;           // If set logs early warning if a lock has not been acquried.
      $CFG->session_redis_lock_expire = 7200;              // Optional, defaults to session timeout.
      $CFG->session_redis_lock_retry = 100;                // Optional wait between lock attempts in ms, default is 100.
                                                           // After 5 seconds it will throttle down to once per second.
© www.soinside.com 2019 - 2024. All rights reserved.