IBM Support

Migrating IBM HTTP Server 8.5 configurations to 9.0 in place

How To


Summary

Detailed steps for migrating an existing IBM HTTP Server 8.5 (Apache 2.2) configuration file to support IBM HTTP Server 9.0 (Apache 2.4). The procedure uses the same installation directories and web server definitions to reduce the effort required.

Objective

While the best long-term option for migrating from IHS 8.5 to IHS 9.0 is to deploy new webservers based on the 9.0 default configuration with customizations appended to it, this can be a challenging task, especially if the 8.5 configuration is not closely based on the 8.5 default configuration.
The procedure that follows helps simplify the port using an existing installation directory and updating an 8.5.5 configuration.  Using the existing installation directory eliminates the need for changing web server definitions in WebSphere Application Server, identifying more configuration files, or updating paths in IHS configuration files.

Environment

The steps provided use UNIX conventions and assumes IBM HTTP Server (IHS) 8.5 is installed in /opt/IHS and the WebSphere WebServer plug-in in /opt/Plugins
For installation steps, in place of the URL https://www.ibm.com/software/repositorymanager/V9WASSupplements, two local paths can be provided with a comma separator:
  1. A downloadable fix pack for the WebSphere supplements, such as 9.0.5-WS-IHSPLG-FP011.zip
  2. A downloadable fix pack for "IBM SDK Java Technology Edition Version 8.0 for WebSphere Application Server V9 and WebSphere Liberty using Installation Manager" from such as 8.0.7.6-JavaSE-SDK-linux-x64-repo.zip   
     

Steps

  1. Stop IHS
  2. Backup your IHS installation directory
  3. Use IBM Installation Manager to uninstall IHS 8.5
    /opt/IBM/InstallationManager/eclipse/tools/imcl uninstall com.ibm.websphere.IHS.v85 -id /opt/IHS
  4. Create an archive of the added and customized files left after uninstallation: 
     
    tar -C /opt  --exclude java --exclude logs \
       --exclude conf/postinst.properties  --exclude properties \
       -cvf /opt/IHSmigrate.tar IHS
    Windows: Windows 2019 and later includes tar. For earlier Windows releases, zip the installation root but omit the paths listed with --exclude in the example.
  5. Remove the original IHS installation directory: 
    rm -rf /opt/IHS
    Windows: RD /S "\Program Files\IBM\IHS"
  6. Install IHS 9.0 to the same directory:
     
    /opt/IBM/InstallationManager/eclipse/tools/imcl \
        install com.ibm.websphere.IHS.v90 com.ibm.java.jdk.v8 \
        -repositories https://www.ibm.com/software/repositorymanager/V9WASSupplements   \
        -id /opt/IHS -showProgress -prompt -acceptLicense
    In place of the URL argument to the -repositories flag (https://www.ibm.com/software/repositorymanager/V9WASSupplements), two local paths can be provided with a comma separator:
    1. A downloadable fix pack for the WebSphere supplements, such as 9.0.5-WS-IHSPLG-FP011.zip
    2. A downloadable fix pack for "IBM SDK Java Technology Edition Version 8.0 for WebSphere Application Server V9 and WebSphere Liberty using Installation Manager" from such as 8.0.7.6-JavaSE-SDK-linux-x64-repo.zip   
  7. Unpack the archive created in step 4 to restore added and changed configuration files:
    tar -C /opt/ -xvf /opt/IHSmigrate.tar
  8. At this stage, the overlayed config is not yet expected to work with IHS 9.0.  Append the following snippet to the bottom of conf/httpd.conf and conf/admin.conf (if used)
     
    # Snippet to aid in migration from an IHS 8.5.5 configuration to IHS 9.0 
    # The goal is to minimize the number of small in-line changes needed to update an 855 config.
    # Version 1.0.1
    
    <IfFile modules/mod_unixd.so>
      LoadModule unixd_module modules/mod_unixd.so
    </IfFile>
    
    <IfFile modules/mod_mpm_event.so>
      LoadModule mpm_event_module modules/mod_mpm_event.so
    </IfFile>
    
    # Delete this after purging Order, Deny, and Allow from the configuration
    LoadModule access_compat_module modules/mod_access_compat.so
    
    <IfModule !authn_core_module>
      LoadModule authn_core_module modules/mod_authn_core.so
    </IfModule>
    
    <IfModule !authnz_core_module>
      LoadModule authz_core_module modules/mod_authz_core.so
    </IfModule>
    
    <Files ~ "^\.ht">
       Require all denied
       Forbid
    </Files>
    
    <IfModule mod_access_compat.c>
      <Directory />
         Order allow,deny 
         deny from all
      </Directory>
     </IfModule>
    
    <IfModule !mod_access_compat.c>
      <Directory />
         require all denied
      </Directory>
    </IfModule>
    
    # Update some older defaults
    ServerSignature OFF
    LogFormat "%h %l %u %t \"%r\" %>s %b %D \"%{WAS}e\" %X" common
    <IfModule mod_mpmstat.c>
      TrackHooksOptions notice
    </IfModule>
  9. Linux only:

    Remove the <IfModule worker.c> and the </IfModule> that follows it, leaving the contained directives. On Linux, IHS uses the "event" MPM and this stanza hides the MPM configuration and triggers a warning.

    Locate the existing  ServerLimit directive and double the value.  Nearby values  do not have to be adjusted and doubling the value should have no negative effects.  In 9.0, IHS uses the additional space above what would be needed (ThreadsPerChild  / MaxClients) to hold information about processes that are exiting.  
  10. IHS 9.0.5.12 and earlier only:   

    Remove the line 'LoadModule authz_default_module modules/mod_authz_default.so' from conf/httpd.conf and conf/admin.conf.  9.0.5.13 and later silently handles this IHS 8.5.5 specific entry.
  11. If the configuration contains "htpasswd" based authentication, add "AuthBasicProvider file" to each configuration stanza with "AuthUserFile"
  12. Run a configuration test:
    /opt/IHS/bin/apachectl -t 

    If an error is reported, review the directive name in the list here and load the missing module: https://publib.boulder.ibm.com/httpserv/manual24/mod/directives.html
    If the error refers to missing symbols such as "ap_my_generation" or "ap_log_error" or referring to "expected signature 41503234 but saw 41503232 ", it is likely a path to a third-party module needs to be updated to compile against Apache 2.4.

    Windows: Use bin\httpd.exe -t
     
  13. If the IHS admin server is used, repeat the preceding step with an additional argument of:  "-f conf/admin.conf"
    /opt/IHS/bin/apachectl -t -f conf/admin.conf
    Windows: Use bin\httpd.exe -t -f conf\admin.conf
     
  14.  Replace deprecated access control (optional but recommended)

    Using a mix of `Require` and the deprecated "Order", "Allow", and "Deny" can have unexpected effects.  It is recommended to purge the configuration of the latter directives and comment out the LoadModule for mod_access_compat.  For more information, refer to https://publib.boulder.ibm.com/httpserv/manual24/upgrading.html#access
  15. After the deprecated directives have been removed, add a "#" character to comment out "LoadModule access_compat_module modules/mod_access_compat.so" and re-test the configuration (apachectl -t) to catch any missed directives or typographical errors.
  16. Once the config test runs successfully, start the server and test any paths that were updated
  17. Migrate the WebSphere WebServer plug-in installation from 8.5 to 9.0
    1. Backup the contents of the WebSphere WebServer plug-in installation root
    2. Create an archive of the config directory:
      tar -C  /opt --exclude actionRegistry -cvf /opt/PLGmigrate.tar Plugins/config
    3. Uninstall the 8.5 WebSphere WebServer plug-in
      /opt/IBM/InstallationManager/eclipse/tools/imcl uninstall com.ibm.websphere.PLG.v85 -id /opt/Plugins
    4. Remove the 8.5 WebSphere WebServer plug-in installation directory
      rm -rf /opt/Plugins
    5. Install the 9.0 WebSphere WebServer Plugin to the same installation directory
      /opt/IBM/InstallationManager/eclipse/tools/imcl \
          install com.ibm.websphere.PLG.v90 com.ibm.java.jdk.v8 \
          -repositories https://www.ibm.com/software/repositorymanager/V9WASSupplements   \
          -id /opt/Plugins -showProgress -prompt -acceptLicense
    6. Restore the config directory from the archive
      tar -C /opt/ -xvf /opt/PLGmigrate.tar

Document Location

Worldwide

[{"Type":"MASTER","Line of Business":{"code":"LOB45","label":"Automation"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSEQTJ","label":"IBM HTTP Server"},"ARM Category":[{"code":"a8m3p000000F7xiAAC","label":"IBM HTTP Server\/WebSphere Plugin-All Platforms"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]

Document Information

Modified date:
27 June 2022

UID

ibm16590897