AppSuite:Upgrade from 6.22 for SLES11

From Open-Xchange
Revision as of 12:25, 15 February 2013 by WolfgangRosenauer (talk | contribs)

Update of Open-Xchange Server v6.22 to OX App Suite 7.0 on SLES 11.

This example describes updating an OX 6 Server installation to OX App Suite 7.

Supported update path

Updates from an OX6 installation to App Suite are only possible from 6.22 to 7.0. If you have an earlier version of Open-Xchange Server 6 installed, you have toupdate to the latest release of v6.22 before attempting an update to OX App Suite 7. See Open-Xchange 6.20 to 6.22 Update Guide for SLES 11 for instructions regarding that update.

Requirements

  • An Open-Xchange Server installation v6.22.0 or later. This update guide is valid for a system installed through our Download and Installation Guide for SLES 11
  • If you have custom packages done by Open-Xchange, please discuss with your Open-Xchange contact when these packages are available for OX App Suite 7. Do not attempt the update earlier.
  • Custom packages built for 6.22.1 or earlier might not work with OX App Suite 7.0.
  • As for every update we strongly recommend that you make a backup of your system(s) before you proceed.

Update Open-Xchange Repositories

First, you need to add the current repositories to your zypper configuration to access the App Suite packages.

To do so, start with listing your existing repositories.

$ zypper lr

Then, remove your configured Open-Xchange repositories. Assuming they are called ox and ox-updates, the commands would be:

$ zypper rr ox
$ zypper rr ox-updates

In case you are using optional components as Outlook and Business Mobility also remove the repositories for them.

Finally, add the new Open-Xchange repositories for SLES11:

$ zypper ar http://software.open-xchange.com/products/appsuite/stable/appsuiteui/SLES11/ appsuite-frontend 
$ zypper ar http://software.open-xchange.com/products/appsuite/stable/backend/SLES11/ ox-backend

Optionally

$ zypper ar http://software.open-xchange.com/products/appsuite/stable/usm/SLES11/ ox-usm
$ zypper ar http://software.open-xchange.com/products/appsuite/stable/updater/SLES11/ ox-windows
$ zypper ar http://software.open-xchange.com/products/appsuite/stable/mobilityconnector/SLES11/ ox-eas


Updating repositories and update packages

Reload the package index:

$ zypper ref

Download and update all installed Open-Xchange packages:

$ zypper dup -r ox-backend -r appsuite-frontend

or (if in use)

$ zypper dup -r ox-backend -r appsuite-frontend -r ox-usm -r ox-windows -r ox-eas

One configuration setting is to be made manually:

# vi /opt/open-xchange/etc/cluster.properties
com.openexchange.cluster.name=oxcluster

Restart Open-Xchange

To restart Open-Xchange Server after the update, run

$ rcopen-xchange restart

You might want to check with

$ ps aux | grep open-xchange

that there is exactly one newly spawned process running Open-Xchange Server.

Now the backend has been upgraded to 7.0.x. The v6.22 frontend might still work with this new backend but is *NOT*' supported up to version 6.22.1. The next version 6.22.2 is planned to be fully compatible with the 7.0.2 backend. Upon the first connection after the backend update, you will ge the message Error: updating database, try later. The second try should succeed.

Add the App Suite UI

# zypper install open-xchange-appsuite open-xchange-appsuite-backend open-xchange-appsuite-manifest

It them remains to adjust Apache's ox.conf as well as proxy_ajp.conf.

Basically you need to merge the OX6 and App Suite versions of those files. For the Apache config file /etc/apache2/vhosts.d/ox.conf, replace the element <Directory /srv/www/htdocs> ... </Directory> with the following:

       <Directory /srv/www/htdocs>
               Options Indexes FollowSymLinks MultiViews
               AllowOverride None
               Order allow,deny
               allow from all
               RedirectMatch ^/$ /appsuite/
       </Directory>
 
       <Directory /srv/www/htdocs/appsuite>
               Options None +SymLinksIfOwnerMatch
               AllowOverride Indexes FileInfo
       </Directory>

       ErrorLog ${APACHE_LOG_DIR}/error.log

       # Possible values include: debug, info, notice, warn, error, crit,
       # alert, emerg.
       LogLevel warn

       CustomLog ${APACHE_LOG_DIR}/access.log combined

For the /etc/apache2/conf.d/proxy_ajp.conf, you need to add an element before the element <Proxy /ajax> ... </Proxy>:

   # OX AppSuite frontend
   <Proxy /appsuite/api>
       ProxyPass balancer://oxcluster/ajax
   </Proxy>

Full sample versions of those files are given in the following.

<VirtualHost *:80>
	ServerAdmin webmaster@localhost

	DocumentRoot /srv/www/htdocs

       <Directory /srv/www/htdocs>
               Options Indexes FollowSymLinks MultiViews
               AllowOverride None
               Order allow,deny
               allow from all
               RedirectMatch ^/$ /appsuite/
       </Directory>
 
       <Directory /srv/www/htdocs/appsuite>
               Options None +SymLinksIfOwnerMatch
               AllowOverride Indexes FileInfo
       </Directory>

       ErrorLog ${APACHE_LOG_DIR}/error.log

       # Possible values include: debug, info, notice, warn, error, crit,
       # alert, emerg.
       LogLevel warn

       CustomLog ${APACHE_LOG_DIR}/access.log combined

       # deflate
      AddOutputFilterByType DEFLATE text/html text/plain text/javascript application/javascript text/css text/xml application/xml text/x-js application/x-javascript

	# pre-compressed files
	AddType text/javascript .jsz
	AddType text/css .cssz
	AddType text/xml .xmlz
        AddType text/plain .po
	
	AddEncoding gzip .jsz .cssz .xmlz
	SetEnvIf Request_URI "\.(jsz|cssz|xmlz)$" no-gzip
	
	ExpiresActive On
	
	<Location /ox6>
	        # Expires (via ExpiresByType to override global settings)
	        ExpiresByType image/gif "access plus 6 months"
	        ExpiresByType image/png "access plus 6 months"
	        ExpiresByType image/jpg "access plus 6 months"
	        ExpiresByType image/jpeg "access plus 6 months"
	        ExpiresByType text/css "access plus 6 months"
	        ExpiresByType text/html "access plus 6 months"
	        ExpiresByType text/xml "access plus 6 months"
	        ExpiresByType text/javascript "access plus 6 months"
	        ExpiresByType text/x-js "access plus 6 months"
	        ExpiresByType application/x-javascript "access plus 6 months"
	        ExpiresDefault "access plus 6 months"
	        Header append Cache-Control "private"
	        Header unset Last-Modified
	        Header unset Vary
	        # Strip version
	        RewriteEngine On
	        RewriteRule v=\w+/(.+) $1 [L]
	        # Turn off ETag
	        Header unset ETag
	        FileETag None
	</Location>
	
	<Location /ox6/ox.html>
	        ExpiresByType text/html "now"
	        ExpiresDefault "now"
	        Header unset Last-Modified
	        Header set Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"
	        # Turn off ETag
	        Header unset ETag
	        FileETag None
	</Location>
	
	<Location /ox6/index.html>
	        ExpiresByType text/html "now"
	        ExpiresDefault "now"
	        Header unset Last-Modified
	        Header set Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"
	        # Turn off ETag
	        Header unset ETag
	        FileETag None
	</Location>
</VirtualHost>
# /etc/apache2/conf.d/proxy_ajp.conf
# Please note that the servlet path to the soap API has changed:
 <Location /webservices>
     # restrict access to the soap provisioning API
     Order Deny,Allow
     Deny from all
     Allow from 127.0.0.1
     # you might add more ip addresses / networks here
     # Allow from 192.168 10 172.16
 </Location>
 # the old path is kept for compatibility reasons

<Location /servlet/axis2/services>
    # restrict access to the soap provisioning API
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
    # you might add more ip addresses / networks here
    # Allow from 192.168 10 172.16
</Location> 
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

<IfModule mod_proxy_ajp.c>
   ProxyRequests Off
   <Proxy balancer://oxcluster>
       Order deny,allow
       Allow from all
       # multiple server setups need to have the hostname inserted instead localhost
       BalancerMember ajp://localhost:8009 timeout=100 smax=0 ttl=60 retry=60 loadfactor=50 route=OX1
       # Enable and maybe add additional hosts running OX here
       # BalancerMember ajp://oxhost2:8009 timeout=100  smax=0 ttl=60 retry=60 loadfactor=50 route=OX2
       ProxySet stickysession=JSESSIONID
   </Proxy>

   # OX AppSuite frontend
   <Proxy /appsuite/api>
       ProxyPass balancer://oxcluster/ajax
   </Proxy>

   <Proxy /ajax>
       ProxyPass balancer://oxcluster/ajax
   </Proxy>
   <Proxy /servlet>
       ProxyPass balancer://oxcluster/servlet
   </Proxy>
   <Proxy /infostore>
       ProxyPass balancer://oxcluster/infostore
   </Proxy>
   <Proxy /publications>
       ProxyPass balancer://oxcluster/publications
   </Proxy>
   <Proxy /Microsoft-Server-ActiveSync>
       ProxyPass balancer://oxcluster/Microsoft-Server-ActiveSync
   </Proxy>
   <Proxy /usm-json>
       ProxyPass balancer://oxcluster/usm-json
   </Proxy>
   <Proxy /webservices>
       ProxyPass balancer://oxcluster/webservices
   </Proxy>
</IfModule>

After this, stop and start the apache2 and open-xchange services. Then you should be able to use the App Suite UI.

Remove the OX6 GUI

This step is optional. You may just skip it and offer both GUIs, the OX6 GUI and the App Suite UI. This will only be supported after the 6.22.2 release!

If you want to uninstall the OX6 GUI, this step consists of removing the OX6 GUI packages and and adjusting Apache's configuration.

The packages to be removed can be identified by their version number in the output of rpm -qa | grep open-x. It will probably boil down to uninstall everything which starts with open-xchange-gui, as the names of the App Suite UI packages start with open-xchange-appsuite.

# zypper remove open-xchange-gui*

Then adjust the /etc/apache2/conf.d/ox.conf file to remove obsolete stuff which was required for the OX6 GUI, but is not required by the App Suite. To do so, you may consult the Installation Guide for OX App Suite to learn which sections of the file are required for an App Suite UI.

The file /etc/apache2/conf.d/proxy_ajp.conf will not require adjustments; the settings for App Suite are a superset of the settings of the OX6 GUI.

Leftover configuration files and runtime data

After the update you may see leftover configuration files and runtime data below /opt/open-xchange/etc It is safe to remove all files ending in .rpmsave or .rpmnew once you are confident that your configuration is working after the update.