通过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
相关推荐
Rabitebla8 小时前
【Linux 底层原理】进程(十):进程等待详解---从僵尸进程到 wait、waitpid 与 status
linux·c++·笔记·学习·visual studio
Decay__8 小时前
18_MySQL 智能巡检方案 —— 巡检项清单 / 一键巡检脚本 / 健康评分
运维·数据库·sql·mysql·架构
smallcelebration10 小时前
151 从0开始搭建后端项目
前端·firefox
码农小河6610 小时前
基于SSM+JSP的高校专业信息管理系统【附源码+数据库】
java·开发语言·数据库
风若飞12 小时前
Spring Ai 入门遇到问题1
java·后端·spring
Nuanyt12 小时前
LeetCode Hot 100 链表专题(五)· 2 题(Java)
java·算法·leetcode·链表
天远API13 小时前
零信任架构实战:基于天远运营商三要素详版V即时版构建自动化消费电子大促电商平台高价值权益秒杀与优惠券防羊毛高并发实名核验网关
运维·人工智能·架构·自动化
Android系统攻城狮13 小时前
Linux FFmpeg深度解析之avcodec_default_get_encode_buffer调用流程与实战(二十八)
linux·运维·服务器·ffmpeg·车载音视频·ffmpeg音视频
黑马程序员毕设13 小时前
基于 Java 的餐饮点餐系统设计与应用报告
java·开发语言
程序员初一13 小时前
8080 打不开的四层定位:监听地址、ufw、DOCKER 链、安全组
linux·ssh