多个redmine实例最佳实践

时间:2013-03-05 11:00:47

标签: ruby-on-rails nginx redmine multiple-instances

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

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

  1. 为每个组部署redmine实例
  2. 部署一个具有多个数据库的redmine实例
  3. 我真的不知道在这种情况下最好的做法是什么,我看到有些人在这两种方式都这样做。

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

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

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

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

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

    编辑:

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

3 个答案:

答案 0 :(得分:3)

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

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

鉴于此,甚至没有太多的动机来共享代码库,因为它需要某些猴子补丁和符号链接魔法才能正确初始化有意的配置差异(数据库和电子邮件配置,上传文件的路径,。 ..)。 Debian软件包可以做到这一点,但它(在我看来)相当脆弱,导致一个相当不规范的系统。

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

答案 1 :(得分:1)

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

所以,通常:

  • 如果您使用Debian / Ubuntu,请使用选项#2
  • 否则请使用#1

答案 2 :(得分:0)

向前推进了几年,您现在可能想考虑为每个redmine实例使用docker容器的第三种选择。

我一直在使用https://github.com/sameersbn/docker-redmine.git,并且对它非常满意,只是它还不支持处理传入邮件以创建和评论故障单。