提问人:luisdev 提问时间:11/17/2023 最后编辑:luisdev 更新时间:11/20/2023 访问量:37
将 Moodle LMS 连接到 Redis 服务器以进行 Moodle 缓存
Connecting Moodle LMS to a Redis server for Moodle caching
问:
我正在尝试将 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 Redis 模块安装在 PHP 中。
在 Moodle 中,在“站点管理员/插件/缓存/配置”下,Redis 显示在已安装的缓存存储列表中。
在 Moodle 中,我为 Redis 添加了一个 Store 实例,并将该 Store 实例中的 Server 字段指向我的 Redis 服务器的“myredisserver.mydomain.com”名称。我还尝试了Redis服务器的IP地址。
在“站点管理员/插件/缓存/缓存存储/Redis”下,我在测试服务器字段中将我的 Redis Red Hat Linux 服务器名称添加为“myredisserver.mydomain.com”。
在 Red Hat 命令行上,我输入 : 命令,Redis 以 响应,表示 Redis 正在工作。$redis-cli ping
PONG
那么,为什么 Moodle 无法连接到 Redis?我做错了什么?
我是否需要在 Moodle 缓存配置中的某个位置指定 6379 端口?
还是我错过了 linux 网络问题?
或者我还错过了什么?
答:
有几件事可以尝试: 首先,您从哪里ping了redis服务器?它来自你的moodle服务器吗? 您是否启用了服务器的防火墙以允许它们进行通信?
在您的步骤中,您不会谈论您的 php redis 设置。您需要修改您的 php.ini https://github.com/phpredis/phpredis
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.
最后一件事:用php -m检查你的redis是否处于活动状态。如果没有,您可能需要在 php 的 mods-available 文件夹中添加一个 redis.ini(但如果它显示在您的 php 信息中,则不太可能)。
编辑:
在 debian / ubuntu 上,您应该安装 redis-server
apt install redis-server
然后编辑你的 redis.conf
cp /etc/redis/redis.conf /etc/redis/your-service-name.conf
https://redis.io/docs/management/config-file/
,然后激活您的服务
systemctl enable [email protected]
评论