tomcat 自启动脚本(守护模式)
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 自启动脚本(守护模式)的更多相关文章
- tomcat自启动脚本
1.#cd /etc/rc.d/init.d2.#vi tomcat3.把下面的代码保存为tomcat文件,并让它成为可执行文件 chmod 755 tomcat. #!/bin/sh # # /et ...
- 任务:写一个tomcat自启动脚本
写一篇<gitlab无法启动了应该怎么办>
- 红帽linux系统开机自启动脚本。
其实很多东西在最后完成以后会觉得也就那样,有意思的是探究的过程. 前段时间老板要求把一个程序做成linux系统开机自启动脚本的模式. 首先你需要写一个脚本. 我这边建立了一个.sh的脚本,就是用脚本启 ...
- Tomcat重启脚本restart.sh停止脚本stop.sh
Tomcat重启脚本restart.sh停止脚本stop.sh Tomcat本身提供了 startup.sh(启动)shutdown.sh(关闭)脚本,我们在部署中经常会出现死进程形象,无法杀掉进程需 ...
- linux添加开机自启动脚本示例详解
linux下(以RedHat为范本)添加开机自启动脚本有两种方法,先来简单的; 一.在/etc/rc.local中添加如果不想将脚本粘来粘去,或创建链接什么的,则:step1. 先修改好脚本,使其所有 ...
- Centos开机自启动脚本的制作
原文地址:http://www.2cto.com/os/201306/220559.html 我的一个Centos开机自启动脚本的制作 一.切换到/etc/init.d/ 二.制作sh脚本 v ...
- 转载:ubuntu 下添加简单的开机自启动脚本
转自:https://www.cnblogs.com/downey-blog/p/10473939.html linux下添加简单的开机自启动脚本 在linux的使用过程中,我们经常会碰到需要将某个自 ...
- Linux开机自启动脚本的总结
一.在/etc/rc.local中添加 如果不想将脚本粘来粘去,或创建链接什么的, 则: step1. 先修改好脚本,使其所有模块都能在任意目录启动时正常执行; step2. 再在/etc/rc.lo ...
- 腾讯云服务器centos 6.5(jdk+tomcat+vsftp)、腾讯mysql数据库 及 tomcat自启动 配置教程
1.腾讯云数据库配置 1.考虑到安全性问题,,平常不使用root用户登录,新增一个用户名neil,用来管理项目的数据库 a.首先登录root创建db_AA数据库 b.在root用户下,创建neil用户 ...
- Tomcat启动脚本
记录一个比较好的tomcat启动脚本,截取<OneinStack>,修改如下两个参数即可用. 使用之前修改下面2个参数: #Location of JAVA_HOME (bin files ...
随机推荐
- 面向 Java 开发人员的 Scala 指南: 构建计算器,第 1 部分
Scala 的 case 类和模式匹配 Ted Neward, 主管, Neward & Associates 简介: 特定于领域的语言已经成为一个热门话题:很多函数性语言之所以受欢迎,主要是 ...
- SQL SERVER日常运维巡检系列——结构设计
前言 做好日常巡检是数据库管理和维护的重要步骤,而且需要对每次巡检日期.结果进行登记,同时可能需要出一份巡检报告. 本系列旨在解决一些常见的困扰: 不知道巡检哪些东西不知道怎么样便捷体检机器太多体检麻 ...
- AtCoder Beginner Contest 378
Contest Link 还得加练. A & B & C & D 不具备任何思维含量. Submission A Submission B Submission C Submi ...
- go 编译超时解决
转载请注明出处: 在编译go项目时,遇到依赖下载超时,异常输出如下: CGO_ENABLED=0 GOOS=linux GO111MODULE=on go build -a -ldflags '-ex ...
- 网站动静加速架构 dcdn+ga 全站加速和全球加速api
背景: 1,公司服务全部在香港 2,所有的服务也都在香港 3,但是我们的客户都在国内 4,那么国内用户访问香港的服务 那么就会存在慢的问题 至于为什么不放到国内,因为我们公司是做nft的.所以你懂得. ...
- electron项目icon显示异常
前情 公司有个桌面端项目是基于Electron开发的. 坑 构建打包好的项目在桌面和任务栏上图标显示正常,但是在任务栏弹框上左上角的图标确不显示 Why? 经过反复搜索,网上有文章说如果ico图标过大 ...
- vscode使用github
1, vscode打开terminal,生成RSA密钥,并查看蜜月 PS D:\code\SQL> git init Reinitialized existing Git repository ...
- vue引入element-ui插件 “export ‘default‘ (imported as ‘Vue‘) was not found in ‘vue‘
注意:出现该问题的原因主要是使用的Vue版本与Element-UI的版本不匹配. Vue.Vue-cli与Element-UI之间版本的正确的匹配关系是: Vue库版本 Vue-cli库版本 Elem ...
- Pycharm创建工程及运行程序入门教程
pycharm基础使用步骤 1.下载pycharm2.新建Python工程(1)如下,点击Create New Project (2)选择保存位置,点击create. (3)命名,打开界面如下 (4) ...
- 即时通讯技术文集(第22期):IM安全相关文章(Part1) [共13篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第22 期. [- 1 -] 即时通讯安全篇(一):正确地理解和使用Android端加密算法 ...