5

我正在研究在同一服务器中拥有多个 redmine 实例的最佳方法(基本上我需要为每个 redmine 组创建一个数据库)。

到目前为止,我有 2 个选择:

  1. 为每个组部署一个 redmine 实例
  2. 部署一个具有多个数据库的 redmine 实例

我真的不知道在这种情况下最好的做法是什么,我看到有些人在这两种情况下都这样做。

我已经使用 nginx 和乘客测试了多个 redmines(3 个实例)的部署。它运作良好,但我认为在很多情况下它可能不可行。每个应用程序需要大约 100mb 的 RAM,并且随着请求的增加,它往往会为应用程序分配更多的进程。如果我们有很多实例,这种情况似乎很糟糕。

选项 2 似乎是合理的,我想我可以使用 rails 环境来实现它。但我认为存在一些与会话相关的安全问题(我认为站点 A 的用户在 A 中进行身份验证后可以在站点 B 上执行操作)。

这种情况有什么好的做法吗?在这种情况下采取的最佳做法是什么?

与此相关的其他要求是:我们必须能够在不中断其他实例的情况下创建或关闭 redmine 实例(例如,我们应该避免服务器重启......)。

感谢您的任何建议,对不起我的英语!

编辑:

我的解决方案:我为每个组使用了一个 redmine 实例。我使用 nginx+unicorn 独立管理每个实例(因为乘客不允许我独立管理每个实例)。

4

3 回答 3

3

毕竟这两个选项并没有太大的不同。唯一的区别是,在选项 2 中,您的磁盘上只有一份代码副本。

在任何情况下,您仍然需要为每个实例运行不同的工作进程,因为 Redmine(以及通常大多数 Rails 应用程序)不支持每个请求的数据库切换,并且有关特定环境的一些数据被缓存在进程中。

鉴于此,即使是共享代码库也没有太多动力,因为它需要某些猴子补丁和 symlink-magic 来允许对有意的配置差异(数据库和电子邮件配置、上传文件的路径……)进行正确初始化. Debian 软件包可以做到这一点,但它(在我看来)相当脆弱,并导致一个相当非标准的系统。

但再次强调:即使您在实例之间共享磁盘上的相同代码,也无法共享正在运行的工作进程。

于 2013-03-06T11:26:18.890 回答
1

Redmine 不正式支持从同一代码库运行多个实例。但是,Debian/Ubuntu 软件包似乎支持这种方法......请参阅:

所以,一般来说:

  • 如果您使用 Debian/Ubuntu,请使用选项 #2
  • 否则选择#1
于 2013-03-05T12:03:37.537 回答
0

再过几年,您现在可能要考虑为每个 redmine 实例使用 docker 容器的第三种选择。

I've been using https://github.com/sameersbn/docker-redmine.git , and have been quite happy with it except that it doesn't yet support handling of incoming mail for creating and commenting on tickets.

于 2015-07-24T19:01:47.097 回答