ruby - 将 Redis 作为 Redmine 的外部缓存服务器运行
问题描述
我有 2 个使用 Kubernetes 部署的 Redmine pod,由于这个问题,会话管理问题正在发生,所以一些用户因此无法登录,所以我想出了将两个 pod 的缓存存储在 Redis 服务器中的想法Kubernetes(集中式)。
我在位置的 Redmine pod 内提供以下配置。/opt/bitnami/redmine/config/application.rb
配置
config.cache_store = :redis_store, {
host: "redis-headless.redis-namespace", #service name of redis
port: 6379,
db: 0,
password: "xyz",
namespace: "redis-namespace"
}, {
expires_in: 90.minutes
}
但这并没有按预期工作。在我做错的地方需要帮助。
解决方案
Redmine 不会在其缓存中存储任何会话数据。因此,将您的两个 Redmine 配置为使用相同的缓存将无济于事。
默认情况下,Redmine 将用户会话存储在发送到用户浏览器的签名 cookie 中,而无需任何服务器本地会话存储。由于会话 cookie 使用私钥签名,因此您需要确保使用相同会话的所有安装也使用相同的应用程序机密(以及代码和数据库)。
根据您设置 Redmine 的方式,此密钥通常存储在config/initializers/secret_token.rb
或config/secrets.yml
(相对于您的 Redmine 安装目录)。确保在您的两个 Redmine 上使用相同的秘密。
推荐阅读
- visual-studio-code - 我可以根据文件类型设置 VS Code 默认 EOL 吗?
- weather-api - 是否有过去 NOAA 天气预报的 API(预报档案)?
- ios - 在presentedViewController?.dismiss之后Swift调用popoverPresentationControllerDidDismissPopover
- javascript - JQuery 序列化数据输入为空
- r - 加入来自不同文件的列
- reactjs - 每次渲染都生成新的样式表的坏习惯?
- asp.net-mvc - IIS 上的 Asp.net Core 2 发布项目只返回一个空白页?
- scala - 即使我已经实现了它们,也会出现未实现的方法错误
- java - Kubernetes liveness - 使用 Spring Boot 为特定端点保留线程/内存
- computer-vision - 执行多尺度训练 (yolov2)