centos7下配置Tomcat开机启动(service方式和daemon方式)

参考博文:Linux下daemon部署Tomcat

通常我们在开发环境使用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

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方式

方式一:service服务方式(传统方式)

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                           

方式二: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

写入以下内容

[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

你可能感兴趣的:(linux)