EL7環境において BoltzMessenger で複数環境に対応するには

BoltzMessenger は、標準インストールでは1サーバあたり1つのインスタンスしか実行しません。 そのため、検証環境と本番環境を分けたい・複数のアプリを1台で対応したい、といった場合は、BoltzMessenger が利用するデータベースと各種設定を、環境分だけ作成いただく必要があります。

以下の手順では、検証環境を新しく構築する手順を紹介します。

DBにデータベースを追加

BoltzMessenger が利用するデータベースを作成するには、boltz-messenger-init コマンドを使います。 このコマンドは、オプション以外に引数を与えると、その名前でデータベースを作成します。 以下の例では boltz_staging というデータベースを、ローカルで動作しているサーバに作成しています。

1
2
3
4
$ boltz-messenger-init \
    -u $user \
    -p $pass \
    -h localhost:3306 boltz_staging

BoltzMessenger の設定ファイルをコピー

BoltzMessenger の設定ファイル /etc/boltz-messenger/config.yml をコピーします。 ここでは検証環境の構築が目的なので、ファイル名を config-staging.yml としました。

1
2
$ sudo cd /etc/boltz-messenger
$ sudo cp config.yml config-staging.yml

コピーしたファイルの、db.name を前の手順で作成したデータベースへ変更します。 また、必要ならデータベースへログインするユーザも登録しておきます。

1
2
mysql> grant all privileges on boltz_staging.* to boltz@localhost identified by 'passpass';
// passpassは実際のパスワードで置き換え

boltz-messenger-gatewayをコピーする

boltz-messenger-gateway は管理画面に登録した通知の配信管理サービスです。 このサービスは、config.yml によって参照するデータベースや認証情報を設定しているため、 ファイルの参照を切り替えるためにサービスのコピーが必要です。

以下の例では、staging というサフィックスを付与していますが、任意の名前を指定していただけます。

1
2
3
4
5
6
7
8
$ sudo cd /etc/sysconfig/boltz
$ sudo cp messenger-gateway messenger-gateway-staging
$ # 各種設定を変更、特にconfigとlisten_addrは必須
$ sudo vi messenger-gateway-staging
$ sudo cd /etc/systemd/system
$ sudo cp /usr/lib/systemd/system/boltz-messenger-gateway.service boltz-messenger-gateway-staging.service
$ # Environment のパスをmessenger-gateway-stagingに変更
$ sudo vi boltz-messenger-gateway-staging.service

終わったらsystemctlでenable & startします。

1
2
3
$ sudo systemctl daemon-reload
$ sudo systemctl enable boltz-messenger-gateway-staging.service
$ sudo systemctl start boltz-messenger-gateway-staging.service

管理画面を分離する

管理画面も boltz-messenger-gateway と同じ設定ファイルを参照します。 こちらは Systemd ではなく、環境変数で切り替えるようになります。

1
2
3
$ sudo cd /etc/httpd/conf.d
$ sudo cp boltz-messenger-admin.conf boltz-messenger-admin-staging.conf
$ sudo vi /etc/httpd/conf.d/boltz-messenger-admin-staging.conf

boltz-messenger-admin-staging.conf は以下のように記述してください。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
Alias /boltz-messenger-staging/ /usr/share/boltz-messenger-admin/app/webroot/
<Location /boltz-messenger-staging>
    SetEnv BE_CONFIG_PATH /etc/boltz-messenger/config-staging.yml
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteBase /boltz-messenger-staging
    RewriteRule ^ index.php [L]
</Location>

<Directory /usr/share/boltz-messenger-admin/app/webroot/>
    AllowOverride All
    require all granted
</Directory>

また、標準でインストールした boltz-messenger-admin.conf も、以下のように修正してください。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
Alias /boltz-messenger/ /usr/share/boltz-messenger-admin/app/webroot/
<Location /boltz-messenger>
  SetEnv BE_CONFIG_PATH /etc/boltz-messenger/config.yml
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteBase /boltz-messenger
  RewriteRule ^ index.php [L]
</Location>

<Directory /usr/share/boltz-messenger-admin/app/webroot/>
  AllowOverride All
  require all granted
</Directory>

再起動を行えば、/boltz-messenger/ と /boltz-messenger-staging/ の2つ管理画面が利用可能になります。

1
$ sudo systemctl restart httpd.service

Web API / BoltzMessenger Webを分離する

2.2 以降をお使いの場合、アプリ用の API やウェブプッシュ受信画面は、BoltzMessenger Web というパッケージに含まれるようになりました。 こちらをお使いの場合、管理画面と同様な設定を、Web パッケージにも行う必要があります。

1
2
3
$ sudo cd /etc/httpd/conf.d
$ sudo cp boltz-messenger-web.conf boltz-messenger-web-staging.conf
$ sudo vi boltz-messenger-web-staging.conf

boltz-messenger-web-staging.conf の例です。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
Alias /bm-staging/ /usr/share/boltz-messenger-web/webroot/
<Location /bm-staging>
    SetEnv BE_CONFIG_PATH /etc/boltz-messenger/config-staging.yml
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteBase /bm-staging
    RewriteRule ^ index.php [L]
</Location>

<Directory /usr/share/boltz-messenger-web/webroot/>
    AllowOverride All
    require all granted
</Directory>

boltz-messenger-web.conf も変更します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
Alias /bm/ /usr/share/boltz-messenger-web/webroot/
<Location /bm>
    SetEnv BE_CONFIG_PATH /etc/boltz-messenger/config.yml
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteBase /bm
    RewriteRule ^ index.php [L]
</Location>

<Directory /usr/share/boltz-messenger-web/webroot/>
    AllowOverride All
    require all granted
</Directory>

これで、httpd を再起動すれば反映されます。

制限事項

BoltzMessenger Web を同一ドメインに複数設置した場合、ウェブプッシュ受信画面に関する設定は最後にアクセスした画面のものが有効となり、チャンネル・セグメントの設定が失われます。ウェブプッシュを同一サーバーで動作させる場合はバーチャルホストの定義などでドメインが各画面で変更されるように設定してください。

ご不明な点はありませんか?

機能の詳細、導入のご検討、お見積もり依頼などは、お気軽にお問い合わせください。
担当者から追ってご連絡いたします。

お問い合わせはこちら