通过systemctl启停tomcat

目录

目的

通过二进制安装的tomcat,只能通过tomcat文件目录下的.sh脚本进行启停。

而我们一般使用的服务,是通过systemd提供的systemctl进行服务启停。

systemd也是一个服务,它可以通过/usr/systemd/system/xxx.service进行二进制安装的服务的systemd启停。

具体的systemd服务可以查看官方文档,这里不过多赘述。

.service配置文件的结构介绍

shell 复制代码
# 查看nginx这个systemd启动配置文件
[root@front03 tools]# systemctl cat nginx
# /usr/lib/systemd/system/nginx.service
[Unit] # 指定注释信息,依赖(先后顺序)
Description=nginx - high performance web server # 说明与注释
Documentation=http://nginx.org/en/docs/ # 文档的路径
After=network-online.target remote-fs.target nss-lookup.target # 在指定的服务之后启动
Wants=network-online.target # 弱依赖关系,这个服务启动失败或停止运行,不影响nginx.service继续执行

[Service] # 用于指定服务开启命令,关闭命令,重启命令.
Type=forking # 指定类型 simple 或forking即可
PIDFile=/var/run/nginx.pid # 进程文件,不是必须的
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf # systemctl start 时使用的命令
ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /var/run/nginx.pid)" # systemctl restart 时使用的命令
ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /var/run/nginx.pid)" # systemctl stop 时使用的命令

[Install] # 内容固定,用于指定运行级别
WantedBy=multi-user.target # 运行级别,一般都是多用户模式

# 以下忽略,内容同上
# /usr/lib/systemd/system/nginx.service.d/php-fpm.conf
[Unit]
Wants=php-fpm.service

以上,我们根据nginx.service的文件模板修改配置即可。

实验步骤

1. 安装java

二进制安装的化可以 到官网安装一个java.tar.gz

这里的版本是jdk-8u351-linux-x64.tar.gz

shell 复制代码
# 解压上传上来的文件包,解压文件指定路径到/app/tools
tar xf jdk-8u351-linux-x64.tar.gz -C /app/tools/

# 设置软连接,便于使用
ln -s /app/tools/jdk1.8.0_351/ /app/tools/jdk

# 添加环境变量
# 使用单引号是因为输入内容包含$变量,使用才可以正常输入
cat >> /etc/profile <<'EOF'
export JAVA_HOME=/app/tools/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
EOF

# 重新引用环境变量
source /etc/profile

# 测试,直接java而不是/app/tools/java
[root@front03 tools]# java -version
java version "1.8.0_351"
Java(TM) SE Runtime Environment (build 1.8.0_351-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.351-b10, mixed mode)

2. 二进制安装tomcat

通过官网下载tomcat.tar.gz的二进制包

我使用的是apache-tomcat-9.0.52.tar.gz

shell 复制代码
# 解压到指定目录
tar xf apache-tomcat-9.0.52.tar.gz -C /app/tools/

# 软连接
ln -s /app/tools/apache-tomcat-9.0.52 /app/tools/tomcat

# 测试
[root@front03 tools]# tomcat/bin/version.sh
Using CATALINA_BASE:   /app/tools/tomcat
Using CATALINA_HOME:   /app/tools/tomcat
Using CATALINA_TMPDIR: /app/tools/tomcat/temp
Using JRE_HOME:        /app/tools/jdk
Using CLASSPATH:       /app/tools/tomcat/bin/bootstrap.jar:/app/tools/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Server version: Apache Tomcat/9.0.52
Server built:   Jul 31 2021 04:12:17 UTC
Server number:  9.0.52.0
OS Name:        Linux
OS Version:     4.18.0-448.el8.x86_64
Architecture:   amd64
JVM Version:    1.8.0_351-b10
JVM Vendor:     Oracle Corporation

# 启动tomcat,查看进成
tomcat/bin/startup.sh

[root@front03 tools]# ss -tunlp | grep java
tcp   LISTEN 0      1      [::ffff:127.0.0.1]:8005             *:*    users:(("java",pid=2326,fd=65))                                                                                                                                           
tcp   LISTEN 0      100                     *:8080             *:*    users:(("java",pid=2326,fd=57))  

# 关闭tomcat
tomcat/bin/shutdown.sh

3. 编写/usr/systemd/system/tomcat.service文件

shell 复制代码
# 环境变量才文件中是不生效的,所以要写一个java的环境变量的文件用于给tomcat.service调用
cat /etc/sysconfig/tomcat
JAVA_HOME=/app/tools/jdk
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

# 编写tomcat.service文件
cat /usr/lib/systemd/system/tomcat.service
# /usr/lib/systemd/system/tomcat.service
[Unit]
Description=tomcat - java vm
After=network.target

[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/tomcat
ExecStart=/app/tools/tomcat/bin/startup.sh
ExecReload=/app/tools/tomcat/bin/shutdown.sh && sleep 2 &&/app/tools/tomcat/bin/startup.sh
ExecStop=/app/tools/tomcat/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

# 重新读取service文件,不然新的文件不会生效
systemctl daemon-reload

4. 测试

启动

shell 复制代码
[root@front03 tools]# systemctl start tomcat
[root@front03 tools]# ss -tunlp | grep java
tcp   LISTEN 0      1      [::ffff:127.0.0.1]:8005             *:*    users:(("java",pid=3463,fd=65))                                                                                                                                           
tcp   LISTEN 0      100                     *:8080             *:*    users:(("java",pid=3463,fd=57))   

关闭

shell 复制代码
[root@front03 tools]# systemctl stop tomcat
[root@front03 tools]# ss -tunlp | grep java
相关推荐
稚辉君.MCA_P8_Java4 分钟前
Gemini永久会员 Java 返回最长有效子串长度
java·数据结构·后端·算法
无代码专家8 分钟前
数字化转型下的订单管理全流程优化方案
大数据·运维·人工智能
我超级能吃的12 分钟前
线程池核心原理及使用
java·开发语言
若疆赤云online13 分钟前
Ubuntu Dockerfile jar运行安装中文字体
linux·ubuntu·jar
洛可可白16 分钟前
Ubuntu 上安装 Docker
linux·ubuntu·docker
路边草随风17 分钟前
java 实现 flink 读 kafka 写 delta
java·大数据·flink·kafka
逆风局?17 分钟前
后端Web实战(部门管理)——日志技术
java·前端
小马爱打代码21 分钟前
Spring AI:ChatClient实现对话效果
java·人工智能·spring
AI+程序员在路上22 分钟前
Ubuntu 20虚拟机中实现与Windows主机的剪贴板共享
linux·ubuntu
kevin小新22 分钟前
虚拟机 Ubuntu22 系统中安装 VMwareTools 以及相关工具
linux