HowTos/Tomcat

From Scalix Wiki
Revision as of 23:30, 1 May 2007 by Magellan94 (Talk | contribs) (Instructions for restarting an application by touching web.xml)

Jump to: navigation, search

Scalix Wiki -> How-Tos -> Tomcat Integration

Modifying Web Application Settings Without Restarting Tomcat

A Scalix web application such as SWA (/webmail) or the platform API (/api) must be restarted before changes to configuration settings will take effect. One way to restart a web application is to simply restart the scalix-tomcat service. However, sometimes it is inconvenient or disruptive to restart Tomcat when settings are changed. Luckily, you can restart an individual web application without restarting the Tomcat service by touching the application's web.xml file or by installing and using the Tomcat manager application.

Scalix web applications read configuration settings from files in your scalix folder. For example, the configuration file for SWA on a scalix server installed in /var/opt/scalix/sm is found at /var/opt/scalix/sm/webmail/swa.properties.

Touching web.xml to Restart an Application

First, you may wish to tail the tomcat log file so that you can observe deployment progress:

[root@scalixvm WEB-INF]# tail -f /var/opt/scalix/sm/tomcat/logs/catalina.out &

Tomcat will automatically redeploy a web application any time its web.xml deployment descriptor is modified. Simply touch the file and Tomcat will redeploy the application, reloading swa.properties.

[root@scalixvm WEB-INF]# touch /var/opt/scalix/sm/tomcat/webapps/webmail/WEB-INF/web.xml

After a moment, the tomcat log will show that SWA has been redeployed.

Config checkResources
INFO: Reloading context [/webmail]
shutting down Scalix Web Access
initializing Scalix Web Access
SWA:WARN - cannot locate log4j properties file at: /var/opt/scalix/sm/webmail/log4j.properties
SWA:reading configuration @ /var/opt/scalix/sm/webmail/swa.properties
done initializing Scalix Web Access

A similar procedure will redeploy the platform, sis, caa, mobile client, res, or sac.

[root@scalixvm WEB-INF]# touch /var/opt/scalix/sm/tomcat/webapps/api/WEB-INF/web.xml
[root@scalixvm WEB-INF]# touch /var/opt/scalix/sm/tomcat/webapps/sis/WEB-INF/web.xml
[root@scalixvm WEB-INF]# touch /var/opt/scalix/sm/tomcat/webapps/caa/WEB-INF/web.xml
[root@scalixvm WEB-INF]# touch /var/opt/scalix/sm/tomcat/webapps/m/WEB-INF/web.xml
[root@scalixvm WEB-INF]# touch /var/opt/scalix/sm/tomcat/webapps/res/WEB-INF/web.xml
[root@scalixvm WEB-INF]# touch /var/opt/scalix/sm/tomcat/webapps/sac/WEB-INF/web.xml

Using the Tomcat Manager to Restart an Application

Running Tomcat as a non-root user

For security reasons, it is preferrable to run Tomcat as a non-root user. In fact, most tomcat packages that come with OS distributions do it this way.

For Scalix this poses a few problems because the RES web application (which is part of the Scalix Admin Console system) needs to execute Scalix admin commands ("om-commands"), some of which must be executed with superuser/root privileges.

Scalix 10.0.0 and later therefore allow the use of sudo to limit root access to the commands in question.

Follow these steps:

1. On each machine running RES, install the sudo package that comes with your Linux distribution of choice.

2. Setup a /etc/sudoers file that has the following line (Note: This must be on a single line in the file):

<user> <hostname> = NOPASSWD : /opt/scalix/bin/*, /opt/scalix/diag/* , /bin/rpm, /usr/bin/dpkg, /bin/tail, /bin/df

where <user> is the name of the Unix user under which tomcat runs and <hostname> is your Scalix server hostname.

3. Add the following parameter to /etc/opt/scalix/res/config/res.properties:

res.sudo.command.mode=true

Note: As of Scalix 10.0.1, the sample entry in the config file is wrong; this reads res.commands.sudo.mode=true and is incorrect. The correct entry is as per above.

4. Restart Tomcat

All access to Scalix commands will be logged by sudo through syslog.