tar ベースのポータルを RPM ベースのポータルに変換する

Edge for Private Cloud v. 4.17.09

Developer Services ポータルの 4.17.09 リリースでは、以前の tar ベースのバージョンのポータルを更新できません。RPM ベースのポータル バージョンのみを 4.17.09 に直接更新できます。

ただし、tar ベースのバージョンのポータルを 4.17.09 RPM ベースのポータル インスタンスに変換できます。このプロセスの一環として、既存のポータルの MySQL/MariaDB を Postgres データベースに移行します。変換後、ポータルは RPM ベースのポータルのままになります。

tar ベースのポータルの以前のバージョンの多く(バージョン 4.17.05 だけでなく、バージョン 4.16.09 や 4.17.01 など)を RPM ベースのポータルに移行できます。唯一の要件は、ポータルで Drupal 7 以降が実行されていることです。Drupal のバージョンを確認するには、Drupal メニューで [Reports] > [Status Reports] を選択します。Drupal のバージョンは、出力の最初の行に表示されます。

tar ベースのポータルから RPM ベースのポータルに移行する大まかな手順は次のとおりです。

  • 新しいノードに RPM ベースの 4.17.09 バージョンの Developer Service ポータルをインストールします。
  • RPM ベースのポータルに新しい Postgres データベースを作成します。
  • tar ベースのポータルからポータル データベースを移行します。
  • すべてのアクセサリー ファイルを tar ベースのポータルから RPM ベースのポータルにコピーします。
  • 新しい RPM ベースのポータルを指すように DNS エントリを更新します。

    RPM ベースのポータルではデフォルトでポート 8079 が使用されますが、tar ベースのポータルではポート 80 が使用されます。DNS エントリで正しいポート番号を使用していることを確認してください。別のポートの使用については、ポータルで使用する HTTP ポートを設定するをご覧ください。

変換後の新しいデフォルト インストール ディレクトリ

インストール済みのポータルを更新して Nginx/Postgres を使用するように変更すると、ルート ディレクトリも変わります。変更前のディレクトリは以下のとおりです。

/opt/apigee/apigee-drupal

これを、次のように変更します。

/opt/apigee/apigee-drupal/wwwroot

ポータルの変換手順

ポータルを RPM ベースのインストールに変換するには:

  1. RPM ベースの 4.17.09 バージョンのデベロッパー サービス ポータルを、tar ベースのポータルとは異なるノードにインストールします。
  2. RPM ベースのポータルで、新しい Postgres データベースを作成します。後で、tar ベースのポータルからこの新しいデータベースにデータベースを移行します。
    1. psql にログインします。
      >psql -h localhost -p 5432 -U apigee

      ポータル構成ファイルの PG_PWD プロパティで定義されている Postgres パスワードを入力します。
    2. 新しい Postgred データベースを作成します。
      # CREATE DATABASE newportaldb;
    3. psql を終了します。
      # \q
  3. tar ベースのポータルで、使用されなくなった古いモジュールを削除します。
    > cd /var/www/html
    > drush sql-query --db-prefix "DELETE from {system} where name = 'apigee_account' AND type = 'module';"
    > drush sql-query --db-prefix "DELETE from {system} where name = 'apigee_checklist' AND type = 'module';"
    > drush sql-query --db-prefix "DELETE from {system} where name = 'apigee_sso_ui' AND type = 'module';"

  4. tar ベースのポータルで、Migrator Drupal モジュールをインストールして構成します。

    1. cd /tmp
    2. wget https://ftp.drupal.org/files/projects/dbtng_migrator-7.x-1.4.tar.gz
    3. gunzip /tmp/dbtng_migrator-7.x-1.4.tar.gz
    4. tar -xvf /tmp/dbtng_migrator-7.x-1.4.tar --directory /var/www/html/sites/all/modules
    5. 管理者としてポータルにログインします。
    6. Drupal メニューで [Modules] を選択します。
    7. DBTNG Migrator モジュールを有効にします。
    8. 構成を保存します。
  5. tar ベースのポータルで、/var/www/html/sites/default/settings.php を編集して、RPM ベースのポータルで新しく作成されたデータベースを指す 2 番目のデータベース構成を追加します。現在のデータベース構成の名前は default です。新しい構成に custom:
    という名前を付けます。
    $databases = array (
          'default' =>
          array (
            'default' =>
            array (
              'database' => 'devportal',
              'username' => 'devportal',
              'password' => 'devportal',
              'host' => 'localhost',
              'port' => '',
              'driver' => 'mysql',
              'prefix' => '',
            ),
          ),
          'custom' =>
          array (
            'default' =>
            array (
              'database' => 'newportaldb',
              'username' => 'apigee',
              'password' => 'postgres',
              'host' => '192.168.168.100',
              'port' => '5432',
              'driver' => 'pgsql',
              'prefix' => '',
            )
          )
        );

    ここで、host と port は、Postgres サーバーの IP アドレスとポートを指定します。Postgres は接続にポート 5432 を使用します。
  6. tar ベースのポータルで、Postgres ドライバをインストールします。
    1. Yum を使用してドライバをインストールします。
      > yum install php-pdo_pgsql
    2. /etc/php.ini を編集して、ファイルの任意の場所に次の行を追加します。
      extension=pgsql.so
    3. Apache を再起動します。
      > service httpd restart
  7. tar ベースのポータルで、ポータル データベースを RPM ベースのポータルに移行します。
    1. 管理者としてポータルにログインします。
    2. Drupal メニューで [Structure] > [Migrator] を選択します。
    3. tar ベースのポータルで、上記の settings.php ファイルに基づいて、元のデータベース(default)と宛先データベース(custom)を選択します。
    4. [移行] をクリックします。tar ベースのデータベースが RPM ベースのデータベースに移行されます。
  8. tar ベースのサーバーから RPM ベースのサーバーに sites ディレクトリをコピーします。
    以下の手順で示すパスは、デフォルトのパスに基づいています。インストールに合わせて必要に応じて変更します。
    1. tar ベースのポータルで、/var/www/html/sites ディレクトリをバンドルします。
      > cd /var/www/html/sites
      > tar -cvzf /tmp/sites.tar.gz .
    2. /tmp/sites.tar.gz を RPM ベースのサーバーの /opt/apigee/apigee-drupal/wwwroot/sites にコピーします。
    3. sites ディレクトリをアンバンドルしますが、重要なファイルは上書きしません。
      1. settings.php ファイルをバックアップします。
        > sudo cp /opt/apigee/apigee-drupal/wwwroot/sites/default/settings.php /opt/apigee/apigee-drupal/wwwroot/sites/default/settings.bak.php
      2. 既存の files ディレクトリをバックアップします。
        > sudo mv /opt/apigee/apigee-drupal/wwwroot/sites/default/files /opt/apigee/apigee-drupal/wwwroot/sites/default/files_old
      3. 既存の sites ディレクトリをバックアップします。
        > tar -cvzf /tmp/sites_old.tar.gz /opt/apigee/apigee-drupal/wwwroot/sites
      4. tar ベースのサーバーから sites ディレクトリを解凍して untar します。
        > gunzip /opt/apigee/apigee-drupal/wwwroot/sites/sites.tar.gz

        > tar -xvf /opt/apigee/apigee-drupal/wwwroot/sites/sites.tar
      5. コピーしたファイルの所有権が適切であることを確認します。
        > chown -R apigee:apigee /opt/apigee/apigee-drupal/wwwroot/sites/
      6. settings.php ファイルを復元します。
        > sudo cp /opt/apigee/apigee-drupal/wwwroot/sites/default/settings.bak.php /opt/apigee/apigee-drupal/wwwroot/sites/default/settings.php
      7. Move private files to new location:
        > cp -r /opt/apigee/apigee-drupal/wwwroot/sites/default/files/private/* /opt/apigee/data/apigee-drupal-devportal/private

        > rm -rf /opt/apigee/apigee-drupal/wwwroot/sites/default/files/private

        > chown -R apigee:apigee /opt/apigee/data/apigee-sap-drupal-devportal/private
  9. tar ベースのポータルで、tar ベースのポータルのウェブルート ディレクトリのパスをデフォルトのパス /var/www/html から変更した場合のみ、drush status を実行して、files パスと private files パスを確認します。
    > cd /var/www/html
    > drush status


    files/private files が sites ディレクトリにない場合は、上記のように RPM ベースのサーバーにコピーします。
  10. RPM ベースのポータルで、/opt/apigee/apigee-drupal/wwwroot/sites/default/settings.php を更新して、デフォルト データベースのプロパティを設定します。
    > vi /opt/apigee/apigee-drupal/wwwroot/sites/default/settings.php

    settings.php でデフォルト データベースの説明を設定します。
    $databases = array (
          'default' =>
          array (
            'default' =>
            array (
              'database' => 'newportaldb',
              'username' => 'apigee',
              'password' => 'postgres',
              'host' => 'localhost', 'port' => '5432',
              'driver' => 'pgsql',
              'prefix' => '',
            )
          )
        );

    ここで、database は作成した新しいデータベースを指定します。username と password は、tar ベースのポータルでカスタム データベースに定義されているとおりです。prefix は空です。
  11. RPM ベースのポータル: RPM ベースのポータルには、tar ベースのポータルよりも少ない Drupal モジュールが含まれています。RPM ベースのポータルに移行したら、不足しているモジュールがないか確認し、必要に応じてインストールする必要があります。
    1. 欠落しているモジュールを検出するために使用される Drupal の missing_module をインストールします。
      > cd /opt/apigee/apigee-drupal/wwwroot
      > drush dl missing_module
      > drush en missing_module
    2. RPM ベースのポータルに管理者としてログインします。
    3. Drupal メニューで [Reports] > [Status reports] を選択し、不足しているモジュールがないか確認します。
    4. このレポートを使用して、不足しているモジュールをインストールするか、次のコマンドを使用します。
      > cd /opt/apigee/apigee-drupal/wwwroot
      > drush dl <moduleA> <moduleB> ...
      > drush en <moduleA> <moduleB> ...
    5. すべてのモジュールを有効にしたら、ファイルが apigee ユーザーによって所有されていることを確認します。
      > chown -LR apigee:apigee /opt/apigee/apigee-drupal/wwwroot

      ファイルへのアクセス許可の詳細については、https://www.drupal.org/node/244924 をご覧ください。
  12. RPM ベースのポータルで、ブラウザで update.php を実行して、欠落しているモジュールのエラーを削除します。
    1. RPM ベースのポータルに管理者としてログインします。
    2. ブラウザで、次の URL に移動します。
      http://{portal_IP_or_DNS}:8079/update.php

      ここで、portal_IP_or_DNS は、RPM ベースのポータルの IP アドレスまたはドメイン名です。
    3. 画面の指示に沿って操作します。
  13. 新しい RPM ベースのポータルを指すように DNS エントリを更新します。

    RPM ベースのポータルではデフォルトでポート 8079 が使用されますが、tar ベースのポータルではポート 80 が使用されます。DNS エントリで正しいポート番号を使用していることを確認してください。別のポートを使用する方法については、ポータルで使用する HTTP ポートを設定するをご覧ください。

これで変換は完了です。