Last active
August 14, 2022 17:26
-
-
Save zengxs/a697d786b244d7b857d3d006213306a1 to your computer and use it in GitHub Desktop.
tomcat systemd service script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Systemd unit file for tomcat | |
[Unit] | |
Description=Apache Tomcat Web Application Container | |
After=syslog.target network.target | |
[Service] | |
Type=forking | |
Environment=JAVA_HOME=/usr/lib/jvm/jre | |
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid | |
Environment=CATALINA_HOME=/opt/tomcat | |
Environment=CATALINE_BASE=/opt/tomcat | |
Environment='CATALINE_OPTS=-Xms128M -Xmx765M -server -XX:+UseParallelGC' | |
Environment='JAVA_OPTS=-Djava.awt.haedless=true -Djava.security.egd=file:/dev/./urandom' | |
ExecStart=/opt/tomcat/bin/startup.sh | |
ExecStop=/bin/kill -15 $MAINPID | |
User=tomcat | |
Group=tomcat | |
[Install] | |
WantedBy=multi-user.target |
I had to use the following, because startup.sh returns immediately and systemd.calls shutdown.sh.
@oers Do you know why this happens?
I faced the same problem - and this workaround works, I am just trying to figure out why.
You might find this interesting
https://jdebp.eu/FGA/systemd-house-of-horror/tomcat.html
Only way to make tomcat 9.0.14 work with systemd units on Centos 7.6 was with oers example.
Here is what I use (with custom OPTS):
[Unit]
Description=Tomcat
After=network.target
[Service]
User=tomcat
WorkingDirectory=/opt/tomcat
Environment=JRE_HOME=/usr/lib/jvm/jre
Environment=JAVA_HOME=/usr/lib/jvm/jre
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINE_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Dfile.encoding=ISO-8859-1'
Environment='JAVA_OPTS=-server -Xms512M -Xmx1G -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -XX:+UseConcMarkSweepGC -Djava.net.preferIPv4Stack=true -Dsun.net.inetaddr.ttl=0'
ExecStart=/opt/tomcat/bin/catalina.sh run
ExecStop=/opt/tomcat/bin/shutdown.sh
SyslogIdentifier=tomcat-%i
[Install]
WantedBy=multi-user.target
Type=forking
-> catalina.sh start
or startup.sh
Type=simple
(default?) -> catalina.sh run
@mr-rycho In the Type=simple model, the process spawned by systemd is the dæmon
catalinE ?! CATALINUS is much better )
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I had to use
ExecStart=/opt/tomcat/bin/catalina.sh start
.Under
upstart
I had always used/opt/tomcat/bin/catalina.sh run
. When I switched over tosystemd
I found that using this command made it so that systemd didn't properly start my service. The commandsystemctl start tomcat
would not return back to the shell. Tomcat would start up fine but the service wasn't happy and would eventually timeout taking tomcat down with it. Using/opt/tomcat/bin/startup.sh
worked but my set environment variables were ignored. I found that using/opt/tomcat/bin/catalina.sh start
solved both of those problems.