I thought you might be interested in the resolution to this. It turns out that we needed to reproduce the environment in tomcat.service
For some reason ExecStart=/etc/rc.d/init.d/tomcat7 doesn't work (file shown at the end of this message) Instead, in /etc/systemd/system/tomcat.service we have had to reproduce the environment in longhand to get it to work. It appears that systemd doesn't expand variables so I really need to investigate the systemd Environment thing a bit more. Anyway, when I shutdown -r now the server comes back up and tomcat is running at the unprivileged tomcat user on port 80 so that's a result ============== /etc/systemd/system/tomcat.service ============ [Unit] Description=Apache Tomcat Web Application Container After=network.target [Service] Type=forking User=root ExecStart=/opt/apache-tomcat-7.0.42/bin/jsvc \ -user tomcat \ -home /opt/jdk1.7.0_45 \ -Dcatalina.home=/opt/apache-tomcat-7.0.42 \ -Dcatalina.base=/opt/apache-tomcat-7.0.42 \ -Djava.io.tmpdir=/var/tmp \ -Djava.awt.headless=true \ -Xms512m \ -Xmx1024m \ -outfile /opt/apache-tomcat-7.0.42/logs/catalina.out \ -errfile /opt/apache-tomcat-7.0.42/logs/catalina.err \ -pidfile /var/run/tc7/jsvc.pid \ -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \ -Djava.util.logging.config.file=/opt/apache-tomcat-7.0.42/conf/logging.properties \ -cp /opt/apache-tomcat-7.0.42/bin/bootstrap.jar:/opt/apache-tomcat-7.0.42/bin/commons-daemon.jar:/opt/jdk1.7.0_45/lib/tools.jar:/opt/apache-tomcat-7.0.42/bin/tomcat-juli.jar \ org.apache.catalina.startup.Bootstrap ExecStop=/bin/kill -9 /var/run/tc7/jsvc.pid ExecStopPost=/bin/rm -f /var/tc7lock/subsys/tomcat /var/run/tc7/jsvc.pid [Install] WantedBy=multi-user.target Oh happy day Thanks again to all responders Lyallex ========= /etc/rc.d/init.d/tomcat7 ========= JAVA_HOME=/opt/jdk1.7.0_45 CATALINA_HOME=/opt/apache-tomcat-7.0.42 export JAVA_HOME CATALINA_HOME CLASSPATH=$CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/commons-daemon.jar:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/bin/tomcat-juli.jar TOMCAT_USER=tomcat TMPDIR=/var/tmp PIDFILE=/var/run/tc7/jsvc.pid RC=0 case "$1" in start) $CATALINA_HOME/bin/jsvc -user $TOMCAT_USER -home $JAVA_HOME -Dcatalina.home=/opt/apache-tomcat-7.0.42 -Dcatalina.base=$CATALINA_HOME -Djava.io.tmpdir=$TMPDIR -Djava.awt.headless=true \ -Xms512m \ -Xmx1024m \ -outfile $CATALINA_HOME/logs/catalina.out \ -errfile $CATALINA_HOME/logs/catalina.err \ -pidfile '/var/run/tc7/jsvc.pid' \ -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \ -Djava.util.logging.config.file=$CATALINA_HOME/conf/logging.properties \ -cp $CLASSPATH \ org.apache.catalina.startup.Bootstrap RC=$? [ $RC = 0 ] && touch /var/tc7lock/subsys/tomcat echo "starting tomcat7 on darkstar with:" echo "JAVA_HOME=$JAVA_HOME" echo "CATALINA_HOME=$CATALINA_HOME" echo "CLASSPATH=$CLASSPATH" echo "tomcat started" ;; stop) PID=`cat /var/run/tc7/jsvc.pid` kill $PID RC=$? [ $RC = 0 ] && rm -f /var/tc7lock/subsys/tomcat /var/run/tc7/jsvc.pid echo "stopping tomcat7 on darkstar with:" echo "JAVA_HOME=$JAVA_HOME" echo "CATALINA_HOME=$CATALINA_HOME" echo "CLASSPATH=$CLASSPATH" echo "tomcat stopped" ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit $RC --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org