5

同じサーバーに複数の redmine インスタンスを配置する最善の方法を研究しています (基本的に、各 redmine グループにデータベースが必要です)。

今まで私には2つのオプションがあります:

  1. グループごとに redmine インスタンスをデプロイする
  2. 複数のデータベースを持つ 1 つの Redmine インスタンスをデプロイする

この状況で何がベストプラクティスなのか本当にわかりません。これを両方の方法で行っている人を見てきました。

nginx とパッセンジャーを使用して、複数の redmine (3 つのインスタンス) の展開をテストしました。うまくいきましたが、多くの場合、実行できない可能性があると思います。各アプリは約 100 MB の RAM を必要とし、リクエストの増加に伴い、より多くのプロセスをアプリに割り当てる傾向があります。多くのインスタンスがある場合、このシナリオは悪いように思えます。

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

この状況に適した方法はありますか? この状況で取るべきベストプラクティスは何ですか?

これに関連するその他の要件は次のとおりです。他のインスタンスを中断することなく Redmine インスタンスを作成またはシャットダウンできる必要があります (たとえば、サーバーの再起動を避ける必要があります..)。

アドバイスをありがとう、私の英語でごめんなさい!

編集:

私の解決策: グループごとに redmine インスタンスを使用しました。nginx+unicorn を使用して各インスタンスを個別に管理しました (パッセンジャーでは各インスタンスを個別に管理できなかったため)。

4

3 に答える 3

3

結局、2 つのオプションはそれほど違いはありません。唯一の違いは、オプション 2 では、ディスク上にコードのコピーが 1 つしかないことです。

いずれにせよ、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 コンテナーを使用する 3 番目のオプションを検討する必要があるかもしれません。

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

于 2015-07-24T19:01:47.097 に答える