Bitbucket Server のステージング サーバー環境の構築方法

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

プラットフォームについて: サーバーと Data Center のみ。この記事は、サーバーおよび Data Center プラットフォームのアトラシアン製品にのみ適用されます。

目的


このドキュメントでは、Bitbucket のエンタープライズ環境のセットアップについてのベストプラクティスをご説明します。

  • 変更のロールアウトに関連して、手順面のガバナンスについてのベストプラクティスの推奨事項
  • 開発/ステージング/本番アーキテクチャの推奨事項
  • 非本番サーバーのデプロイ方法についての技術的な手順

前提事項

  • このドキュメントでは、管理者は変更をスクリプトで行うと仮定しています。したがって、UI ベースの変更や、ファイルシステムの場所の指定に利用するデータベース設定ツールなどの個別ツールに関する説明は省いています。

On this page:

tip/resting Created with Sketch.

注意:

  • このドキュメントで記載されている手順は Bitbucket Server バージョン 4.0 以降で操作します。
  • ステージング サーバーを稼動する前にこのドキュメント全体をご確認ください。本番インスタンスへの接続にはリスクが存在し、それらについてこのドキュメントで説明しています。

1. アーキテクチャ戦略

多くのシステム管理チームは自社のエンタープライズ アプリケーションについて、ステージング環境やフェイルオーバー セットアップなどのアーキテクチャを確立しています。このドキュメントの推奨事項は、そのような組織全体の方針の変更や置換を意図するものではありません。アトラシアン製品をステージング環境で取り扱う際に考慮すべき点を明らかにするものです。 

定義

このドキュメントの説明では、次のように用語を定義します。

  • 本番: 実稼働インスタンス。最小限のダウンタイムと十分なテスト済みの変更を要求。
  • ステージング: 本番の前段階の環境。システム管理チームがロールアウト前に正確な手順を確立できる。
  • 開発: 全員が利用できる自由な環境。ユーザーは最先端の変更やリスクを伴う変更を試すことができる。 
推奨事項

アトラシアン製品がクリティカルなシステムである場合、開発、ステージング、本番の 3 階層のアーキテクチャを推奨します。

  • ステージング環境の主な目的は、本番段階に進む前の変更やアップグレードをシステム管理者がテストすることです。
  • 開発環境は、さまざまな事業単位が本番環境へのロールアウトを依頼する前に変更を独自でテストする場所です。

2. ガバナンス戦略

アーキテクチャに加えて、次のように変更についてのガバナンス戦略を確立することを推奨します。

  • プラグイン インストール リクエストのデプロイとテストのための戦略作成。ある環境で非常に有用なプラグインが大規模なクリティカル システムでは適切でないことがあることに注意してください。
  • 開発環境のリフレッシュ タイムラインの公開。

3. ステージング サーバーのリフレッシュ方法

ここでは、既存のステージング インストールを保有しているものと仮定しています。お持ちでない場合は、これらの手順を利用してステージング環境をセットアップできます。 

ステージング サーバーのセットアップが本番環境に影響しないように十分配慮してください。ステージング (または開発) サーバーを起動する前に、以降のヒントをご確認ください。

3.1 以降の代替策のいずれかを利用して本番環境の完全なバックアップを作成

  1. Bitbucket Server Backup Client (Bitbucket Data Center でのサポート対象外)
  2. Bitbucket DIY Backup

3.2 本番環境のバックアップ全体をステージング環境にコピー 

  1. ステージング サーバーをシャットダウンします。
  2. バックアップに利用した方法に基づき、バックアップをステージング環境に復元します。 
    1. Backup Client から新しく作成した DB を利用するように復元
    2. DIY Backup の復元
  3. システム環境変数 BITBUCKET_HOME が適切に設定されていることを確認します。詳細については「Bitbucket Server のホーム ディレクトリの設定」をご確認ください。

3.3 ステージング環境で固有の構成を実施

これは非常に重要です。ステージング環境が本番環境のデータベースを参照しないようにします。 

DIY を利用した場合
  • ステージング データベースを参照するようにデータベース接続を構成します。BITBUCKET_HOME/sharedbitbucket-config.properties を編集します。 
  • <BBS_HOME>/shared/server.xml を修正します。リバース プロキシを利用していた場合、古い名前への参照を取り除く必要があります。これを行わないと新しいインスタンスが本番環境を指します。
<Connector port="7990"
     protocol="HTTP/1.1"
     connectionTimeout="20000"
     useBodyEncodingForURI="true"
     redirectPort="443"
     compression="on"
     compressableMimeType="text/html,text/xml,text/plain,text/css,application/json,application/javascript,application/x-javascript"
     secure="true"
     scheme="https"
     proxyName="mycompany.com" 
     proxyPort="443" />

Bitbucket Server 5.0+ を利用している場合、プロキシ構成は bitbucket.properties で行われており、server.xml は利用されていません。

tip/resting Created with Sketch.

既存の Bitbucket Server インストールでデータベース (例: BitbucketServerDB) を利用していて、新しい Bitbucket Server インストールが同じマシンまたはデータベース サーバーで実行されている場合、新しいデータベースを別の名前で作成します (Bitbucket Server 4.0.2 に対して BitbucketServerDB_402 などの、直感的なもの)。Oracle では、ピリオドやアンダーバーを持つスキーマ名はサポートされません。新しいデータベースに、古い Bitbucket Server データベースと同じアクセス権限があることを確認します。

Restore クライアントを利用した場合
  • このクライアントは、指定されたパラメーターを bitbucket.properties ファイル (新しく復元された Bitbucket Server のホーム ディレクトリのBITBUCKET_HOME/sharedbitbucket.properties) に書き込みます。これは、Backup Client からの復元で新しく作成された DB を利用する手順 (ステップ 3.2) の一環として行われます。
  • <BBS_HOME>/shared/server.xml を修正します。リバース プロキシを利用していた場合、古い名前への参照を取り除く必要があります。これを行わないと新しいインスタンスが本番環境を指します。

Bitbucket Server 5.0+ を利用している場合、プロキシ構成は bitbucket.properties で行われており、server.xml は利用されていません。

3.4 ステージング環境の分離

このステップは、ステージング環境を初めてセットアップするときか、ステージング環境の前回のリフレッシュ以降に本番環境が別のサーバー/アプリケーションと連携された場合にのみ必要です。

データがコピーされて Bitbucket Server の構成が更新されたり、ステージング環境を本番 (およびほかの) 環境から完全に分離することが推奨されます。これは、ステージング インスタンスが他の連携システムに接続したりそれらとやり取りしたするのを防ぐためです。このような例には、アプリケーション リンク経由で接続されたアプリケーションや Bitbucket Server のスマート ミラーが考えられます。 

これを行うもっとも簡単な方法は、/etc/hosts (Linux) または C:\Windows\System32\drivers\etc\hosts (Windows) ファイルを編集し、すべての関連するホスト名が転送対象外の IP アドレス (例: 0.0.0.0) を指すようにすることです。例:

0.0.0.0 jira.company.com crowd.company.com mirror.us.company.com

hosts ファイルを変更する代わりにファイアウォール ルール経由でトラフィックをブロックすることもできます。

3.5 スマート ミラー設定の削除

本番インスタンスでスマート ミラーまたはミラー ファームを利用している場合、ステージング インスタンスを起動する前にそれらの構成を削除する必要があります。これを行わないとステージング環境でミラーとの同期が試みられる可能性があります。

Bitbucket 8.0 以降では、初回の起動時にのみ bitbucket.properties に次のプロパティを追加することでこれを行えます。起動後にプロパティを削除またはコメント アウトします。 

# Deletes mirror configuration on startup - Should only be run once on staging only.
plugin.mirroring.delete.on.startup=true

バージョン 7.21 以前では次のクエリを利用してデータベースから構成を削除できます。

これらのクエリは Bitbucket Server データベースのステージング コピーで実行する必要があります。アトラシアン サポートが明示的に指示した場合を除き、本番環境のデータベースでは絶対に実行しないでください。

DELETE FROM plugin_setting WHERE key_name LIKE 'acnct.bitbucket.mirror.%';
DELETE FROM plugin_setting WHERE key_name = 'ac.addon.list' AND key_value LIKE '%mirror%';
DELETE FROM "AO_8E6075_MIRRORING_REQUEST";
DELETE FROM "AO_8E6075_MIRROR_SERVER";

3.6 ステージング サーバーの再起動

これで、サーバーを再起動する準備が整いました。再起動したら、前述の手順を安全に実行したことを確認するために次の事項を確認してください。

  1. データベースが本番環境を参照していないことを確認します。これを確認するには、[管理] > [サポート ツール] > [データベース情報] に移動してシステム情報を確認します。[接続 URL] が適切な場所を指しているのを確認します。
  2. メールが無効化されているか開発サーバーに対して構成されていることを確認します 。(管理 > メール サーバー)

3.7 起動後の修正

  1. ログインできない場合本番環境で構成されていた外部ディレクトリが、復元されたインスタンスで何らかの理由により利用できていない可能性があります。これを回避するにはロックアウトの復元プロセスの手順を利用し、外部ディレクトリを削除し、admin アカウントを作成し、ログアウトして新しい管理アカウントの利用を開始してインスタンス構成を実施できます。
  2. サイトのベース URL の更新。Bitbucket のベース URL の指定」を参照してサイトの URL をステージングの URL に変更します。
  3. 開発ライセンスの適用。ステージング サーバー用のライセンスの生成方法についてはライセンスの FAQ をご確認ください。適用方法については「ライセンス キーの更新」をご確認ください。
  4. アプリケーション リンクの再構成。アプリケーション リンク経由で別のサーバーに接続している場合、それらのインスタンスでサーバー ID を変更する必要があります。 

    tip/resting Created with Sketch.

    アプリケーション リンクをそのままにすると、リンクが生成されたタイミングで本番環境インスタンスがステージング サーバーを参照する可能性があります。

  5. Hipchat 連携の無効化。Bitbucket Server ワークフローのいずれかに Hipchat への通知を行う連携がある場合、Hipchat 通知がステージング環境から送信されるのを防ぐために [管理] > [アドオン] > [Hipchat 連携] で Hipchat 連携構成からトークンを削除する必要があります。
  6. CI ツールをご利用の場合はビルドをトリガーする hook が構成されていないことを確認します。Bamboo を利用している場合、アプリケーション リンクを無効化したタイミングで対応できます。Jenkins 等を利用している場合はこれらの hook を手動で無効化または削除する必要があります。 
  7. リポジトリやビルド システムに影響するプラグインについては、本番システムに影響を与えるかどうかを確認する必要があります。たとえば Mirror プラグインを利用している場合、ステージング環境へのプッシュが外部の本番システムにミラーされないように接続を編集する必要があります。


最終更新日 2022 年 5 月 17 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.