Or remove the Type=Forking and just execute catalina.sh run, as I had suggested days ago. Then you can drop the ExecStop too.
On Fri, Mar 18, 2016 at 7:35 PM, Daniel Savard <daniel.sav...@gmail.com> wrote: > I believe all distros have over engineered the scripts to start > Tomcat. Forget all the scripts from your distro, learn the > signification of the environment variables from the catalina.sh script > shipped with the default Tomcat version. Define your variables in a > file, this file is not a script, so you cannot reuse a previously > defined variable, feed your systemd service definition file with this > file in the service section as EnvironmentFile=/path/name/to/your/file > ExecStart=/path/to/catalina.sh start > ExecStop=/path/to/catalina.sh stop > > and you are done. You control everything from the environment file, > you can easily manage the environment variables without editing the > systemd's service file. > > It is much simpler than the OpenRC set of scripts at my humble > opinion. I am running Gentoo at home and RHEL at work and both distros > wrapped Tomcat into too many layers of scripts in order to make it > working with OpenRC while none of these are required to run and manage > Tomcat with systemd. > > In particular with Gentoo, I no longer use the Tomcat distro packaged > with Gentoo because they separated the servlet api from Tomcat and you > need to wrap things into layers of scripts to define the classpath > properly taking this into account, the vanilla classpath.sh file > distributed with Tomcat doesn't work and so one. Really, they did a > very bad job at integrating Tomcat. > > Here is my service file: > > [Unit] > Description=Tomcat 8 (Dev) > After=syslog.target > After=network.target > > [Service] > EnvironmentFile=/tomcat/tomcat-8-dev/bin/tomcat-8-dev.env > Type=forking > User=tomcat > Group=tomcat > ExecStart=/opt/apache-tomcat/apache-tomcat-8.0.32_ds/bin/catalina.sh start > ExecStop=/opt/apache-tomcat/apache-tomcat-8.0.32_ds/bin/catalina.sh stop > > [Install] > WantedBy=multi-user.target > > > And here is the content of my EnvironmentFile: > > CATALINA_HOME="/opt/apache-tomcat/apache-tomcat-8.0.32_ds" > CATALINA_BASE="/tomcat/tomcat-8-dev" > CATALINA_OUT="/var/log/tomcat-8-dev/catalina.out" > JAVA_HOME="/opt/oracle-jdk-bin-1.8.0.74" > CATALINA_PID="/var/run/tomcat-8-dev.pid" > > > ----------------- > Daniel Savard > > > 2016-03-18 13:31 GMT-04:00 Lyallex <lyal...@gmail.com>: >> 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 >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org