tomcat9 使用systemctl管理服务

使用systemctl管理服务流程

1. 编译安装java环境

oracle jdk 版本8u361: https://www.123pan.com/s/liX0Vv-C3Pa.html
tomcat版本 9.0.76

# 解压
tar zxvf jdk-8u361-linux-x64.tar.gz 

# 创建软链接,方便以后更新jdk
[root@bz02 app]# ln -s /app/lib/jdk1.8.0_361/ /app/tools/jdk

# 添加jdk环境变量(二进制安装才需要,yum安装不需要)
[root@bz02 ~]# tail -4 /etc/profile
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


# 测试
重新加载 `/etc/profile`
[root@bz02 ~]# source /etc/profile

[root@bz02 ~]# java -version
java version "1.8.0_361"
Java(TM) SE Runtime Environment (build 1.8.0_361-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.361-b09, mixed mode)

2.yum安装JDK

# 直接yum安装即可
# 查找yum库中的openjdk
[root@bz03 ~]# yum search openjdk
java-1.8.0-openjdk.i686 : OpenJDK Runtime Environment 8
java-1.8.0-openjdk.x86_64 : OpenJDK 8 Runtime Environment
java-1.8.0-openjdk-accessibility.i686 : OpenJDK accessibility connector
java-1.8.0-openjdk-accessibility.x86_64 : OpenJDK accessibility connector
java-1.8.0-openjdk-demo.i686 : OpenJDK Demos 8
java-1.8.0-openjdk-demo.x86_64 : OpenJDK 8 Demos
java-1.8.0-openjdk-devel.i686 : OpenJDK Development Environment 8
java-1.8.0-openjdk-devel.x86_64 : OpenJDK 8 Development Environment
java-1.8.0-openjdk-headless.i686 : OpenJDK Headless Runtime Environment 8
java-1.8.0-openjdk-headless.x86_64 : OpenJDK 8 Headless Runtime Environment
java-1.8.0-openjdk-javadoc.noarch : OpenJDK 8 API documentation
java-1.8.0-openjdk-javadoc-zip.noarch : OpenJDK 8 API documentation compressed in a single archive
java-1.8.0-openjdk-src.i686 : OpenJDK Source Bundle 8
java-1.8.0-openjdk-src.x86_64 : OpenJDK 8 Source Bundle
java-11-openjdk.i686 : OpenJDK Runtime Environment 11
java-11-openjdk.x86_64 : OpenJDK 11 Runtime Environment

安装

[root@bz03 ~]# yum install -y java-1.8.0-openjdk*

# 测试
[root@bz03 ~]# java -version
openjdk version "1.8.0_372"
OpenJDK Runtime Environment (build 1.8.0_372-b07)
OpenJDK 64-Bit Server VM (build 25.372-b07, mixed mode)

3. systemctl 管理服务流程

systemctl 是通过放在 /usr/lib/systemd/system/xxx.service文件进行管理对应服务的

a. 查看service文件书写格式

  • Unit:书写注释,说明文件的作用。服务的依赖
  • Service:核心部分,开关重启的命令
  • Install:运行级别
# sshd
root@bz02 system]# systemctl cat sshd
# /usr/lib/systemd/system/sshd.service
[Unit]
Description=OpenSSH server daemon
DDescriptionocumentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service

[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target
  • Unit
    • Description : 当前服务描述
    • DDescriptionocumentation : man帮助
    • After:核心,依赖的服务,按顺序启动
    • Wants : 弱依赖关系,就算启动失败,也会继续往下执行
  • Service
    • Type :指定服务启动类型,一般选择 notifyforkingoneshot 之一,不设置则默认为 simple
    • EnvironmentFile :指定环境变量文件
    • ExecStart : 启动命令
    • ExecStop : 停止命令
    • ExecReload : 重启命令
    • KillMode : 停止命令,和ExecStop作用一致,选择其一
    • Restart : 自动重启
    • RestartSec : 间隔多少秒后自动重启
  • Install
    • WantedBy : 运行级别,一般设置为 multi-user.target
[root@bz04 ~]# systemctl cat nginx
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
KillSignal=SIGQUIT
TimeoutStopSec=5
PrivateTmp=true

nginx配置文件与sshd不同,不同地方进行解释(相同选项已删除)

  • 主要不同的地方为Service

  • type=forking

  • PIDFile : pid文件目录

  • Pre : 执行开关机重启之前执行的命令

    • ExecStartPre=/usr/bin/rm -f /run/nginx.pid : 删除pid文件
    • ExecStartPre=/usr/sbin/nginx -t :检查配置文件语法是否正确

b. tomcat的systemctl配置

a. 配置java环境变量(yum安装的jdk则不需要)

[root@bz02 tomcat]# vim /etc/sysconfig/tomcat
[root@bz02 tomcat]# cat /etc/sysconfig/tomcat
JAVA_HOME=/app/tools/jdk
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

b. systemctl配置

[root@bz04 ~]# vim /usr/lib/systemd/system/tomcat.service

#/usr/lib/systemd/system/tomcat.service
[Unit]
Description=The tomcat web server by server
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

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

[Install]
WantedBy=multi-user.target
# 通知systemctl,配置文件发生了变化,需要重载
[root@bz02 system]# systemctl daemon-reload

4. 测试

🏮警告: tomcat有两种启动方式,但是开关机重启只能选择一种,不能混用,比如使用systemctl启动后,不能使用绝对路径 shutdown.sh 关闭

# 查看tomcat进程和端口是否启动或者占用
[root@bz02 system]# ss -lntup | grep 8080
[root@bz02 system]# ps -aux|grep java
root       5064  0.0  0.0 112808   964 pts/1    R+   15:43   0:00 grep --color=auto java
# 启动
[root@bz02 system]# systemctl start tomcat

# 查看状态
[root@bz02 system]# systemctl status tomcat.service
● tomcat.service - The tomcat web server by server
   Loaded: loaded (/usr/lib/systemd/system/tomcat.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2023-07-05 15:50:54 CST; 3s ago

# 查看端口
[root@bz02 system]# ss -lntup |grep 8080
tcp    LISTEN     0      100    [::]:8080               [::]:*                   users:(("java",pid=5459,fd=57))

# 查看进程
[root@bz02 system]# ps -aux|grep java
root       5459 16.0  8.7 2278156 86760 ?       Sl   15:50   0:03 /app/tools/jdk/bin/java -Djava.util.logging.config.file=/app/tools/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /app/tools/tomcat/bin/bootstrap.jar:/app/tools/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/app/tools/tomcat -Dcatalina.home=/app/tools/tomcat -Djava.io.tmpdir=/app/tools/tomcat/temp org.apache.catalina.startup.Bootstrap start
root       5505  0.0  0.0 112808   964 pts/1    R+   15:51   0:00 grep --color=auto java
# 自启动
[root@bz02 system]# systemctl enable tomcat
Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /usr/lib/systemd/system/tomcat.service.

图片.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容