目录
写在前面
1.准备工作
2.在Linux下安装Tomcat
3.Tomcat注册服务并设置开机启动
3.1.使用 rc.local 配置开机启动
3.2.使用/etc/init.d
3.3.systemd配置(通用方式)
在Debian系统上安装Tomcat并将其注册为服务以及设置开机启动的步骤。Tomcat是一个开源的Java Servlet容器,可以用来运行Java Web应用程序。通过本文的指导,能够在Debian系统上快速安装Tomcat,并确保其可以在系统启动时自动启动。
搭建环境
Tomcat:apache-tomcat-8.5.91
Tomcat安装路径:/home/tomcat/
JDK:jdk1.8.0_202
JDK安装路径:/home/jdk1.8.0_202/
操作系统:debain12
1.准备工作
a)下载tomcat linux的包,地址:Apache Tomcat® - Apache Tomcat 8 Software Downloads,我们下载的版本是8.0,下载方式如图:
b)因为tomcat的安装依赖于Java jdk,所以我们需要在判断linux系统下面是否安装jdk
1)使用(Xshell)连接到Linux系统下面
2)输入命令:java -version,如果显示jdk版本号,则证明已经安装,如果不显示,则证明没有安装,如果没有安装,请参考下面地址进行安装:
Debain11安装配置jdk
jdk离线安装包下载地址:
Index of java-local/jdk (huaweicloud.com)
oracle.com/java/technologies/downloads/
安装成功后验证jdk如图所示:
2.在Linux下安装Tomcat
a)然后在Xshell中使用命令跳转到 home 下面创建者自己的文件夹:tomcat
b)然后使用Xftp将tomcat复制到tomcat文件夹下面,如图所示:
c)将上传的Tomcat8.0解压,解压之后重命名为tomcat,如图所示:
#可以直接解压并命名到home目录
cd /home/tomcat
tar -zxv -f apache-tomcat-8.5.91.tar.gz
d)启动tomcat
启动方式常用三种
方式一:当前会话启动
/home/tomcat/bin/startup.sh #启动tomcat命令
出现如图上所示的信息,则表示启动成功。访问http://127.0.0.1:8080 ,如能够显示Tomcat的主页,则启动成功
ps -ef | grep 'tomcat'
查看我们刚才启动的tomcat服务:
进程id是9814,我们可以使用如下指令将其关闭
kill 9814
方式二: 带日志的当前会话启动
./catalina.sh run
与第一种方式不同的是,第二种方式启动后会显示日志,相当于当前Linux连接会话已经成为了控制台,不能再输入其它Linux指令,而与第一种方式相同的是,当当前连接关闭时,本次启动的tomcat服务也会随之关闭。当然,启动成功后我们也可以使用ctrl + c来直接关闭本次链接会话中tomcat的启动。
方式三:后台永久启动
最简单的写法:
nohup ./startup.sh &
手动指定tomcat启动时的日志路径:
nohup ./startup.sh > log.file 2>&1 &
想要明白这两者的区别,就要看nohup的具体使用方法了:
>log.file是将command的输出重定向到log.file文件,即输出内容不打印到屏幕上,而是输出到log.file文件中。
2>&1 是将标准出错重定向到标准输出,这里的标准输出已经重定向到了log.file文件,即将标准出错也输出到log.file文件中。最后一个&, 是让该命令在后台执行。
试想2>1代表什么,2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出;换成2>&1,&与1结合就代表标准输出了,就变成错误重定向到标准输出。
e)停止Tomcat的命令
/home/tomcat/bin/shutdown.sh #停止tomcat命令
f)环境变量配置
sudo vi /home/tomcat/bin/catalina.sh
g)如果系统未配置jdk、tomcat环境变量,在tomcat/bin/catalina.sh添加CATALINA_HOME、CLASSPATH
#tomcat路径
CATALINA_HOME=/home/tomcat/
CLASSPATH=.:$JAVA_HOME/lib:$CATALINA_HOME/lib
g)指定Tomcat的jdk版本
方法1. 在 tomcat/bin/setclasspath.sh 中添加 JAVA_HOME 和 JRE_HOME 的指向
JAVA_HOME=/home/jdk1.8.0_202
JRE_HOME=/home/jdk1.8.0_202/jre
3.Tomcat注册服务并设置开机启动
设置开机启动一共有三种方式,注册为服务常用两种
3.1.使用 rc.local 配置开机启动
直接在 /etc/rc.local 文件最后添加语句 /home/tomcat/bin/startup.sh,重启系统,运行ps -ef|grep java,出现如下信息,则说明tomcat服务自启动了!
/etc/rc.local里面的内容为开机执行的脚本
vi /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
#添加startup.sh的路径
/home/tomcat/bin/startup.sh
exit 0
用这种方式配置的自启动服务将在root 下运行。 注意加在 exit 0上一行
3.2.使用/etc/init.d
/etc/init.d目录下为系统服务脚本
将脚本添加为系统服务的过程:
1.将脚本复制到/etc/init.d目录下
2.添加个755权限,
3.用chkconfig --add 服务名 进行添加
4.用chkconfig --list进行查看
5.用service 服务名 start|stop|restart 执行该服务
1)进入tomcat下的bin目录
cd /home/tomcat/bin
2)复制catalina.sh作为系统服务脚本
#重命名的tomcat为以后的服务名
cp /home/tomcat/bin/catalina.sh /etc/init.d/tomcat
3)修改脚本
vi /etc/init.d/tomcat
4)在脚本较前面的位置加下面两行注释
#chkconfig:2345 10 90
#description:Tomcat service
第一行是服务的配置:第一个数字是服务的运行级,2345表明这个服务的运行级是2、3、4和5级(Linux的运行级为0到6);第二个数字是启动优先级,数值从0到99;第三个数是停止优先级,数值也是从0到99。
第二行是对服务的描述
如果该注释有误,在添加服务时会出现“tomcat不支持chkconfig”的错误提示
5)在脚本中设置环境变量
同时在文件 /etc/init.d/tomcat
CATALINA_HOME=/home/tomcat/
CLASSPATH=.:$JAVA_HOME/lib:$CATALINA_HOME/lib
JAVA_HOME=/home/jdk1.8.0_202
6)添加脚本的可执行权限
chmod 777 /etc/init.d/tomcat
7)添加为系统服务
chkconfig --add tomcat
8)查看系统服务列表
chkconfig --list
7.启动和停止tomcat
service tomcat start #启动tomcat
service tomcat stop #停止tomcat
service tomcat restart #重启tomcat
/etc/init.d目录下为系统服务脚本
注意:启动服务时 出现一个,始终不知道这是什么错和什么原因,网上查了一下说执行一下这个命令 systemctl daemon-reload ,然后再次重新启动Tomcat就启动成功了
3.3.systemd配置(通用方式)
system daemon 系统守护进程。Systemd 可以管理所有系统资源。不同的资源统称为 Unit(单位)。Unit 一共分成12种。我们要设置开机自启动服务就要使用Service unit.
假设tomcat根目录在/home/tomcat,在目录/lib/systemd/system/下新建文件tomcat.service,内容如下:
1)注册systemctl服务(我更习惯用nano编辑)
vi /lib/systemd/system/tomcat.service
或
vi /usr/lib/systemd/system/tomcat.service
2)tomcat.service文件内容如下:
[Unit]
#Description指定当前服务的简单描述。
Description=tomcat8测试应用服务
#After表示当前服务在network.target之后启动,可以指定多个服务,以空格隔开。
After=network.target
[Service]
#ExecStart将以fork()方式启动,此时父进程将会退出,子进程将成为主进程。
Type=forking
Environment='JAVA_HOME=/home/jdk1.8.0_202'
Environment='JRE_HOME=/home/jdk1.8.0_202/jre'
# ExecStart指定启动进程时执行的命令。
# ExecReload指定当该服务被要求重新载入配置时所执行的命令。另外,还有一个特殊的环境变量 $MAINPID 可用于表示主进程的P>
# ExecStop指定停止服务时执行的命令。
ExecStart=/home/tomcat/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/home/tomcat/bin/shutdown.sh
#web服务设置私有/tmp或/var/tmp目录
PrivateTmp=true
[Install]
#“WantedBy=multi-user.target”表示当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。
WantedBy=multi-user.target
3)重新加载systemd管理器的配置
systemctl daemon-reload
4)启动tomcat服务:
systemctl start tomcat
# tomcat启动的大致流程是startup.sh->catalina.sh->setclasspath.sh
5)检查Tomcat服务状态:
systemctl status tomcat
状态Active: active,代表启动成功
6)设置开机启动如果没有错误,您可以启用Tomcat服务在引导时自动启动:
systemctl enable tomcat
常用命令汇总
命令 | 功能 |
systemctl stop tomcat.service | 停止服务 |
sudo systemctl disable tomcat.service | 取消开机自启动 |
systemctl restart tomcat.service | 重启 |
systemctl enable tomcat.service | 设置服务自启动 |
sudo systemctl status tomcat | 检查Tomcat服务状态 |