Helix Swarm管理者ガイド (2020.1)

インストール後の構成オプション

Swarmのインストール環境の動作をカスタマイズするためのオプションがいくつか用意されています。 このセクションでは、正式にサポートされているオプションについて説明します。

このセクションには、次の内容が記載されています。

カスタマイズが不要な場合

Swarmのインストール環境をカスタマイズする必要がない場合、Swarmのインストールはこれで完了です。ただし、実稼働環境で使用する前に、正しく機能するかどうかを確認してください。 Swarmのインストール環境を確認する方法については、Swarmのインストール環境を確認するを参照してください。

Swarm仮想ホストのバックアップ

これらのカスタマイズオプションを使用する前に、Swarmの仮想ホスト構成をバックアップしてください。 以下に示す方法のうち、最も適切な方法でバックアップを行ってください。

  • Apache構成ディレクトリ内にsites-availableディレクトリとsites-enabledディレクトリが存在する場合は、以下のコマンドを実行します。
    $ cd /path/to/apache/configuration/..
    $ cp -a sites-available sites-available.bak
    重要

    sites-enabledディレクトリ内に、シンボリックリンクのみではなくファイルも格納されている場合は、以下のコマンドを実行してこのディレクトリもバックアップする必要があります。

    $ cd /path/to/apache/configuration/..
    $ cp -a sites-enabled sites-enabled.bak
  • CentOSシステムまたはRHELシステムで、Swarmパッケージを使用してSwarmをインストールした場合は、以下のコマンドを実行します。

     $ cd /path/to/apache/configuration/..
     $ cp -a conf.d conf.d.bak
  • それ以外の場合は、Apache構成をバックアップします。

HTTPS

重要

Swarmのインストール環境をカスタマイズする前に、Swarm仮想ホストの構成情報をバックアップしてください。詳細については、「Swarm仮想ホストのバックアップ」を参照してください。

このセクションでは、HTTPSを使用してSwarmのインストール環境のセキュリティを強化する方法について説明します。

以下の手順を実行する前に、システムのApache構成ディレクトリを特定してください。 一般的な構成ディレクトリは次のとおりです。

  • /etc/httpd/conf/
  • /etc/apache2/
  • /Applications/XAMPP/etc/

通常、Apacheの構成パス内では、メインのApache構成ファイルの名前は以下のいずれかになります。

  • httpd.conf
  • apache2.conf

Apache構成ファイルの場所や名前に関する詳しい説明については、https://wiki.apache.org/httpd/DistrosDefaultLayoutを参照してください。

  1. ApacheでSSLを有効にします。

    Apacheユーティリティのa2enmodがインストールされている場合は、以下のコマンドを実行します。

     $ sudo a2enmod ssl             

    a2enmodユーティリティがインストールされていない場合は、Apache構成ファイルを手動で編集します。 モジュールのApache構成ファイルを探してコメントを外すか、次の行を追加します。

    LoadModule  ssl_module  libexec/apache2/mod_ssl.so
  2. 証明書を保存するためのディレクトリを作成します。

    $ sudo mkdir -p /etc/apache2/ssl
  3. 証明書とキーのペアを作成します。

    $ cd /etc/apache2/ssl
    $ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout apache.key -out apache.crt

    このコマンドを実行すると、プライベートキーと証明書が生成されます。 opensslにより、証明書を設定するためのプロンプトが表示されます。

    Generating a 2048 bit RSA private key
    ...................+++
    ....................................+++
    writing new private key to 'apache.key'
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [AU]:CA
    State or Province Name (full name) [Some-State]:British Columbia
    Locality Name (eg, city) []:Victoria
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:Perforce Software
    Organizational Unit Name (eg, section) []:Swarm development team
    Common Name (e.g. server FQDN or YOUR name) []:myswarm.host
    Email Address []:admin@myswarm.host

    上記の出力には、サンプルの情報が表示されています。 斜体で表示されている箇所に、実際の情報を指定してください。 証明書の詳細情報を指定することにより、その証明書が有効であるかどうかを判断する手がかりとなるため、可能な限り正しい情報を入力してください。

    重要

    「Common Name」フィールドには、Swarmのインストール環境のホスト名と正確に一致する値を指定する必要があります。

  4. 以下のコマンドを実行して、証明書ディレクトリを保護します。

     $ sudo chmod 600 /etc/apache2/ssl
                    
  5. 仮想ホスト構成を編集します。

    注意

    仮想ホスト構成は、このセクションの最初の手順でバックアップしたファイルに保存されています。

    以下の内容に一致するように、仮想ホスト構成を編集します。

    <VirtualHost *:80>
    	ServerName myswarm
    	ServerAlias myswarm.host
    	ErrorLog "/path/to/apache/logs/myswarm.error_log"
    	CustomLog "/path/to/apache/logs/myswarm.access_log" common
    	DocumentRoot "/path/to/swarm/public"
    	<Directory "/path/to/swarm/public">
    		AllowOverride All
    		Require all granted
    	</Directory>
    							
           Redirect / https://myswarm.host/
    </VirtualHost>
    
    <VirtualHost *:443>
    	SSLEngine on
    	SSLCertificateFile /etc/apache2/ssl/apache.crt
    	SSLCertificateKeyFile /etc/apache2/ssl/apache.key
    
    	ServerName myswarm.host
    	ServerAlias myswarm
    	ErrorLog "/path/to/apache/logs/myswarm.error_log"
    	CustomLog "/path/to/apache/logs/myswarm.access_log" common
    	DocumentRoot "/path/to/swarm/public"
    	<Directory "/path/to/swarm/public">
    		AllowOverride All
    		Require all granted
    	</Directory>
    </VirtualHost>

    詳細については、以下のリンクでApacheの仮想ホストに関するドキュメントを参照してください。https://httpd.apache.org/docs/2.4/vhosts/

  6. 仮想ホスト定義のカスタマイズを行います。

    1. myswarm.hostを、ネットワーク上のSwarmのホスト名に置き換えます。
    2. myswarmを、Swarmがホストされているサブドメインに置き換えます。 通常は、「swarm」に置き換えます。

      注意

      ログファイルパスにmyswarmという文字列が含まれていますが、アクティブなホストとそのログファイルを整合させるため、この文字列はログファイルのサブドメイン名とプレフィックスに一致している必要があります。 こうすると、Apacheサーバが複数のSwarmインスタンスをホストしている場合に特に便利です。

    3. /path/to/apache/logsを、Apacheがログファイルを格納するパスに置き換えます。 通常、Apacheのログファイル名は、access_logerror_logです。
    4. /path/to/swarmを、Swarmディレクトリのパスに置き換えます。
  7. Webサーバを再起動します。

     $ sudo apachectl restart
    
  8. ファイアウォールの設定を調整して、Webサーバの標準SSLポートに接続できるようにします。

    • CentOS/RHEL 6.6以降の場合:

       $  sudo lokkit -p 443:tcp          
    • CentOS/RHEL 7以降の場合:

      $sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
      $sudo systemctl reload firewalld
    • 上記以外のディストリビューションの場合は、ネットワーク管理者に問い合わせるかオペレーティングシステムのドキュメントを参照して、ファイアウォールの設定方法を確認してください。
  9. WebブラウザでHTTPSのURLをテストします。

    重要

    myswarm.hostの値が仮想ホスト構成と証明書でそれぞれ異なっている場合、P4VSwarmの統合が失敗し、「SSL handshake failed」というメッセージが表示されます。

    また、逆引きを実行してSwarmサーバのIPアドレスを照会すると、myswarm.hostが応答として返されます。

  10. これでSwarmのインストールは完了です。ただし、実稼働環境で使用する前に、正しく機能するかどうかを確認してください。詳細については、「Swarmのインストール環境を確認する」を参照してください。

既存のWebサイトのサブフォルダでSwarmを実行する

警告

Swarmの単一インスタンス上の複数の Helixサーバ インスタンス: Swarmが複数のHelixサーバに接続されている場合、Swarmをサブフォルダで実行することはできません。

問題: <swarm_root>/data/config.phpファイルのenvironmentブロックでbase_url構成可能変数の値を変更すると、Helixサーバに対するSwarmの接続がすべて失われます。 この場合、システムの動作が停止します。

解決策: base_url構成可能変数を<swarm_root>/data/config.phpenvironmentブロックから削除します。

重要

Swarmのインストール環境をカスタマイズする前に、Swarm仮想ホストの構成情報をバックアップしてください。詳細については、「Swarm仮想ホストのバックアップ」を参照してください。

Swarmで使用するホスト名を制御できない場合は、専用の仮想ホストでSwarmを実行しなければならないことがあります。その際、専用の仮想ホストでSwarmを実行できない場合は、既存の仮想ホスト構成のサブフォルダにSwarmをインストールすることをお勧めします。

サブフォルダにSwarmをインストールするには、この章で説明したインストール手順を変更する必要があります。

これ以降の各セクションで、サブフォルダにSwarmをインストールする方法について説明します。

詳細については、「base_url」を参照してください。

重要

Swarm OVAまたはSwarmパッケージを使用してSwarmをインストールした場合は、パッケージ設定スクリプトの/opt/perforce/swarm/sbin/configure-swarm.shを使用してSwarmの構成を調整することができます。

configure-swarm.sh によって既存のSwarm構成が読み込まれることはないため、configure-swarm.shを実行するたびに、構成に関するすべての詳細情報を指定する必要があります。

$ sudo /opt/perforce/swarm/sbin/configure-swarm.sh -n -p myp4host:1666 -u swarm -w password -e mx.example.com -H myhost -B /swarm

上記の例の場合、-B オプションを使用して、サブフォルダの名前を指定しています。

configure-swarm.shを使用してSwarmの構成を調整する場合、必要な手順は、以下に記載されているApache構成セクションの手順のみです。 Swarmの構成セクションに記載されているチェンジリストは、configure-swarm.shによってすべて作成されています。

Apache構成

  1. 対象の仮想ホストのドキュメントルート内にSWARM_ROOTディレクトリが存在していないことを確認します。

    これは、Swarmのソースコードと構成情報を参照できないようにするための手順です。具体的には、保存されている資格情報、アクティブなセッション、アクティブなワークスペースなどの重要な情報にアクセスできないようにするための手順です。

  2. 現在使用している仮想ホスト構成を調整します。

    注意

    Swarmのインストール方法に応じて、編集する必要がある仮想ホスト構成のファイル名は以下のようになります。

    • Swarm OVAまたはSwarmパッケージを使用してインストールした場合は、perforce-swarm-site.confファイルを編集します。
    • Swarmの推奨Apache構成に従って手動でインストールを実行した場合は、swarmを編集します。
    • 上記以外の方法でインストールした場合は、httpd.confなどのファイルを編集します。

    以下の行を仮想ホスト定義に追加します。

    Alias /swarm SWARM_ROOT/public
    							
    <Directory "SWARM_ROOT/public">
      AllowOverride All
      Require all granted
    </Directory>

    Alias行は、Swarmpublicフォルダのコンテンツを使用して、https://myhost/swarmに対する要求にApacheが応答することを示しています。 「Alias」行の/swarmの部分は、任意の値に変更することができます。

    <Directory>ブロックは、Swarmpublicフォルダ内のすべての項目にアクセスできることを示しています。 SWARM_ROOTを、Swarmの実際のパスに置き換えてください。

  3. Webサーバを再起動します。

     $ sudo apachectl restart        

Swarmの構成

サブフォルダ内でSwarmを正常に機能させるには、swarm_root/data/config.phpファイルに以下の行を追加する必要があります(この行が、p4項目に対応することになります)。

'environment' => array(
'base_url' => '/swarm'
),

/swarmの部分が、仮想ホスト構成のAlias行の最初の項目に一致している必要があります。

詳細については、「環境」を参照してください。

Cron構成

構成Swarm構成で設定したサブフォルダを有効にするには、Swarm繰り返しタスク構成を更新する必要があります。 この構成は、swarm-cron-hosts.confファイル内に記述されています。

  1. /opt/perforce/etc/swarm-cron-hosts.confを編集用に開きます。
  2. 以下の行を探します。

    https://swarm-host

    上記の行を以下のように変更します。

    https://swarm-host/swarm/

    swarm-hostは、Swarmのインストール環境のホスト名で、swarmは、使用するサブフォルダです。

  3. 編集したファイルを保存します。

    1分後に新しいワーカーが起動します。

  4. これでSwarmのインストールは完了です。ただし、実稼働環境で使用する前に、正しく機能するかどうかを確認してください。詳細については、「Swarmのインストール環境を確認する」を参照してください。

カスタムポート上でSwarmの仮想ホストを実行する

重要

Swarmのインストール環境をカスタマイズする前に、Swarm仮想ホストの構成情報をバックアップしてください。詳細については、「Swarm仮想ホストのバックアップ」を参照してください。

ルートアクセス権を持っていないなどの理由でSwarmをポート80 (HTTPSの場合はポート443)で実行できない場合は、カスタムポート上でSwarmを実行することができます。

インストールしたSwarmをカスタムポート上で使用するには、この章で説明したインストール手順を変更する必要があります。Apache構成が多少異なっているため、Swarmの仮想ホスト定義を変更する必要があります。

以下のセクションで、カスタムポートの構成方法について説明します。

注意

Swarmでプロキシを使用している場合や、複数のSwarmインスタンスがHelixサーバに接続されている場合は、以下のセクションで説明する手順を実行するのみでなく、環境セクションに記載されているexternal_url項目も適用しなければならないことがあります。

重要

Swarm OVAまたはSwarmパッケージを使用してSwarmをインストールした場合は、パッケージ設定スクリプトの/opt/perforce/swarm/sbin/configure-swarm.shを使用してSwarmの構成を調整することができます。

configure-swarm.sh によって既存のSwarm構成が読み込まれることはないため、configure-swarm.shを実行するたびに、構成に関するすべての詳細情報を指定する必要があります。

 $ 
 sudo /opt/perforce/swarm/sbin/configure-swarm.sh -n -p myp4host:1666 -u swarm -w password -e mx.example.com -H myhost -P 8080

上記の例の場合、-Pオプションにより、Swarmが使用するカスタムポートを指定しています。

configure-swarm.shファイルを使用してSwarmの構成を調整する場合は、このファイルに記載されている追加の手順を実行してください。 追加の手順が完了したら、それで処理は終了です。以下のセクションに記載されている手順は実行しないでください。

Apache構成

  1. 仮想ホスト構成を編集します。

    注意

    Swarmのインストール方法に応じて、編集する必要がある仮想ホスト構成のファイル名は以下のようになります。

    • Swarm OVAまたはSwarmパッケージを使用してインストールした場合は、perforce-swarm-site.confファイルを編集します。
    • Swarm推奨Apache構成に従って手動でインストールした場合は、swarmファイルを編集します。
    • 上記以外の方法でインストールした場合は、httpd.conf などのファイルを編集します。
    1. <VirtualHost>ブロックの外側に以下の行を追加します。

      Listen 8080
    2. <VirtualHost *:80>行を以下のように変更します。

      <VirtualHost *:8080>

    上記の両方の行の8080を、使用するカスタムポートの値で置き換えます。

    重要

    すでに使用されているポートを指定した場合、Apacheは起動しません。

  2. Webサーバを再起動します。

     $  sudo apachectl restart
    
  3. ファイアウォールの設定を調整して、カスタムポートに接続できるようにします。

    • CentOS/RHEL 6.6以降の場合:

       $ sudo lokkit -p 8080:tcp       

      8080を、使用するカスタムポートの値で置き換えます。

    • CentOS/RHEL 7以降の場合:

      $ sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
      $ sudo systemctl reload firewalld

      8080を、使用するカスタムポートの値で置き換えます。

    • 上記以外のディストリビューションの場合は、ネットワーク管理者に問い合わせるかオペレーティングシステムのドキュメントを参照して、ファイアウォールの設定方法を確認してください。

Cron構成

Apache構成で設定したカスタムポートを有効にするには、Swarm繰り返しタスク構成を更新する必要があります。 この構成は、swarm-cron-hosts.confファイル内に記述されています。

  1. /opt/perforce/etc/swarm-cron-hosts.confを編集用に開きます。
  2. 以下の行を探します。

    https://swarm-host:80

    上記の行を以下のように変更します。

    https://swarm-host:8080

    swarm-hostは、Swarmのインストール環境のホスト名で、8080は、使用するカスタムポートです。

  3. 編集したファイルを保存します。

    1分後に新しいワーカーが起動します。

  4. これでSwarmのインストールは完了です。ただし、実稼働環境で使用する前に、正しく機能するかどうかを確認してください。詳細については、「Swarmのインストール環境を確認する」を参照してください。

自分専用のRedisサーバを使用する

デフォルト設定の場合、Swarmは、Swarmマシン上で専用のRedisサーバを使用します。

このセクションでは、Swarmを自分専用のRedisサーバに接続する方法について説明します。

自分専用のRedisサーバを使用するための手順:

  1. 以下に示すredisブロックをSWARM_ROOT/data/config.phpファイルに追加します。このブロックには、Redisサーバのpasswordnamespacehostportに関する詳細情報が記述されています。
  2. <?php
        // this block should be a peer of 'p4'
        'redis' => array(
            'options' => array( 
                'password' => null, // Defaults to null
                'namespace' => 'Swarm',  
                'server' => array(
                    'host' => 'MyRedisServerHostname', // Defaults to 'localhost' or enter your Redis server hostname
                    'port' => 'MyRedisServerPortNumber', // Defaults to '7379 or enter your Redis server port
                ), 
            ),
            'items_batch_size' => 100000,
            'check_integrity' => '03:00', // Defaults to '03:00' Use one of the following two formats: 
                                          // 1) The time of day that the integrity check starts each day. Set in 24 hour format with leading zeros and a : separator
                                          // 2) The number of seconds between each integrity check. Set as a positive integer. Specify '0' to disable the integrity check.
            'population_lock_timeout' => 300, // Timeout for initial cache population. Defaults to 300 seconds. 
        ),
    • passwordには、Redisサーバのパスワードを指定します。デフォルト値はnullです。
    • namespaceには、Redisキャッシュのキー値で使用されるプレフィックスを指定します。 デフォルト値は「Swarm」です。
    • 注意

      1つのRedisサーバに対して複数のSwarmインスタンスが稼働している場合、各Swarmサーバで異なるRedis名前空間を使用する必要があります。 これにより、個別のSwarmインスタンスのキャッシュデータを識別できるようになります。 名前空間の長さは128文字以内に制限されています。

      1つ以上のSwarmインスタンスが複数のHelixサーバに接続されている場合、Redisの名前空間にはserver labelが含められるため、名前空間の長さが127文字以内に制限されます。詳細については、「複数のHelixサーバインスタンス」を参照してください。

    • host MyRedisServerHostname には、Redisサーバのホスト名を指定します。
    • port MyRedisServerPortNumberには、Redisサーバのポート番号を指定します。
    • items_batch_sizeには、Redisに対するmset呼び出しで許可されるキーと値のペアの最大数を指定します。 この最大数を超えた場合は、処理効率を考慮して一括処理されます。 デフォルト値は「100000」です。
    • 注意

      この「100000」というデフォルト値は、処理効率とプロジェクトデータの複雑度のバランスを考慮して決定された値です。 通常、このデフォルト値を変更する必要はありませんが、変更する必要がある場合は、事前にサポートチームに連絡してください。

    • check_integrity: Swarmが停止している状態でHelixサーバで変更を行った場合や、更新中にエラーが発生した場合など、特定の状況において、RedisキャッシュがHelixサーバと同期されていない状態になることがあります。 Swarmでは、通常の整合性チェックを実行して、RedisキャッシュとHelixサーバが同期されているかどうかを確認することができます。 整合性チェックで同期されていないキャッシュファイルが見つかった場合は、Swarmにより、そのキャッシュ内のデータが自動的に更新されます。
    • check_integrity構成可能変数を使用して、Redisキャッシュの整合性チェックを実行するタイミングを指定することができます。 一日のうちの特定の時間を指定することも(24時間形式で指定、1桁の時間の場合は先頭にゼロを付加)、チェック処理の実行間隔を秒数(正の整数)で指定することもできます。 整合性チェックを無効にする場合は、値として「0」を設定します。 デフォルト値は「03:00」です。

    • population_lock_timeout: キャッシュに初めてデータを取り込む際のタイムアウトを秒単位で指定します。 Swarmシステムの規模が大きいために、キャッシュへのデータ取り込みがタイムアウトになった場合は、このタイムアウト時間の値を増やしてください。 デフォルト値は300秒です。
  3. /opt/perforce/etc/redis-server.confファイルで、Redisサーバの設定を以下のように編集します。
  4. bind MyRedisServerHostname
    port MyRedisServerPortNumber
    supervised auto
    save ""
    dir /MyRedis/CacheDatabase/Directory/Location
    • bind MyRedisServerHostname には、Redisサーバのホスト名を指定します。
    • port MyRedisServerPortNumber には、Redisサーバのポート番号を指定します。
    • supervised autoを指定すると、upstartまたはsystemdの使用状況が自動的に検出され、プロセスでスーパーバイザを使用する準備が整ったことが通知されます。
    • save ""」を指定すると、バックグラウンドでの保存処理が無効になります(推奨)。
    • dir /MyRedis/CacheDatabase/Directory/Location には、Redisキャッシュデータベースを保存するディレクトリを指定します。

    ヒント
    • redis-server.confファイルには、Swarm用のRedis構成に関する詳細情報が記述されています。
    • 多数のユーザ、グループ、プロジェクトが存在するSwarmシステムの場合、メモリキャッシュを永続化すると、起動時間を短縮できる可能性があります。 メモリキャッシュを永続化するには、バックグラウンドでの保存機能を無効にして追加保存機能を有効にします。詳細については、redis-server.confファイルのコメントを参照してください。

  5. これで、Swarmを自分専用のRedisサーバに接続できるようになりました。
  6. これでSwarmのインストールは完了です。ただし、実稼働環境で使用する前に、正しく機能するかどうかを確認してください。詳細については、「Swarmのインストール環境を確認する」を参照してください。