HowTos/Tomcat
Scalix Wiki -> How-Tos -> Tomcat Integration
Contents
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.