通过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
相关推荐
zjw_rp2 分钟前
Spring-AOP
java·后端·spring·spring-aop
木子Linux5 分钟前
【Linux打怪升级记 | 问题01】安装Linux系统忘记设置时区怎么办?3个方法教你回到东八区
linux·运维·服务器·centos·云计算
mit6.82411 分钟前
Ubuntu 系统下性能剖析工具: perf
linux·运维·ubuntu
鹏大师运维13 分钟前
聊聊开源的虚拟化平台--PVE
linux·开源·虚拟化·虚拟机·pve·存储·nfs
Oneforlove_twoforjob15 分钟前
【Java基础面试题033】Java泛型的作用是什么?
java·开发语言
watermelonoops20 分钟前
Windows安装Ubuntu,Deepin三系统启动问题(XXX has invalid signature 您需要先加载内核)
linux·运维·ubuntu·deepin
向宇it32 分钟前
【从零开始入门unity游戏开发之——C#篇24】C#面向对象继承——万物之父(object)、装箱和拆箱、sealed 密封类
java·开发语言·unity·c#·游戏引擎
小蜗牛慢慢爬行34 分钟前
Hibernate、JPA、Spring DATA JPA、Hibernate 代理和架构
java·架构·hibernate
阿甘知识库42 分钟前
宝塔面板跨服务器数据同步教程:双机备份零停机
android·运维·服务器·备份·同步·宝塔面板·建站
滴水之功1 小时前
VMware OpenWrt怎么桥接模式联网
linux·openwrt