インストール後の構成オプション
Swarmのインストール環境の動作をカスタマイズするためのオプションがいくつか用意されています。このセクションでは、正式にサポートされているオプションについて説明します。
このセクションには、次の内容が記載されています。
- カスタマイズが不要な場合
- Swarm仮想ホストのバックアップ
- HTTPS
- 既存のWebサイトのサブフォルダでSwarmを実行する
- カスタムポート上でSwarmの仮想ホストを実行する
- 自分専用のRedisサーバを使用する
カスタマイズが不要な場合
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/
- /usr/local/apache2/conf/
- /Applications/XAMPP/etc/
通常、Apacheの構成パス内では、メインのApache構成ファイルの名前は以下のいずれかになります。
- httpd.conf
- apache2.conf
Apache構成ファイルの場所や名前に関する詳しい説明については、https://cwiki.apache.org/confluence/display/httpd/DistrosDefaultLayoutを参照してください。
-
ApacheでSSLを有効にします。
Apacheユーティリティの
a2enmod
がインストールされている場合は、以下のコマンドを実行します。$ sudo a2enmod ssl
a2enmod
ユーティリティがインストールされていない場合は、Apache構成ファイルを手動で編集します。モジュールのApache構成ファイルを探してコメントを解除するか、次の行を追加します。LoadModule ssl_module libexec/apache2/mod_ssl.so
-
証明書を保存するためのディレクトリを作成します。
$ sudo mkdir -p /etc/apache2/ssl
-
証明書とキーのペアを作成します。
$ 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のインストール環境のホスト名と正確に一致する値を指定する必要があります。
-
以下のコマンドを実行して、証明書ディレクトリを保護します。
$ sudo chmod 600 /etc/apache2/ssl
-
仮想ホスト構成を編集します。
注意仮想ホスト構成は、このセクションの最初の手順でバックアップしたファイルに保存されています。
以下の内容に一致するように、仮想ホスト構成を編集します。
<VirtualHost *:80> ServerName myswarm AllowEncodedSlashes NoDecode 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 AllowEncodedSlashes NoDecode 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/
-
仮想ホスト定義のカスタマイズを行います。
myswarm.host
を、ネットワーク上のSwarmのホスト名に置き換えます。-
myswarm
を、Swarmがホストされているサブドメインに置き換えます。通常は、「swarm」に置き換えます。注意ログファイルパスにmyswarmという文字列が含まれていますが、アクティブなホストとそのログファイルを整合させるため、この文字列はログファイルのサブドメイン名とプレフィックスに一致している必要があります。こうすると、Apacheサーバが複数のSwarmインスタンスをホストしている場合に特に便利です。
/path/to/apache/logs
を、Apacheがログファイルを格納するパスに置き換えます。通常、Apacheのログファイル名は、access_log
とerror_log
です。/path/to/swarm
を、Swarmディレクトリのパスに置き換えます。
-
Webサーバを再起動します。
$ sudo apachectl restart
-
ファイアウォールの設定を調整して、Webサーバの標準SSLポートに接続できるようにします。
-
CentOSまたはRHELの場合:
$ sudo firewall-cmd --zone=public --add-port=443/tcp --permanent $ sudo systemctl reload firewalld
- 上記以外のディストリビューションの場合は、ネットワーク管理者に問い合わせるかオペレーティングシステムのドキュメントを参照して、ファイアウォールの設定方法を確認してください。
-
-
WebブラウザでHTTPSのURLをテストします。
重要myswarm.host
の値が仮想ホスト構成と証明書でそれぞれ異なっている場合、P4VとSwarmの統合が失敗し、「SSL handshake failed
」というメッセージが表示されます。また、逆引きを実行してSwarmサーバのIPアドレスを照会すると、
myswarm.host
が応答として返されます。 - 実稼働環境で使用する前に、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.phpのenvironmentブロックから削除します。
Swarmのインストール環境をカスタマイズする前に、Swarm仮想ホストの構成情報をバックアップしてください。詳細については、「Swarm仮想ホストのバックアップ」を参照してください。
Swarmで使用するホスト名を制御できない場合は、専用の仮想ホストでSwarmを実行しなければならないことがあります。その際、専用の仮想ホストでSwarmを実行できない場合は、既存の仮想ホスト構成のサブフォルダにSwarmをインストールすることをお勧めします。
サブフォルダにSwarmをインストールするには、この章で説明したインストール手順を変更する必要があります。
- Apache構成はまったく異なります。新しい仮想ホストを構成するのではなく、既存の仮想ホスト構成を変更する必要があります。多くの場合、Apacheのデフォルトサイトを使用することになります。
- 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の構成
-
対象の仮想ホストのドキュメントルート内に
SWARM_ROOT
ディレクトリが存在していないことを確認します。これは、Swarmのソースコードと構成情報を参照できないようにするための手順です。具体的には、保存されている資格情報、アクティブなセッション、アクティブなワークスペースなどの重要な情報にアクセスできないようにするための手順です。
-
現在使用している仮想ホスト構成を調整します。
注意Swarmのインストール方法に応じて、編集する必要がある仮想ホスト構成のファイル名は以下のようになります。
- Swarm OVAまたはSwarmパッケージを使用してインストールした場合は、
perforce-swarm-site.conf
ファイルを編集します。 - SwarmのApache構成に従って手動でインストールした場合は、
swarm
ファイルを編集します。 - 上記以外の方法でインストールした場合は、
httpd.conf
などのファイルを編集します。
以下の行を仮想ホスト定義に追加します。
Alias "/swarm" "SWARM_ROOT/public" DocumentRoot "/var/www/html" <Directory "SWARM_ROOT/public"> AllowOverride All Require all granted </Directory>
Alias
行は、Swarmのpublic
フォルダのコンテンツを使用して、https://myhost/swarm
に対する要求にApacheが応答することを示しています。「Alias」行の/swarm
の部分は、任意の値に変更することができます。「DocumentRoot」行で、Apache DocumentRootディレクトリの場所を指定します。
<Directory>
ブロックは、Swarmのpublic
フォルダ内のすべての項目にアクセスできることを示しています。SWARM_ROOT
を、Swarmの実際のパスに置き換えてください。 - Swarm OVAまたはSwarmパッケージを使用してインストールした場合は、
-
Webサーバを再起動します。
$ sudo apachectl restart
Swarmの構成
サブフォルダ内でSwarmを正常に機能させるには、swarm_root/data/config.php
ファイルに以下の行を追加する必要があります(この行が、p4項目に対応することになります)。
'environment' => array(
'base_url' => '/swarm'
),
/swarm
の部分が、仮想ホスト構成のAlias
行の最初の項目に一致している必要があります。
詳細については、「環境」を参照してください。
Swarmトリガの構成
swarm-trigger.confファイルで、base_urlをSWARM_HOSTパスに含める必要があります。
swarm-trigger.confファイルの保管場所は、インストール環境によって異なります。swarm-trigger.confファイルの保管場所については、「WindowsまたはLinuxでホストされるHelixサーバを使用してSwarmトリガを設定する」を参照してください。
- swarm-trigger.confファイルを編集用として開きます。
- 以下の行を探します。
- ファイルを保存します。
SWARM_HOST="http://my-swarm-host"
上記の行を以下のように変更します。
SWARM_HOST="http://website-hostname/swarm"
Cron構成
Apache構成とSwarm構成で設定したサブフォルダを有効にするには、Swarmの繰り返しタスク構成を更新する必要があります。この構成は、swarm-cron-hosts.confファイル内に記述されています。
/opt/perforce/etc/swarm-cron-hosts.conf
を編集用に開きます。-
以下の行を探します。
https://swarm-host
上記の行を以下のように変更します。
https://swarm-host/swarm/
swarm-host
は、Swarmのインストール環境のホスト名で、swarm
は、使用するサブフォルダです。 -
編集したファイルを保存します。
1分後に新しいワーカーが起動します。
- 実稼働環境で使用する前に、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の構成
-
仮想ホスト構成を編集します。
注意Swarmのインストール方法に応じて、編集する必要がある仮想ホスト構成のファイル名は以下のようになります。
- Swarm OVAまたはSwarmパッケージを使用してインストールした場合は、
perforce-swarm-site.conf
ファイルを編集します。 - Swarmの推奨Apache構成に従って手動でインストールした場合は、
swarm
ファイルを編集します。 - 上記以外の方法でインストールした場合は、
httpd.conf
などのファイルを編集します。
-
<VirtualHost>
ブロックの外側に以下の行を追加します。Listen 8080
-
<VirtualHost *:80>
行を以下のように変更します。<VirtualHost *:8080>
上記の両方の行の
8080
を、使用するカスタムポートの値で置き換えます。重要すでに使用されているポートを指定した場合、Apacheは起動しません。
- Swarm OVAまたはSwarmパッケージを使用してインストールした場合は、
-
Webサーバを再起動します。
$ sudo apachectl restart
-
ファイアウォールの設定を調整して、カスタムポートに接続できるようにします。
-
CentOSまたはRHELの場合:
$ sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
$ sudo systemctl reload firewalld8080
を、使用するカスタムポートの値で置き換えます。 - 上記以外のディストリビューションの場合は、ネットワーク管理者に問い合わせるかオペレーティングシステムのドキュメントを参照して、ファイアウォールの設定方法を確認してください。
-
Cron構成
Apache構成で設定したカスタムポートを有効にするには、Swarmの繰り返しタスク構成を更新する必要があります。この構成は、swarm-cron-hosts.confファイル内に記述されています。
/opt/perforce/etc/swarm-cron-hosts.conf
を編集用に開きます。-
以下の行を探します。
https://swarm-host:80
上記の行を以下のように変更します。
https://swarm-host:8080
swarm-host
は、Swarmのインストール環境のホスト名で、8080
は、使用するカスタムポートです。 -
編集したファイルを保存します。
1分後に新しいワーカーが起動します。
- 実稼働環境で使用する前に、Swarmか正しく機能するかどうかを確認してください。詳しくは、「Swarmのインストール環境を確認する」を参照してください。
自分専用のRedisサーバを使用する
デフォルト設定の場合、Swarmは、Swarmマシン上で専用のRedisサーバを使用します。
このセクションでは、Swarmを自分専用のRedisサーバに接続する方法について説明します。
自分専用のRedisサーバを使用するための手順:
- 以下に示すredisブロックを
SWARM_ROOT/data/config.php
ファイルに追加します。このブロックには、Redisサーバのpassword、namespace、host、portに関する詳細情報が記述されています。 - password: Redisサーバのパスワードを指定します。デフォルト値はnullです。
- namespaceには、Redisキャッシュのキー値で使用されるプレフィックスを指定します。デフォルト値は「Swarm」です。
- host MyRedisServerHostname: Redisサーバのホスト名を指定します。
- port MyRedisServerPortNumber: Redisサーバのポート番号を指定します。
- items_batch_size: Redisに対するmset呼び出しで許可されるキーと値のペアの最大数を指定します。この最大数を超えた場合は、処理効率を考慮して一括処理されます。デフォルト値は「100000」です。
- check_integrity: Swarmが停止している状態でHelixサーバで変更を行った場合や、更新中にエラーが発生した場合などに、RedisキャッシュがHelixサーバに同期されていない状態になる可能性があります。Swarmでは、通常の整合性チェックを実行して、RedisキャッシュとHelixサーバが同期されているかどうかを確認することができます。整合性チェックで同期されていないキャッシュファイルが見つかった場合は、Swarmにより、そのキャッシュ内のデータが自動的に更新されます。
- population_lock_timeout: キャッシュに初めてデータを取り込む際のタイムアウトを秒単位で指定します。Swarmシステムの規模が大きいために、キャッシュへのデータ取り込みがタイムアウトになった場合は、このタイムアウト時間の値を増やしてください。デフォルト値は「300」秒です。
- /opt/perforce/etc/redis-server.confファイルで、Redisサーバの設定を以下のように編集します。
- 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ファイルのコメントを参照してください。
- 実稼働環境で使用する前に、Swarmか正しく機能するかどうかを確認してください。詳しくは、「Swarmのインストール環境を確認する」を参照してください。
<?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.
),
1つのRedisサーバに対して複数のSwarmインスタンスが稼働している場合、各Swarmサーバで異なるRedis名前空間を使用する必要があります。これにより、個別のSwarmインスタンスのキャッシュデータを識別できるようになります。名前空間の長さは128文字以内に制限されています。
1つ以上のSwarmインスタンスが複数のHelixサーバに接続されている場合、Redisの名前空間にはserver labelが含められるため、名前空間の長さが127文字以内に制限されます。詳細については、「複数のHelixサーバインスタンス」を参照してください。
この「100000」というデフォルト値は、処理効率とプロジェクトデータの複雑度のバランスを考慮して決定された値です。通常、このデフォルト値を変更する必要はありませんが、変更する必要がある場合は、事前にサポートチームに連絡してください。
check_integrity構成可能変数を使用して、Redisキャッシュの整合性チェックを実行するタイミングを指定することができます。一日のうちの特定の時間を指定することも(24時間形式で指定、1桁の時間の場合は先頭にゼロを付加)、チェック処理の実行間隔を秒数(正の整数)で指定することもできます。整合性チェックを無効にする場合は、値として「0」を設定します。デフォルト値は「03:00」です。
bind MyRedisServerHostname
port MyRedisServerPortNumber
supervised auto
save ""
dir /MyRedis/CacheDatabase/Directory/Location
これで、SwarmがRedisサーバに接続され、Swarmのインストールが完了しました。