目录
目的
通过二进制
安装的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