Tomcat configuration systemctl (service) management service and shell script file management

Make sure there are java environment and tomcat environment

1. Configure service mode management

(1) Configure /etc/profile

The path uses the directory path of your jdk and tomcat

(2) Configure the service file tomcat.service

Configure according to your actual directory, the configuration of JAVA_HOME= and CATALINA_HOME= is consistent with the above /etc/profile

Here is the configured tomcat user to start (it can be changed to an existing user, permission issues need to be considered), then it is also necessary to change the owner and group of all files related to tomcat to tomcat

(3) Overload configuration, test tomcat service

2. Manage by shell script

(1) Write shell scripts

(2) Run the test

Make sure there is java environment and tomcat environment

[root@localhost java]# java -version
java version "1.8.0_371"
Java(TM) SE Runtime Environment (build 1.8.0_371-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.371-b11, mixed mode)

[root@localhost ~]# /usr/local/tomcat/apache-tomcat-8.5.70/bin/version.sh
Using CATALINA_BASE: /usr/local/tomcat/apache-tomcat-8.5.70
Using CATALINA_HOME: /usr/local/tomcat/apache-tomcat-8.5.70
Using CATALINA_TMPDIR: /usr/local/tomcat/apache-tomcat-8.5.70/temp
Using JRE_HOME: /usr/java/jdk1.8.0_371
Using CLASSPATH: /usr/local/tomcat/apache-tomcat-8.5.70/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-8.5.70/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Server version: Apache Tomcat/8.5.70
Server built: Aug 9 2021 16:17:14 UTC
Server number: 8.5.70.0
OS Name: Linux
OS Version: 3.10.0-1160.el7.x86_64
Architecture: amd64
JVM Version: 1.8.0_371-b11
JVM Vendor: Oracle Corporation

1. Configure service mode management

(1) Configure /etc/profile

The path uses the directory path of your jdk and tomcat

[root@localhost ~]# tail -4 /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_371
export PATH=$JAVA_HOME/bin:$PATH
export CATALINA_HOME=/usr/local/tomcat/apache-tomcat-8.5.70
export TOMCAT_HOME=/usr/local/tomcat/apache-tomcat-8.5.70
[root@localhost ~]# source /etc/profile

(2) Configure the service file tomcat.service

Configure according to your actual directory, the configuration of JAVA_HOME= and CATALINA_HOME= is consistent with the above /etc/profile

[root@localhost system]# pwd
/usr/lib/systemd/system
[root@localhost system]# vim tomcat.service
# Systemd unit file for default tomcat
#
# To create clones of this service:
# DO NOTHING, use [email protected] instead.

[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target

[Service]
Type=forking
Environment=JAVA_HOME=/usr/java/jdk1.8.0_371
Environment=CATALINA_HOME=/usr/local/tomcat/apache-tomcat-8.5.70
ExecStart=/usr/local/tomcat/apache-tomcat-8.5.70/bin/startup.sh
ExecStop=/usr/local/tomcat/apache-tomcat-8.5.70/bin/shutdown.sh
ExecReload=/bin/kill -s HUP $MAINPID
SuccessExitStatus=143
User=tomcat
Group=tomcat
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Here is the configured tomcat user to start (it can be changed to an existing user, permission issues need to be considered), then it is also necessary to change the owner and group of all files related to tomcat to tomcat

[root@localhost ~]# chown -R tomcat:tomcat /usr/local/tomcat/

(3) Overload configuration, test tomcat service

[root@localhost system]# systemctl daemon-reload
[root@localhost system]# systemctl stop tomcat
[root@localhost system]# systemctl status tomcat
● tomcat.service - Apache Tomcat Web Application Container
   Loaded: loaded (/usr/lib/systemd/system/tomcat.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

Aug 06 22:24:30 localhost.localdomain systemd[1]: tomcat.servic...
Aug 06 22:24:42 localhost.localdomain systemd[1]: Starting Apac...
Aug 06 22:24:42 localhost.localdomain systemd[1]: Started Apache...
Aug 06 22:33:29 localhost.localdomain systemd[1]: Stopping Apac...
Aug 06 22:33:29 localhost.localdomain systemd[1]: Stopped Apache...
Aug 06 22:33:29 localhost.localdomain systemd[1]: Starting Apac...
Aug 06 22:33:29 localhost.localdomain startup.sh[33059]: Tomcat...
Aug 06 22:33:29 localhost.localdomain systemd[1]: Started Apache...
Aug 06 22:34:20 localhost.localdomain systemd[1]: Stopping Apac...
Aug 06 22:34:20 localhost.localdomain systemd[1]: Stopped Apache...
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost system]#
[root@localhost system]# systemctl start tomcat
[root@localhost system]# systemctl status tomcat
● tomcat.service - Apache Tomcat Web Application Container
   Loaded: loaded (/usr/lib/systemd/system/tomcat.service; disabled; vendor preset: disabled)
   Active: active (running) since Sun 2023-08-06 22:34:50 CST; 1s ago
  Process: 33218 ExecStart=/usr/local/tomcat/apache-tomcat-8.5.70/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 33225 (java)
   CGroup: /system.slice/tomcat.service
           └─33225 /usr/java/jdk1.8.0_371/bin/java -Djava.util....

Aug 06 22:34:50 localhost.localdomain systemd[1]: Starting Apac...
Aug 06 22:34:50 localhost.localdomain systemd[1]: Started Apache...
Hint: Some lines were ellipsized, use -l to show in full.

2. Manage by shell script

(1) Write shell script

[root@localhost tomcat]# vim tomcatmg.sh
#!/bin/bash
tomcat_home=/tomcat/apache-tomcat-8.5.70
tomcatdown=$tomcat_home/bin/shutdown.sh
tomcatstart=$tomcat_home/bin/startup.sh
pidtomcat=`ps -ef | grep $tomcat_home | grep -v "grep" | awk '{print $2}'`
case $1 in
start)
$tomcatstart
echo "tomcat start"
;;
stop)
$tomcatdown
echo "tomcat shutdown"
kill -9 $pidtomcat
;;
restart)
$tomcatdown
kill -9 $pidtomcat
sleep 2
$tomcatstart
echo "tomcat restart"
;;
esac

(2) Run the test

[root@localhost tomcat]# vim tomcatmg,sh

[root@localhost tomcat]# bash tomcatmg.sh stop
Using CATALINA_BASE: /tomcat/apache-tomcat-8.5.70
Using CATALINA_HOME: /tomcat/apache-tomcat-8.5.70
Using CATALINA_TMPDIR: /tomcat/apache-tomcat-8.5.70/temp
Using JRE_HOME: /home/install/jdk/jdk1.8.0_371
Using CLASSPATH: /tomcat/apache-tomcat-8.5.70/bin/bootstrap.jar:/tomcat/apache-tomcat-8.5.70/bin/tomcat-juli.jar
Using CATALINA_OPTS:
tomcat shutdown
[root@localhost tomcat]# netstat -lntup | grep 8080

[root@localhost tomcat]# bash tomcatmg.sh start
Using CATALINA_BASE: /tomcat/apache-tomcat-8.5.70
Using CATALINA_HOME: /tomcat/apache-tomcat-8.5.70
Using CATALINA_TMPDIR: /tomcat/apache-tomcat-8.5.70/temp
Using JRE_HOME: /home/install/jdk/jdk1.8.0_371
Using CLASSPATH: /tomcat/apache-tomcat-8.5.70/bin/bootstrap.jar:/tomcat/apache-tomcat-8.5.70/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
start tomcat
[root@localhost tomcat]# netstat -lntup | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 8937/java

[root@localhost tomcat]# bash tomcatmg.sh restart
Using CATALINA_BASE: /tomcat/apache-tomcat-8.5.70
Using CATALINA_HOME: /tomcat/apache-tomcat-8.5.70
Using CATALINA_TMPDIR: /tomcat/apache-tomcat-8.5.70/temp
Using JRE_HOME: /home/install/jdk/jdk1.8.0_371
Using CLASSPATH: /tomcat/apache-tomcat-8.5.70/bin/bootstrap.jar:/tomcat/apache-tomcat-8.5.70/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Using CATALINA_BASE: /tomcat/apache-tomcat-8.5.70
Using CATALINA_HOME: /tomcat/apache-tomcat-8.5.70
Using CATALINA_TMPDIR: /tomcat/apache-tomcat-8.5.70/temp
Using JRE_HOME: /home/install/jdk/jdk1.8.0_371
Using CLASSPATH: /tomcat/apache-tomcat-8.5.70/bin/bootstrap.jar:/tomcat/apache-tomcat-8.5.70/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
tomcat restart
[root@localhost tomcat]# netstat -lntup | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 9005/java
[root@localhost tomcat]#