Convertir un portail TAR en portail RPM

La version 4.18.05 du portail de services pour les développeurs Apigee (ou simplement le portail) ne vous permet pas de mettre à jour une version précédente du portail (basée sur l'extension tar). Vous ne pouvez mettre directement à jour une version du portail basée sur le RPM que vers la version 4.18.05.

Toutefois, vous pouvez convertir une version tar du portail en une instance du portail basée sur la version 4.18.05 RPM. Dans le cadre de ce processus, vous migrez la base de données MySQL/MariaDB du portail existant vers une base de données Postgres. Une fois converti, votre portail reste basé sur un RPM.

Vous pouvez migrer de nombreuses versions précédentes du portail tar vers un portail basé sur RPM, y compris les versions 4.16.09 et 4.17.01, et pas seulement la version 4.17.05. La seule condition requise est que le portail exécute Drupal 7 ou une version ultérieure. Pour vérifier votre version de Drupal, sélectionnez Rapports > Rapports d'état dans le menu Drupal. La version de Drupal apparaît dans la première ligne de la sortie.

Voici les grandes étapes à suivre pour migrer d'un portail tar vers un portail basé sur RPM:

  • Installez la version 4.18.05 basée sur RPM du portail sur un nouveau nœud.
  • Créez une base de données Postgres sur le portail basé sur RPM.
  • Migrez la base de données du portail à partir du portail tar.
  • Copiez tous les fichiers d'accessoires du portail basé sur tar vers le portail basé sur RPM.
  • Mettez à jour les entrées DNS pour qu'elles pointent vers le nouveau portail basé sur RPM.

    Notez que la version du portail basée sur RPM utilise le port 8079 par défaut, tandis que la version basée sur TAR utilise le port 80. Veillez à utiliser le bon numéro de port dans votre entrée DNS. Consultez la section Définir le port HTTP utilisé par le portail pour en savoir plus sur l'utilisation d'un autre port.

Nouveau répertoire d'installation par défaut après la conversion

Après la mise à jour d'une installation qui utilise désormais NGINX/Postgres, le répertoire racine:

/opt/apigee/apigee-drupal

to:

/opt/apigee/apigee-drupal/wwwroot

Procédure de conversion du portail

Pour convertir le portail en installation basée sur RPM, procédez comme suit:

  1. Installez la version 4.18.05 du portail basée sur RPM sur un nœud différent de celui de votre portail tar.
  2. Sur le portail basé sur RPM, créez une base de données Postgres. Vous migrerez ensuite la base de données du portail tar vers cette nouvelle base de données :
    1. Connectez-vous à psql :
      psql -h localhost -p 5432 -U apigee

      Saisissez votre mot de passe Postgres tel que défini par la propriété PG_PWD dans le fichier de configuration du portail.

    2. Créez une base de données Postgred :
      CREATE DATABASE newportaldb;
    3. Quittez psql :
      \q
  3. Sur le portail tar, supprimez les anciens modules qui ne sont plus utilisés :

    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. Sur le portail tar, installez et configurez le module 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. Connectez-vous au portail en tant qu'administrateur.
    6. Sélectionnez Modules dans le menu Drupal.
    7. Activez le module Outil de migration DBTNG.
    8. Enregistrez la configuration.
  5. Sur le portail tar, modifiez /var/www/html/sites/default/settings.php pour ajouter une deuxième configuration de base de données pointant vers la nouvelle base de données sur le portail basé sur RPM. La configuration actuelle de la base de données est nommée "default". Nommez votre nouvelle configuration "custom", comme indiqué dans l'exemple suivant :
    $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 et port spécifient l'adresse IP et le port du serveur Postgres. Postgres utilise le port 5432 pour les connexions.

  6. Sur le portail tar, installez le pilote Postgres :
    1. Utilisez Yum pour installer le pilote :
      yum install php-pdo_pgsql
    2. Modifiez /etc/php.ini pour ajouter la ligne suivante n'importe où dans le fichier :
      extension=pgsql.so
    3. Redémarrez Apache :
      service httpd restart
  7. Sur le portail tar, migrez la base de données du portail vers le portail basé sur RPM :
    1. Connectez-vous au portail en tant qu'administrateur.
    2. Sélectionnez Structure > Migrator (Structure > Migrateur) dans le menu Drupal.
    3. Choisissez votre base de données d'origine sur le portail tar, default, et la base de données de destination, custom, en fonction du fichier settings.php indiqué ci-dessus.
    4. Cliquez sur Transférer. La base de données tar est migrée vers la base de données RPM.
  8. Copiez le répertoire sites du serveur tar sur le serveur RPM. Les chemins d'accès présentés dans les étapes suivantes sont basés sur des chemins par défaut. Modifiez-les si nécessaire pour votre installation.
    1. Sur le portail tar, regroupez le répertoire /var/www/html/sites :
      cd /var/www/html/sites
      tar -cvzf /tmp/sites.tar.gz .
    2. Copiez /tmp/sites.tar.gz dans /opt/apigee/apigee-drupal/wwwroot/sites sur le serveur basé sur RPM.
    3. Dégrouper l'annuaire de sites sans écraser les fichiers importants
      1. Sauvegardez le fichier settings.php :
        sudo cp /opt/apigee/apigee-drupal/wwwroot/sites/default/settings.php
          /opt/apigee/apigee-drupal/wwwroot/sites/default/settings.bak.php
      2. Sauvegardez le répertoire files existant :
        sudo mv /opt/apigee/apigee-drupal/wwwroot/sites/default/files
          /opt/apigee/apigee-drupal/wwwroot/sites/default/files_old
      3. Sauvegardez le répertoire sites existant :
        tar -cvzf /tmp/sites_old.tar.gz /opt/apigee/apigee-drupal/wwwroot/sites
      4. Décompressez et décompressez le répertoire sites du serveur tar :
        gunzip /opt/apigee/apigee-drupal/wwwroot/sites/sites.tar.gz
        tar -xvf /opt/apigee/apigee-drupal/wwwroot/sites/sites.tar
      5. Assurez-vous que les fichiers copiés sont bien associés :
        chown -R apigee:apigee /opt/apigee/apigee-drupal/wwwroot/sites/
      6. Restaurez le fichier settings.php :
        sudo cp /opt/apigee/apigee-drupal/wwwroot/sites/default/settings.bak.php
          /opt/apigee/apigee-drupal/wwwroot/sites/default/settings.php
      7. Déplacer les fichiers privés vers un nouvel emplacement :
        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. Sur le portail tar, uniquement si vous avez remplacé le chemin d'accès par défaut de /var/www/html au répertoire racine Web sur le portail tar: exécutez drush status et examinez le chemin d'accès files et le chemin private files :
    cd /var/www/html
    drush status

    Si des fichiers ou des fichiers privés ne se trouvent pas dans le répertoire sites, copiez-les sur le serveur RPM, comme indiqué ci-dessus.

  10. Sur le portail basé sur RPM, mettez à jour /opt/apigee/apigee-drupal/wwwroot/sites/default/settings.php pour définir les propriétés de la base de données par défaut :
    vi /opt/apigee/apigee-drupal/wwwroot/sites/default/settings.php

    Définissez la description par défaut de la base de données dans le fichier settings.php :

    $databases = array (
      'default' =>
      array (
        'default' =>
        array (
          'database' => 'newportaldb',
          'username' => 'apigee',
          'password' => 'postgres',
          'host' => 'localhost', 'port' => '5432',
          'driver' => 'pgsql',
          'prefix' => '',
        )
      )
    );

    database spécifie la base de données que vous avez créée, username et password sont ceux définis pour la base de données personnalisée sur le portail tar, et prefix est vide.

  11. Sur le portail basé sur RPM, la version du portail basée sur RPM contient moins de modules Drupal que la version tar. Après avoir migré vers le portail basé sur RPM, vous devez rechercher tous les modules manquants et les installer si nécessaire.
    1. Installez le missing_module Drupal utilisé pour détecter les modules manquants :
      cd /opt/apigee/apigee-drupal/wwwroot
      drush dl missing_module
      drush en missing_module
    2. Connectez-vous au portail basé sur RPM en tant qu'administrateur.
    3. Sélectionnez Rapports > Rapports d'état dans le menu Drupal et recherchez les modules manquants.
    4. Utilisez ce rapport pour installer les modules manquants ou exécutez les commandes suivantes :
      cd /opt/apigee/apigee-drupal/wwwroot
      drush dl <moduleA> <moduleB> ...
      drush en <moduleA> <moduleB> ...
    5. Après avoir activé tous les modules, assurez-vous que les fichiers appartiennent à l'utilisateur Apigee :
      chown -LR apigee:apigee /opt/apigee/apigee-drupal/wwwroot

      Pour en savoir plus sur les autorisations de fichiers, consultez la page https://www.drupal.org/node/244924.

  12. Sur le portail basé sur RPM, exécutez update.php dans un navigateur pour supprimer les erreurs liées aux modules manquants :
    1. Connectez-vous au portail basé sur RPM en tant qu'administrateur.
    2. Dans le navigateur, accédez à l'URL suivante :
      http://portal_IP_or_DNS:8079/update.php

      portal_IP_or_DNS correspond à l'adresse IP ou au nom de domaine du portail basé sur RPM.

    3. Suivez les instructions à l'écran.
  13. Mettez à jour les entrées DNS pour qu'elles pointent vers votre nouveau portail basé sur RPM.

    Notez que la version du portail basée sur RPM utilise le port 8079 par défaut, tandis que la version basée sur TAR utilise le port 80. Veillez à utiliser le bon numéro de port dans votre entrée DNS. Consultez la section Définir le port HTTP utilisé par le portail pour en savoir plus sur l'utilisation d'un autre port.

La conversion est terminée.