AppSuite:Upgrade from 6.22 for CentOS6: Difference between revisions
Line 79: | Line 79: | ||
# yum install open-xchange-appsuite open-xchange-appsuite-backend open-xchange-appsuite-manifest | # yum install open-xchange-appsuite open-xchange-appsuite-backend open-xchange-appsuite-manifest | ||
It them remains to adjust apache's | It them remains to adjust apache's <code>ox.conf</code> as well as <code>proxy_ajp.conf</code>. | ||
Basically you need to merge the OX6 and Appsuite versions of those files. | Basically you need to merge the OX6 and Appsuite versions of those files. For the apache config file <code>/etc/httpd/conf.d/ox.conf</code>, replace the element <code><Directory /var/www/html> ... </Directory></code> with the following: | ||
<Directory /var/www/html> | |||
Options Indexes FollowSymLinks MultiViews | |||
AllowOverride None | |||
Order allow,deny | |||
allow from all | |||
RedirectMatch ^/$ /appsuite/ | |||
</Directory> | |||
<Directory /var/www/html/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 <code>/etc/httpd/conf.d/proxy_ajp.conf</code>, you need to add an element before the element <code><Proxy /ajax> ... </Proxy></code>: | For the <code>/etc/httpd/conf.d/proxy_ajp.conf</code>, you need to add an element before the element <code><Proxy /ajax> ... </Proxy></code>: | ||
# OX AppSuite frontend | |||
<Proxy /appsuite/api> | |||
ProxyPass balancer://oxcluster/ajax | |||
</Proxy> | |||
Full sample versions of those files are given in the following. | Full sample versions of those files are given in the following. | ||
# /etc/apache2/sites-available/default | |||
# /etc/apache2/sites-available/default | <VirtualHost *:80> | ||
<VirtualHost *:80> | ServerAdmin webmaster@localhost | ||
DocumentRoot /var/www/html | |||
<Directory /var/www/html> | |||
Options Indexes FollowSymLinks MultiViews | |||
AllowOverride None | |||
Order allow,deny | |||
allow from all | |||
RedirectMatch ^/$ /appsuite/ | |||
</Directory> | |||
<Directory /var/www/html/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 | # restrict access to the soap provisioning API | ||
Order Deny,Allow | Order Deny,Allow | ||
Line 217: | Line 218: | ||
# you might add more ip addresses / networks here | # you might add more ip addresses / networks here | ||
# Allow from 192.168 10 172.16 | # Allow from 192.168 10 172.16 | ||
</Location> | </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 | |||
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so | # BalancerMember ajp://oxhost2:8009 timeout=100 smax=0 ttl=60 retry=60 loadfactor=50 route=OX2 | ||
ProxySet stickysession=JSESSIONID | |||
<IfModule mod_proxy_ajp.c> | </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> | |||
</IfModule | |||
After this, stop and start the apache2 and open-xchange services. Then you should be able to use the Appsuite UI. You will again encounter a "Upgrading database, try again later" message on the first login attempt. Later login attempts should work. | After this, stop and start the apache2 and open-xchange services. Then you should be able to use the Appsuite UI. You will again encounter a "Upgrading database, try again later" message on the first login attempt. Later login attempts should work. |
Revision as of 10:36, 12 February 2013
Update of Open-Xchange Server v6.22 to OX App Suite 7.0 on CentOS 6.
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, please update to the latest release of v6.22 before attempting an update to OX Appsuite 7. See Open-Xchange 6.20 to 6.22 Update Guide for CentOS 6 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 CentOS 6
- If you have custom packages done by Open-Xchange, please discuss with your Open-Xchange contact when these packages are available for OX Appsuite 7. Do not attempt the update earlier.
- Custom packages built for 6.22.1 or earlier might not work with OX Appsuite 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
We start by adding some Appsuite repos to our yum repos. Edit the file /etc/yum.repos.d/ox.repo
:
# adjust this to some final repo location [appsuite-frontend] name=Appsuite-frontend baseurl=http://buildservice.oxoe.int/repos/frontend-release-7.0.1/RHEL6/ gpgkey=http://software.open-xchange.com/oxbuildkey.pub enabled=1 gpgcheck=1 metadata_expire=0m # adjust this to some final repo location [appsuite-backend] name=Appsuite-backend baseurl=http://buildservice.oxoe.int/repos/backend-release-7.0.1/RHEL6/ gpgkey=http://software.open-xchange.com/oxbuildkey.pub enabled=1 gpgcheck=1 metadata_expire=0m # if you have a valid maintenance subscription, please uncomment the # following and add the ldb account data to the urls so that the most recent # packages get installed # TODO: insert Update Repo Lines here
Verify the repos:
# yum repolist
It may be necessary to
# yum clean all
to make your new repos appear.
Updating repositories and update packages
Download and update all installed packages:
$ yum update
This will install new config files of some packages as .rpmnew
files. Check those files to identlfy files where you want to keep the existing version, put the new version in place, or merge them.
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
$ /etc/init.d/open-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 should still work with this new backend. You should verify this at this moment. Upon the first connection after the backend update, you will ge tthe message Error: updating database, try later
. The second try should succeed.
Add the Appsuite GUI
# yum 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 Appsuite versions of those files. For the apache config file /etc/httpd/conf.d/ox.conf
, replace the element <Directory /var/www/html> ... </Directory>
with the following:
<Directory /var/www/html> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all RedirectMatch ^/$ /appsuite/ </Directory> <Directory /var/www/html/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/httpd/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.
# /etc/apache2/sites-available/default <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html <Directory /var/www/html> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all RedirectMatch ^/$ /appsuite/ </Directory> <Directory /var/www/html/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 Appsuite UI. You will again encounter a "Upgrading database, try again later" message on the first login attempt. Later login attempts should work.
Remove the OX6 GUI
This step is optional. You may just skip it and offer both GUIs, the OX6 GUI and the Appsuite GUI.
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 Appsuite GUI packages start with open-xchange-appsuite
.
# yum remove open-xchange-gui*
Then adjust the /etc/httpd/conf.d/ox.conf
file to remove obsolete stuff which was required for the OX6 GUI, but is not required by the Appsuite GUI. To do so, you may consult the Installation Guide for OX Appsuite to learn which sections of the file are required for an Appsuite GUI.
The file /etc/apache2/conf.d/proxy_ajp.conf
will not require adjustments; the settings for Appsuite 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
.
Finally, there may be backup files created by the package manager during earlier updates. Loook for files with .rpmsave endings or similar in the /opt/open-xchange/etc
directory.