tomcat以daemon模式启动

跳转到最新脚本

1.jsvc简介

Jsvc 是专为 Java 应用程序开发的一个工具包,其目标是把 Java 应用程序的普通运行转换为可以配置某个普通用户以 Unix 守护进程即daemon模式运行。这样的话,可以很方便地启动 / 停止应用程序,同时也可以支持开机自启,这样每次重启后,不需要手动重启tomcat就可以自动恢复服务。

生产中daemon守护进程的好处有以下三点

  • 以daemon方式运行tomcat可使tomcat不受终端影响,不会因为退出终端而停止运行。
  • 可以让tomcat以普通用户身份运行。
  • 可以让tomcat在系统启动时自动运行。

2.安装jsvc

Tomcat 安装包的 bin 子目录下就包含了 Jsvc 工具包的源码。

1、将tomcat和jdk安装包上传到服务器。

上传apache-tomcat-9.0.46.tar.gz和jdk-8u181-linux-x64.tar.gz到/tomcat目录下

2、解压缩tomcat和jdk的tar包

假设jdk8的安装目录是 /tomcat/java_home/,Tomcat的安装目录是/tomcat/catalina_home/

tar zxvf /tomcat/apache-tomcat-9.0.46.tar.gz –C /tomcat/catalina_home/
tar zxvf /tomcat/jdk-8u181-linux-x64.tar.gz –C /tomcat/java_home/

3、解压jsvc安装包commons-daemon-native.tar.gz

cd /tomcat/apache-tomcat-9.0.46/bin

tar xzvf commons-daemon-native.tar.gz

4、编译安装jsvc,如果没有配置java环境需要使用参数--with-java指出jdk安装位置

cd commons-daemon-1.1.0-native-src/unix/
./configure --with-java=/tomcat/catalina_home/jdk1.8.0_181

make

5、将解压的jsvc复制到tomcat的bin/目录下

cp jsvc ../../ 

3.使用deamon.sh模式

Tomcat的bin/目录下有个deamon.sh脚本,可以调用deamon.sh start和deamon stop启动/关闭tomcat的守护模式


Tomcat8 守护模式开机自启动。

1. cd /etc/init.d

2. vi tomcat8 粘帖一下文本

#!/bin/bash # description: tomcat deamon script for start/stop/restart the mobile.service# chkconfig: service mobile.service {start/stop/restart}# port: 8180# auther by wxp
. /etc/rc.d/init.d/functions
prog=mobile.serviceexport JAVA_HOME=/tomcat/java_home/jdk1.8.0_181export CATALINA_HOME=/tomcat/catalina_home/apache-tomcat-9.0.46export CATALINA_BASE=/tomcat/mobile_8180/apache-tomcat-9.0.46export CATALINA_PID=/tomcat/mobile_8180/apache-tomcat-9.0.46/conf/mobile_8180.pidexport CATALINA_USER=mobileexport CATALINA_SERVICE_START_WAIT_TIME=10
cd $CATALINA_HOME/bin
case "$1" in
start)echo "Starting Tomcat..." ./daemon.sh \--java-home $JAVA_HOME \--catalina-home $CATALINA_HOME \--catalina-base $CATALINA_BASE \--catalina-pid $CATALINA_PID \--tomcat-user $CATALINA_USER \--service-start-wait-time $CATALINA_SERVICE_START_WAIT_TIME \start;;
stop)echo "Stopping Tomcat..." ./daemon.sh \--java-home $JAVA_HOME \--catalina-home $CATALINA_HOME \--catalina-base $CATALINA_BASE \--catalina-pid $CATALINA_PID \--tomcat-user $CATALINA_USER \--service-start-wait-time $CATALINA_SERVICE_START_WAIT_TIME \stop;;
restart)echo "restarting Tomcat..." ./daemon.sh \--java-home $JAVA_HOME \--catalina-home $CATALINA_HOME \--catalina-base $CATALINA_BASE \--catalina-pid $CATALINA_PID \--tomcat-user $CATALINA_USER \--service-start-wait-time $CATALINA_SERVICE_START_WAIT_TIME \stopsleep 3./daemon.sh \--java-home $JAVA_HOME \--catalina-home $CATALINA_HOME \--catalina-base $CATALINA_BASE \--catalina-pid $CATALINA_PID \--tomcat-user $CATALINA_USER \--service-start-wait-time $CATALINA_SERVICE_START_WAIT_TIME \start;;
*) echo "Usage: $prog {start|stop|restart}" ;;esacexit 0

3. 保存退出、chmod 755 tomcat8 赋权限

4. 启动 service tomcat8 start

5. chkconfig tomcat8 on,chkconfig --list tomcat 查看启动状态


tomcat deamon模式启停脚本(升级)

tomcatServer.sh

# !/bin/bash
# description: tomcat daemon script
# chkconfig: 2345 10 90
# auther by wangxp #java和tomcat家目录设置
export JAVA_HOME=/u01/java_home/jdk1.8.0_181/
export CATALINA_HOME=/u01/catalina_home/apache-tomcat-9.0.46
#应用相关设置
export CATALINA_BASE_DIR=/u01/template_tomcat
export CATALINA_BASE=$CATALINA_BASE_DIR/apache-tomcat-9.0.46
#启动用户
export CATALINA_USER=root
#程序名称
export PROG=tomcat
#服务启动等待时间
export CATALINA_SERVICE_START_WAIT_TIME=10
#进程pid号
export CATALINA_PID=$CATALINA_BASE/conf/$PROG.pid CURRENT_DATE=$(date +%Y%m%d)
CURRENT_TIME=$(date +%Y%m%d%H%M%S) . /etc/rc.d/init.d/functions
tomcatfun(){
./daemon.sh \
--java-home $JAVA_HOME \
--catalina-home $CATALINA_HOME \
--catalina-base $CATALINA_BASE \
--catalina-pid $CATALINA_PID \
--tomcat-user $CATALINA_USER \
--service-start-wait-time $CATALINA_SERVICE_START_WAIT_TIME $1
} if [ `whoami` != $CATALINA_USER ];then
echo -e "you must use \033[31m$CATALINA_USER\033[0m to excute"
exit
fi if test ! -d $JAVA_HOME;then
echo -e "\033[31mError\033[0m: JAVA_HOME is not available"
exit
fi
if test ! -d $CATALINA_HOME;then
echo -e "\033[31mError\033[0m: CATALINA_HOME is not available"
exit
fi
if test ! -d $CATALINA_BASE;then
echo -e "\033[31mError\033[0m: CATALINA_BASE is not available"
exit
fi cd $CATALINA_HOME/bin
case "$1" in
start)
echo "Starting Tomcat..."
tomcatfun start
if [ -f $CATALINA_PID ]; then
echo -e "$PROG is \033[32mActive\033[0m"
echo "pid=`cat $CATALINA_PID` `cat $CATALINA_BASE/conf/server.xml|grep 'protocol="HTTP/1.1"'|awk 'NR==1''{print $2}'`"
else
echo -e "$PROG started failed"
fi
;;
stop)
echo "Stopping Tomcat..."
tomcatfun stop
if [ -f $CATALINA_PID ]; then
echo "$PROG stopped failed"
else
echo -e "$PROG is \033[31mDead\033[0m"
fi
;;
restart)
echo "restarting Tomcat..."
tomcatfun stop
sleep 1
tomcatfun start
if [ -f $CATALINA_PID ]; then
echo -e "$PROG is \033[32mActive\033[0m"
echo "pid=`cat $CATALINA_PID` `cat $CATALINA_BASE/conf/server.xml|grep 'protocol="HTTP/1.1"'|awk 'NR==1''{print $2}'`"
else
echo -e "$PROG is \033[31mDead\033[0m"
fi
;;
status)
if [ -f $CATALINA_PID ]; then
echo -e "$PROG is \033[32mActive\033[0m"
echo "pid=`cat $CATALINA_PID` `cat $CATALINA_BASE/conf/server.xml|grep 'protocol="HTTP/1.1"'|awk 'NR==1''{print $2}'`"
else
echo -e "$PROG is \033[31mDead\033[0m"
fi
;;
upgrade)
#检查最新打包文件是否已经上传
if test ! -f ${CATALINA_BASE_DIR}/${PROG}.war ;then
echo "${PROG}.war is not exist"
exit
fi
#判断备份文件是否存在,不存在创建备份文件夹,然后停止项目
if test ! -d ${CATALINA_BASE_DIR}/backup/project/${CURRENT_DATE};then
mkdir -p ${CATALINA_BASE_DIR}/backup/project/${CURRENT_DATE}
fi
if test ! -d ${CATALINA_BASE_DIR}/backup/logs/${CURRENT_DATE};then
mkdir -p ${CATALINA_BASE_DIR}/backup/logs/${CURRENT_DATE}
fi
#停止项目
echo "Stopping Tomcat..."
tomcatfun stop
sleep 1
if [ -f $CATALINA_PID ]; then
echo "$PROG stopped failed"
exit 1
else
echo -e "$PROG is \033[31mDead\033[0m"
fi
#拷贝日志和项目到备份文件夹
mv $CATALINA_BASE/logs/catalina-daemon.out ${CATALINA_BASE_DIR}/backup/logs/${CURRENT_DATE}/catalina-daemon.out-${CURRENT_TIME}
if [ $? -eq 0 ];then
echo "log backup complate. file:${CATALINA_BASE_DIR}/backup/logs/${CURRENT_DATE}/catalina-daemon.out-${CURRENT_TIME}"
else
echo "log backup failed!"
exit
fi
mv $CATALINA_BASE/webapps/${PROG} ${CATALINA_BASE_DIR}/backup/project/${CURRENT_DATE}/${PROG}-${CURRENT_TIME}
if [ $? -eq 0 ];then
echo "projet backup complate. file:${CATALINA_BASE_DIR}/backup/project/${CURRENT_DATE}/${PROG}-${CURRENT_TIME}"
else
echo "project back failed!"
exit
fi
#移动项目
rm -rf ${CATALINA_BASE}/webapps/${PROG}.war
mv ${CATALINA_BASE_DIR}/${PROG}.war ${CATALINA_BASE}/webapps
if [ $? -ne 0 ];then
echo "'mv' ${PROG}.war failed!"
exit
fi
#启动项目
echo "Starting Tomcat..."
tomcatfun start
if [ -f $CATALINA_PID ]; then
echo -e "$PROG is \033[32mActive\033[0m"
echo "pid=`cat $CATALINA_PID` `cat $CATALINA_BASE/conf/server.xml|grep 'protocol="HTTP/1.1"'|awk 'NR==1''{print $2}'`"
else
echo -e "$PROG started failed"
fi
;;
log)
if test -f ${CATALINA_BASE}/logs/catalina-daemon.out
then
tail -500f ${CATALINA_BASE}/logs/catalina-daemon.out
else
echo "${CATALINA_BASE}/logs/catalina-daemon.out is not found"
fi
;;
*)
echo "Usage: $PROG {start|stop|restart|status|upgrade|log}"
;;
esac
exit 0

tomcat 自启动脚本(守护模式)的更多相关文章

  1. tomcat自启动脚本

    1.#cd /etc/rc.d/init.d2.#vi tomcat3.把下面的代码保存为tomcat文件,并让它成为可执行文件 chmod 755 tomcat. #!/bin/sh # # /et ...

  2. 任务:写一个tomcat自启动脚本

    写一篇<gitlab无法启动了应该怎么办>

  3. 红帽linux系统开机自启动脚本。

    其实很多东西在最后完成以后会觉得也就那样,有意思的是探究的过程. 前段时间老板要求把一个程序做成linux系统开机自启动脚本的模式. 首先你需要写一个脚本. 我这边建立了一个.sh的脚本,就是用脚本启 ...

  4. Tomcat重启脚本restart.sh停止脚本stop.sh

    Tomcat重启脚本restart.sh停止脚本stop.sh Tomcat本身提供了 startup.sh(启动)shutdown.sh(关闭)脚本,我们在部署中经常会出现死进程形象,无法杀掉进程需 ...

  5. linux添加开机自启动脚本示例详解

    linux下(以RedHat为范本)添加开机自启动脚本有两种方法,先来简单的; 一.在/etc/rc.local中添加如果不想将脚本粘来粘去,或创建链接什么的,则:step1. 先修改好脚本,使其所有 ...

  6. Centos开机自启动脚本的制作

    原文地址:http://www.2cto.com/os/201306/220559.html 我的一个Centos开机自启动脚本的制作   一.切换到/etc/init.d/   二.制作sh脚本 v ...

  7. 转载:ubuntu 下添加简单的开机自启动脚本

    转自:https://www.cnblogs.com/downey-blog/p/10473939.html linux下添加简单的开机自启动脚本 在linux的使用过程中,我们经常会碰到需要将某个自 ...

  8. Linux开机自启动脚本的总结

    一.在/etc/rc.local中添加 如果不想将脚本粘来粘去,或创建链接什么的, 则: step1. 先修改好脚本,使其所有模块都能在任意目录启动时正常执行; step2. 再在/etc/rc.lo ...

  9. 腾讯云服务器centos 6.5(jdk+tomcat+vsftp)、腾讯mysql数据库 及 tomcat自启动 配置教程

    1.腾讯云数据库配置 1.考虑到安全性问题,,平常不使用root用户登录,新增一个用户名neil,用来管理项目的数据库 a.首先登录root创建db_AA数据库 b.在root用户下,创建neil用户 ...

  10. Tomcat启动脚本

    记录一个比较好的tomcat启动脚本,截取<OneinStack>,修改如下两个参数即可用. 使用之前修改下面2个参数: #Location of JAVA_HOME (bin files ...

随机推荐

  1. MySQL命令行客户端工具之mycli

    官网: mycli 目前市面上存在各种五花八门的图形界面客户端,如 phpmyadmin,navicat 以及官方的 MySQL Workbench 等等.而在日常工作或者使用中,通过命令连接 MyS ...

  2. js 实现可缓存方法

    1.概述 有些场景下,如果一些函数需要大量的运算,但是他们的传入的参数是一样的,这个时候,我们可以将这些运算缓存下来,之后的运算就可以不用重复计算了. 2.实现方法 <script> // ...

  3. javase学习文档

        javase学习文档(更新) javase 学习文档已更新 查看地址:https://lib.stazxr.cn/codenotes/java/javase/

  4. 19号CSS学习

    一.CSS的复合选择器 更高效的选择目标元素. 后代选择器.子选择器.并集选择器.伪类选择器等. 1.后代选择器 可以选择父元素里的子元素. 又称包含选择器. 必须是空格,必须是后代,ul li {c ...

  5. Redis应用—1.在用户数据里的应用

    大纲 1.社区电商的业务闭环 2.Redis缓存架构的典型生产问题 3.用户数据在读多写少场景下的缓存设计 4.热门用户数据的缓存自动延期机制 5.缓存惊群与穿透问题的解决方案 6.缓存和数据库双写不 ...

  6. MYSQL8给新用户grant权限报错的解决方法

    ​MYSQL8用客户端创建用户,无法grant,报错:Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: YES) . 解 ...

  7. 开启生态新姿势 | 使用 WordPress 远程附件存储到 COS

    在看到这篇文章前,你大概已经听说过 WordPress 了,它是使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设属于自己的网站,也可以把 WordPres ...

  8. 企架布道:中电金信应邀出席2023佛山敏捷之旅暨DevOps Meetup

    近日,2023佛山敏捷之旅暨DevOps Meetup活动顺利举行,本次活动以助力大湾区金融和互联网企业敏捷DevOps实施和效能提升为主题,共设立 2个会场,16个话题分享,200余位金融.互联网企 ...

  9. Golang实战:深入解析国密算法在Go语言中的应用与优化

    Golang实战:深入解析国密算法在Go语言中的应用与优化 引言 随着信息技术的迅猛发展,数据安全成为企业和个人关注的焦点.国密算法(SM系列算法)作为我国自主研发的密码算法标准,逐渐在各个领域中得到 ...

  10. 如何在 Linux 中使用 grep 命令的排除功能

    来自grep 是一种强大的命令行工具,用于在一个或多个输入文件中搜索与正则表达式匹配的行,并将匹配的行标准输出.在本文中介绍如何在使用 grep 搜索时排除一个或多个单词或目录.   排除单词或多个条 ...