Exploratory サーバー(オンプレ)を最新版にアップグレードする方法

こちらは、既にExploratoryサーバー(オンプレ)を利用している方が、最新のバージョンにアップグレードする際のための手順書です。

このドキュメントの中に出てくる<<version>>は、ご使用になるExploratory サーバーのバージョン(例:6.8.0.19)に置き換えて下さい。

1. 新しいDockerイメージファイルをダウンロード

新しいDockerイメージファイルをこちらリリース・ノートのページの最新版のセクションの下にある、「For Upgrade」というリンクよりダウンロードしてください。

2. Dockerイメージをロード

以下のコマンドを実行して新しいDockerイメージをロードしてください。

docker load -i exploratory-collab-images-<<version>>.tar.gz

3. 既存のExploratory サーバーをシャットダウン

既存のExploratory サーバーがインストールされているディレクトリに移って、以下のコマンドでExploratory サーバーをシャットダウンしてください。

cd exploratory
docker-compose down

4. docker-compose.yml内のDockerイメージのバージョンなどをアップデート

docker-compose.yml内のDockerイメージのバージョンなどをアップデートするため、移行スクリプトをダウンロード、実行します。

既存のExploratory サーバーがインストールされているディレクトリ内に、移行スクリプトをダウンロードします。

curl -O https://exploratory-download.s3-us-west-2.amazonaws.com/collab-server/migrate_docker_compose_<<version>>.sh
curl -O https://exploratory-download.s3-us-west-2.amazonaws.com/collab-server/migrate_docker_compose_<<version>>.js

ダウンロードした移行スクリプトを実行します。

bash migrate_docker_compose_<<version>>.sh

これで、既存のdocker-compose.ymlの内容が、最新版で動作するようにアップデートされます。

5. Nginxの設定の変更

バージョン6.8.0より、スケジュール管理画面のURLが別のポート番号(デフォルト3001)を使ったものから、その他のページと同じポート番号(デフォルト8080)を使ったものに変更されました。 これを正しく動作させるために、Nginxの設定ファイルであるdefault.confに変更が必要です。

また、バージョン6.8.4より、ブラウザがSafariの場合にパラメーター使用中にCSVファイルのダウンロードが問題なくできるようにするためにdefault.confに設定が追加されました。以前のバージョンからアップグレードするときは、こちらの変更を追加することをおすすめします。

SSLを設定していない場合

SSLを設定していない場合は、以下の変更を行ってください。

6.8.0以降のバージョンからアップグレードする場合

6.8.0以降のバージョンからアップグレードする場合は、スケジュール管理画面のための設定は既に入っているはずですので、以下のSafariのための設定のみを追加してください。

追加設定の内容:

    location /socket.io/ {
        proxy_pass http://exploratory:3000/socket.io/;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto http;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

設定を追加するdefault.conf内の位置:

server {
    listen       80;
    server_name  localhost;
        ...
        ...以下の行の直前の、この位置に上記の内容を挿入する...
        location / {
        proxy_pass http://exploratory:3000/;
        ...

6.7またはそれ以前のバージョンからアップグレードする場合

6.7またはそれ以前のバージョンからアップグレードする場合は、スケジュール管理画面のための設定と、Safariのための設定の両方をあわせて追加します。以下のような追加設定がdefault.conf内にまだ無い場合、default.confの以下の位置に挿入してください。

追加設定の内容:

    location = /schedule {
        proxy_pass http://agendash:3001/;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto http;
    }
    location /agendash-css/ {
        proxy_pass http://agendash:3001/agendash-css/;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto http;
    }
    location /agendash-js/ {
        proxy_pass http://agendash:3001/agendash-js/;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto http;
    }
    location /agendash-api/ {
        proxy_pass http://agendash:3001/agendash-api/;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto http;
    }
    location /socket.io/ {
        proxy_pass http://exploratory:3000/socket.io/;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto http;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

設定を追加するdefault.conf内の位置:

server {
    listen       80;
    server_name  localhost;
        ...
        ...以下の行の直前の、この位置に上記の内容を挿入する...
        location / {
        proxy_pass http://exploratory:3000/;
        ...

SSLを設定している場合

こちらのドキュメントに従ってSSLを設定してある場合は、以下の変更を行ってください。

6.8.0以降のバージョンからアップグレードする場合

6.8.0以降のバージョンからアップグレードする場合は、スケジュール管理画面のための設定は既に入っているはずですので、以下のSafariのための設定のみを追加してください。

追加設定の内容:

    location /socket.io/ {
        proxy_pass http://exploratory:3000/socket.io/;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

設定を追加するdefault.conf内の位置:

server {
    listen       443;
    server_name  localhost;
        ...
        ...以下の行の直前の、この位置に上記の内容を挿入する...
        location / {
        proxy_pass http://exploratory:3000/;
                ...

6.7またはそれ以前のバージョンからアップグレードする場合

6.7またはそれ以前のバージョンからアップグレードする場合は、スケジュール管理画面のための設定と、Safariのための設定の両方をあわせて追加します。以下のような追加設定がdefault.conf内にまだ無い場合、default.confの以下の位置に挿入してください。

追加設定の内容:

    location = /schedule {
        proxy_pass http://agendash:3001/;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
    }
    location /agendash-css/ {
        proxy_pass http://agendash:3001/agendash-css/;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
    }
    location /agendash-js/ {
        proxy_pass http://agendash:3001/agendash-js/;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
    }
    location /agendash-api/ {
        proxy_pass http://agendash:3001/agendash-api/;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
    }
    location /socket.io/ {
        proxy_pass http://exploratory:3000/socket.io/;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

設定を追加するdefault.conf内の位置:

server {
    listen       443;
    server_name  localhost;
        ...
        ...以下の行の直前の、この位置に上記の内容を挿入する...
        location / {
        proxy_pass http://exploratory:3000/;
                ...

6. 大きなデータを扱うためのタイムアウトの変更(オプショナル)

バージョン6.1.3.0以降では大きなデータを扱うために、以下のタイムアウトをデフォルトで延長しています。6.1.3.0以前のバージョンからアップグレードする場合、以下の変更をおすすめします。

Rの実行時間のタイムアウト

Rの実行時間のタイムアウトを10分(600秒)から30分(1800秒)に延長します。

  • docker-compose.ymlの70行目あたりの、scheduler:セクションの下のenvironmentセクションの下の、EXPL_SCHEDULER_R_TIMEOUTの項目の値を600から1800に変更します。

変更前

  scheduler:
    image: scheduler:<<version>>
    environment:
      - EXPL_SCHEDULER_R_TIMEOUT=600

変更後

  scheduler:
    image: scheduler:<<version>>
    environment:
      - EXPL_SCHEDULER_R_TIMEOUT=1800

Nginxの受信、送信のタイムアウト

Nginxのデータの受信、送信のタイムアウトを延長します。Nginxは、Exploratory サーバーのフロント・エンドでリクエストを受け取って、バックエンドのNode Expressサーバーに渡しますが、ここでは、大きなEDFファイルがアップロードされたときにも問題がないように、この際のタイムアウトを延長します。

Nginxの設定ファイルである、default.confファイルに 以下の三つの項目を以下の例のように追加します。

  • proxy_read_timeout 1200s; NginxがNode Expressから返送されるデータを読み込むときのタイムアウトを1200秒に延長します。
  • proxy_send_timeout 1200s; Nginxが受信したデータをNode Expressに転送するときのタイムアウトを1200秒に延長します。
  • proxy_next_upstream_timeout 3600s; NginxがNode Expressの反応を待つ際のタイムアウトを3600秒に延長します。

default.confファイルの内容の例:

server {
    ...
    location / {
        ...
        proxy_read_timeout 1200s;
        proxy_send_timeout 1200s;
        proxy_next_upstream_timeout 3600s;
     }

docker-compose.ymlにライセンス・キーを追加

ライセンス・キーをお持ちの場合は、docker-compose.ymlに追加してください。22行目あたりに、以下の例の最後の行にあるような行を追加してください。 この例では、 xxxxxxxxxx をライセンス・キーとしています。

  exploratory:
    image: exploratory:<<version>>
    environment:
      - EXPL_ADMIN_FIRSTNAME=Admin
      - EXPL_ADMIN_LASTNAME=User
      - EXPL_ADMIN_EMAIL=hideaki@exploratory.io
      - EXPL_CRYPTOKEY=secretkey
      - EXPL_LICENSEKEY=xxxxxxxxxx

7. Exploratory サーバーを起動

exploratoryディレクトリの下で、以下のコマンドを実行して、Exploratory サーバーを再度起動してください。

docker-compose up -d

これでExploratory サーバーは最新のバージョンにアップグレードされました!

8. Exploratory サーバー v7以前から v8以降にアップグレードする場合 (MongoDBのバージョンのアップグレード)

Exploratory サーバーをv7以前のバージョンからv8以降にアップグレードした場合は、MongoDBのバージョンをバージョン6にアップグレードする必要があります。

  • docker psのコマンドでExploratory サーバーが起動され、実行中であることを確認します。これにより、実行中の Docker コンテナのリストが表示されるはずです。もし、実行中のコンテナが表示されない場合は、まずシステムを起動します。
  • 次に、exploratoryのディレクトリに移動し、以下のコマンドを実行して、アップグレードのためのスクリプトをダウンロードします。upgrade_mongodb_to_6.0.shのファイルが作成されたことを確認します。
cd exploratory
curl -O https://exploratory-download.s3.us-west-2.amazonaws.com/collab-server/upgrade_mongodb_to_6.0.sh
  • 以下のコマンドを実行します。MongoDBがアップグレードされ、Exploratory サーバーが自動的に再起動されます。
bash upgrade_mongodb_to_6.0.sh

9. Exploratory サーバー v8から v9にアップグレードする場合 (MongoDBのデータのアップデート)

Exploratory サーバーをv8からv9にアップグレードした場合は、v9の新機能を使うために、MongoDBに格納されているパブリッシュされたコンテンツに関するデータをアップデートする必要があります。

  • docker psのコマンドでExploratory サーバーが起動され、実行中であることを確認します。これにより、実行中の Docker コンテナのリストが表示されるはずです。もし、実行中のコンテナが表示されない場合は、まずシステムを起動します。
  • 次に、exploratoryのディレクトリに移動し、以下のコマンドを実行して、アップデートをするためのスクリプトをダウンロードします。upgrade_v8_to_v9.shのファイルが作成されたことを確認します。
cd exploratory
curl -O https://exploratory-download.s3.us-west-2.amazonaws.com/collab-server/upgrade_v8_to_v9.sh
  • 以下のコマンドを実行し、データをアップデートします。
bash upgrade_v8_to_v9.sh
Export Chart Image
Output Format
PNG SVG
Background
Set background transparent
Size
Width (Pixel)
Height (Pixel)
Pixel Ratio