Edge for Private Cloud v. 4.17.09
The 4.17.09 release of the Developer Services portal does not let you update a previous tar-based version of the portal. You can only directly update an RPM-based version of the portal to 4.17.09.
However, you can convert a tar-based version of the portal to an 4.17.09 RPM-based instance of the portal. As part of this process, you migrate the MySQL/MariaDB of the existing portal to a Postgres database. Once converted, your portal remains as an RPM-based portal.
You can migrate many previous versions of the tar-based portal to an RPM-based portal, including versions 4.16.09 and 4.17.01, not just version 4.17.05. The only requirements is that the portal is running Drupal 7 or later. To check your version of Drupal, select Reports > Status Reports in the Drupal menu. The version of Drupal appears in the first row of the output.
The high-level steps that you use to migrate from a tar-based portal to an RPM-based portal are:
- Install the RPM-based 4.17.09 version of the Developer Service portal on a new node.
- Create a new Postgres database on the RPM-based portal.
- Migrate the portal database from the tar-based portal.
- Copy all accessory file from the tar-based portal to the RPM-based portal.
- Update DNS entries to point to the new RPM-based portal.
 
 Note that the RPM-based version of the portal uses port 8079 by default, while the tar-based version uses port 80. Make sure you use the correct port number in your DNS entry. See Set the HTTP port used by the portal for information on using a different port.
New default installation directory after conversion
After updating an installation that now uses Nginx/Postgres, the root directory changed from:
/opt/apigee/apigee-drupal
to:
/opt/apigee/apigee-drupal/wwwroot
Portal conversion procedure
To convert the portal to an RPM-based installation:
- Install the RPM-based 4.17.09 version of the Developer Service portal on a different node from your tar-based portal.
- 
      On the RPM-based portal, create a new Postgres database. Later, you migrate
      the database from the tar-based portal to this new database:
      - Log in to psql:
 >psql -h localhost -p 5432 -U apigee
 
 Enter your Postgres password as defined by the PG_PWD property in the portal config file.
- Create a new Postgred database:
 # CREATE DATABASE newportaldb;
- Exit psql:
 # \q
 
- Log in to psql:
- 
      On the tar-based portal, remove old modules that are no longer used: 
 > 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';"
- 
      On the tar-based portal, Install and configure the Migrator Drupal module: - cd /tmp
- wget https://ftp.drupal.org/files/projects/dbtng_migrator-7.x-1.4.tar.gz
- gunzip /tmp/dbtng_migrator-7.x-1.4.tar.gz
- tar -xvf /tmp/dbtng_migrator-7.x-1.4.tar --directory /var/www/html/sites/all/modules
- Login to the portal as an admin.
- Select Modules in the Drupal menu.
- Enable the DBTNG Migrator module.
- Save the configuration.
 
- On the tar-based portal, edit /var/www/html/sites/default/settings.php to
    add a second database configuration pointing to the newly created database on the RPM-based
    portal. The current database configuration is named default. Name your new configuration
    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' => '', ) ) );
 where host and port specify the IP address and port of the Postgres server. Postgres uses port 5432 for connections.
- 
      On the tar-based portal, install the Postgres driver:
      - Use Yum to install the driver:
 > yum install php-pdo_pgsql
- Edit /etc/php.ini to
        add the following line anywhere in the file:
 extension=pgsql.so
- Restart Apache:
 > service httpd restart
 
- Use Yum to install the driver:
- 
      On the tar-based portal, migrate the portal database to the RPM-based
      portal:
      - Log in to the portal as an admin.
- Select Structure->Migrator in the Drupal menu.
- Choose your origin database on the tar-based portal, default, and the destination database, custom, based on settings.php file shown above.
- Click Migrate. The tar-based database is migrated to the RPM-based database.
 
- Copy the sites directory
    from tar-based server to the RPM-based server.
 The paths shown in the following steps are based on default paths. Modify them as necessary for your installation.- On the tar-based portal, bundle the /var/www/html/sites directory:
 > cd /var/www/html/sites
 > tar -cvzf /tmp/sites.tar.gz .
- Copy /tmp/sites.tar.gz to /opt/apigee/apigee-drupal/wwwroot/sites on the RPM-based server.
- Unbundle sites directory, but do not overwrite important files.
          - Backup the settings.php file:
 > sudo cp /opt/apigee/apigee-drupal/wwwroot/sites/default/settings.php /opt/apigee/apigee-drupal/wwwroot/sites/default/settings.bak.php
- Backup existing files directory:
 > sudo mv /opt/apigee/apigee-drupal/wwwroot/sites/default/files /opt/apigee/apigee-drupal/wwwroot/sites/default/files_old
- Backup the existing sites directory:
 > tar -cvzf /tmp/sites_old.tar.gz /opt/apigee/apigee-drupal/wwwroot/sites
- Unzip and untar the sites directory from the tar-based
            server:
 > gunzip /opt/apigee/apigee-drupal/wwwroot/sites/sites.tar.gz
 
 > tar -xvf /opt/apigee/apigee-drupal/wwwroot/sites/sites.tar
- Make sure copied files have proper ownership:
 > chown -R apigee:apigee /opt/apigee/apigee-drupal/wwwroot/sites/
- Restore settings.php file:
 > sudo cp /opt/apigee/apigee-drupal/wwwroot/sites/default/settings.bak.php /opt/apigee/apigee-drupal/wwwroot/sites/default/settings.php
- 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
 
- Backup the settings.php file:
 
- On the tar-based portal, bundle the /var/www/html/sites directory:
- On the tar-based portal, only if you changed the path to the web root
    directory on the tar-based portal from the default path of /var/www/html: run drush status and look at files path and private files path:
 > cd /var/www/html
 > drush status
 
 If files/private files are not under the sites directory, copy them to the RPM-based server as shown above.
- On the RPM-based portal, update /opt/apigee/apigee-drupal/wwwroot/sites/default/settings.php
    to set the properties of the default database:
 > vi /opt/apigee/apigee-drupal/wwwroot/sites/default/settings.php
 
 Set the default database description in settings.php:
 $databases = array ( 'default' => array ( 'default' => array ( 'database' => 'newportaldb', 'username' => 'apigee', 'password' => 'postgres', 'host' => 'localhost', 'port' => '5432', 'driver' => 'pgsql', 'prefix' => '', ) ) );
 where database specifies the new database you created, username and password are as defined for the custom database on the tar-based portal, and prefix is empty.
- 
      On the RPM-based portal, the RPM-based version of the portal contains fewer
      Drupal modules than the tar-based version. After you migrate to the RPM-based portal, you
      must check for any missing modules and install them as necessary.
      - Install the Drupal missing_module used to detect missing
        modules:  
 > cd /opt/apigee/apigee-drupal/wwwroot
 > drush dl missing_module
 > drush en missing_module
- Login to the RPM-based portal as an admin.
- Select Reports > Status reports in the Drupal menu and check for any missing modules.
- Use that report to install any missing modules, or use the following commands:
 > cd /opt/apigee/apigee-drupal/wwwroot
 > drush dl <moduleA> <moduleB> ...
 > drush en <moduleA> <moduleB> ...
- After you enable all the modules, make sure the files are owned by the apigee
        user: 
 > chown -LR apigee:apigee /opt/apigee/apigee-drupal/wwwroot
 
 For more on file permissions, see https://www.drupal.org/node/244924.
 
- Install the Drupal missing_module used to detect missing
        modules:  
- 
      On the RPM-based portal, run update.php in a browser to remove any errors on
      missing modules:
      - Login to the RPM-based portal as an admin.
- In the browser, navigate to the following URL:
 http://{portal_IP_or_DNS}:8079/update.php
 
 where portal_IP_or_DNS is the IP address or domain name of the RPM-based portal.
- Follow the screen prompts.
 
- Update DNS entries to point to your new RPM-based portal.
 
 Note that the RPM-based version of the portal uses port 8079 by default, while the tar-based version uses port 80. Make sure you use the correct port number in your DNS entry. See Set the HTTP port used by the portal for information on using a different port.
The conversion is complete.