2013-03-05 30 views
5

私は、同じサーバーに複数のredmineインスタンスを持つ最良の方法を検討しています(基本的には、各redmineグループごとにデータベースが必要です)。複数のredmineインスタンスのベストプラクティス

  1. は、各グループ
  2. 展開、私は本当に何が最善かを知らない

複数のデータベースを持つ1つのRedmineのインスタンスのRedmineのインスタンスをデプロイします。

は、今まで私は2つのオプションを持っていますこのような状況で練習すると、私は両方の方法でこれをやっている人々を見たことがあります。

私はnginxと乗客で複数のredmines(3つのインスタンス)の展開をテストしました。それはうまくいきましたが、私は多くの場合それが実現可能でないかもしれないと思います。各アプリは約100MBのRAMを必要とし、要求が増加するにつれてアプリケーションに多くのプロセスを割り当てる傾向があります。このシナリオは、私たちが多くのインスタンスを持っていれば悪いようです。

オプション2は妥当と思われますが、レール環境で実装できると思います。しかし、私はセッションに関連するいくつかのセキュリティ上の問題があると思います。(私はAサイトのユーザーがAサイトの認証後にBサイトで行動を起こすことができると思います)

このような状況に適した方法はありますか?この状況ではベストプラクティスは何ですか?

これに関連するその他の要件は、Redmineインスタンスを中断せずに作成またはシャットダウンできることです(サーバーの再起動を避けるなど)。

アドバイスをいただき、ありがとうございました。

編集:

私のソリューション: 私はグループごとにRedmineのインスタンスを使用していました。私はnginx + unicornを使って各インスタンスを独立して管理していました(乗客はそれぞれのインスタンスを独立して管理することができなかったので)。

答えて

3

で行きます結局はあまり変わらない。唯一の違いは、オプション2では、ディスク上にコードのコピーが1つしかないことです。

Redmine(一般的にほとんどのRailsアプリ)では、リクエストごとにデータベースの切り替えがサポートされていないため、特定の環境に関する一部のデータが処理中にキャッシュされるため、それぞれのインスタンスに対して異なるワーカープロセスを実行する必要があります。

特定のサルパッチとsymlink-magicが意図的な設定の相違(データベースと電子メールの設定、アップロードされたファイルへのパスなど)に対して適切な初期化を可能にするため、コードベースでさえも共有するインセンティブはあまりありません。 ...)。 Debianのパッケージはそれをしますが、それは(私の目では)やや脆く、やや非標準的なシステムにつながります。

しかし、再度強調すると、インスタンス間でディスク上で同じコードを共有する場合でも、実行中のワーカープロセスを共有することはできません。

1

同じコードベースから複数のインスタンスを実行することは、Redmineによって正式にサポートされていません。しかし、Debianの/ Ubuntuのパッケージは、このようなアプローチを支持するように見える...参照:

ので、一般的に:

  • あなたは、Debian/Ubuntuはオプション#2で行く使用している場合
  • それ以外の場合は二つの選択肢がある#1
+0

私はDebianベースのサーバーを使用していますが、私は#2を使って展開しようとしますが、そのリンクはそれを行う方法に関する多くの情報を持っていません –

0

2年前に進むと、それぞれのRedmineインスタンスに対してドッキング用のコンテナを使用するという3番目のオプションを検討することができます。

私はhttps://github.com/sameersbn/docker-redmine.gitを使用していましたが、まだチケットの作成やコメントの受信メールの処理をサポートしていない点を除いて、とても満足しています。

関連する問題