参考博文:Linux下daemon部署Tomcat
通常我们在开发环境使用tomcat时直接使用$CATALINA_HOME/bin/startup.bat和shutdown.bat来启动和关闭tomcat。然而在生产环境中我们需要将tomcat配置成以daemon守护进程来运行
,主要有以下几个原因:
下面开始配置:
1.配置环境变量
配置JAVA_HOME,CATALINA_HOME两个环境变量
export JAVA_HOME=/usr/local/jdk
export CATALINA_HOME=/usr/local/tomcat
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 ../..
3.创建用户和组
创建tomcat用户,仅用来运行tomcat
#创建tomcat组
groupadd tomcat
#创建tomcat用户(该用户没有登录权限)
useradd tomcat -s /sbin/nologin -M
#设置目录所属用户和组
chown -R tomcat:tomcat /usr/local/tomcat
4.创建setenv.sh文件
在tomcat/bin目录下创建setenv.sh文件
vim setenv.sh
添加内容
# 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"
5.设置后台启动脚本(如果上面设置了setenv.sh这里这里可跳过
)
打开daemon.sh文件
vim /usr/local/tomcat/bin/daemon.sh
搜索
找到&& TOMCAT_USER=tomcat,将这里的TOMCAT_USER设置为创建的用户。
若本来就使用的tomcat用户,所以这里不用改
取消JAVA_HOME的注释,并改为自己的jdk配置路径
JAVA_HOME=/usr/local/jdk
6.配置开机启动
有传统的service服务方式和centos7中新的systemctl方式
7.在/etc/init.d/目录下编写启动tomcat服务的脚本
#创建tomcat
vim /etc/init.d/tomcat
写入如下内容
#!/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
8.授权
chmod 777 /etc/init.d/tomcat
9.service方式启动
#添加tomcat服务
chkconfig --add tomcat
#查看tomcat服务是否被添加
chkconfig --list | grep tomcat
#启动/停止/重启tomcat服务
service tomcat start/stop/restart
#查看tomcat服务状态
service tomcat status
以前都用service命令管理软件,而centos7.x引入新的方式来管理系统进程,使用systemctl替换了service命令,当然service方式依旧可以继续使用。systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。systemctl的使用可参考CentOS7中systemctl的使用
7.创建开机启动服务文件
创建一个名为tomcat.service的系统服务脚本
#创建一个名为tomcat.service的系统服务脚本
vim /usr/lib/systemd/system/tomcat.service
写入以下内容
[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
配置好后,要刷新一下
#重新加载一下配置。每次改动后也要重新加载
systemctl daemon-reload
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