centos7下配置Tomcat开机启动(service方式和daemon方式)
通常我们在开发环境使用tomcat时直接使用$CATALINA_HOME/bin/startup.bat和shutdown.bat来启动和关闭tomcat。然而在生产环境中我们需要将tomcat配置成以daemon守护进程来运行
,主要有以下几个原因:
- 以daemon方式运行tomcat可使tomcat不受终端影响,不会因为退出终端而停止运行。
- 可以让tomcat以普通用户身份运行
- 可以让tomcat在系统启动时自动运行
下面开始配置:
1.配置环境变量
配置JAVA_HOME,CATALINA_HOME两个环境变量
export JAVA_HOME=/usr/local/jdk
export CATALINA_HOME=/usr/local/tomcat
- 1
- 2
2.编译安装jsvc
jsvc 是 daemon 模式用来启动 Tomcat 8 的程序
#解压
cd $CATALINA_HOME/bin
tar -zxvf commons-daemon-native.tar.gz
#配置
cd commons-daemon-1.1.0-native-src/unix
./configure --with-java=/usr/local/jdk
#编译
make
#编译后,会产生一个jsvc的二进制可执行文件。将其复制到$CATALINA_HOME/bin下
cp jsvc ../..
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
3.创建用户和组
创建tomcat用户,仅用来运行tomcat
#创建tomcat组
groupadd tomcat
#创建tomcat用户(该用户没有登录权限)
useradd tomcat -s /sbin/nologin -M
#设置目录所属用户和组
chown -R tomcat:tomcat /usr/local/tomcat
- 1
- 2
- 3
- 4
- 5
- 6
- 7
4.创建setenv.sh文件
在tomcat/bin目录下创建setenv.sh文件
vim setenv.sh
- 1
添加内容
# add tomcat pid
CATALINA_PID="/usr/local/tomcat/tomcat.pid"
# add JAVA_HOME
JAVA_HOME=/usr/local/jdk
# add JAVA_OPTS
JAVA_OPTS="-server -Xms256M -Xmx512M -XX:MaxNewSize=256m"
- 1
- 2
- 3
- 4
- 5
- 6
5.设置后台启动脚本(如果上面设置了setenv.sh这里这里可跳过
)
打开daemon.sh文件
vim /usr/local/tomcat/bin/daemon.sh
- 1
搜索
找到&& TOMCAT_USER=tomcat,将这里的TOMCAT_USER设置为创建的用户。
若本来就使用的tomcat用户,所以这里不用改
取消JAVA_HOME的注释,并改为自己的jdk配置路径
JAVA_HOME=/usr/local/jdk
- 1
- 2
- 3
- 4
- 5
- 6
6.配置开机启动
有传统的service服务方式和centos7中新的systemctl方式
方式一:service服务方式(传统方式)
7.在/etc/init.d/目录下编写启动tomcat服务的脚本
#创建tomcat
vim /etc/init.d/tomcat
- 1
- 2
写入如下内容
#!/bin/bash
#startup script for tomcat on linux
# chkconfig: 2345 10 90
# description: tomcat sever ....
#filename tomcat.sh
#JAVA_HOME=/usr/local/jdk
TOMCAT_HOME=/usr/local/tomcat
################################################
start_tomcat=$TOMCAT_HOME/bin/daemon.sh
stop_tomcat=$TOMCAT_HOME/bin/daemon.sh
start() {
echo -n "Starting tomcat: "
${start_tomcat} start
echo "tomcat start ok"
}
stop() {
echo -n "Shutdown tomcat"
${stop_tomcat} stop
echo "tomcat stop ok"
}
#how we were called
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 10
start
;;
*)
echo "Usage: $0 {start|stop|restart}"
esac
exit 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
8.授权
chmod 777 /etc/init.d/tomcat
- 1
9.service方式启动
#添加tomcat服务
chkconfig --add tomcat
#查看tomcat服务是否被添加
chkconfig –list | grep tomcat
#启动/停止/重启tomcat服务
service tomcat start/stop/restart
#查看tomcat服务状态
service tomcat status
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
方式二:systemctl服务方式(新方式)
以前都用service命令管理软件,而centos7.x引入新的方式来管理系统进程,使用systemctl替换了service命令,当然service方式依旧可以继续使用。systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。systemctl的使用可参考CentOS7中systemctl的使用
7.创建开机启动服务文件
创建一个名为tomcat.service的系统服务脚本
#创建一个名为tomcat.service的系统服务脚本
vim /usr/lib/systemd/system/tomcat.service
- 1
- 2
写入以下内容
[Unit]
Description=Apache Tomcat
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/tomcat/tomcat.pid
Environment=JAVA_HOME=/usr/local/jdk
Environment=CATALINA_HOME=/usr/local/tomcat
ExecStart=/usr/local/tomcat/bin/daemon.sh start
ExecStop=/usr/local/tomcat/bin/daemon.sh stop
User=tomcat
Group=tomcat
PrivateTmp=true
[Install]
WantedBy=multi-user.target
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
配置好后,要刷新一下
#重新加载一下配置。每次改动后也要重新加载
systemctl daemon-reload
- 1
- 2
8.设置开机启动,并启动服务
#设置允许开机自启动
systemctl enable tomcat
#启动服务
systemctl start tomcat
#查看状态
systemctl status tomcat
#查看服务是否激活
systemctl is-active tomcat
##其它命令
# 禁止开机启动
systemctl disable tomcat
# 停止服务
systemctl stop tomcat
# 重启服务
systemctl restart tomcat
# 查看所有已启动的服务
systemctl list -units --type=service
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-258a4616f7.css" rel="stylesheet">
</div>
</article>