jsvc 以daemon方式运行tomcat
原理:
使用jsvc来运行服务,没有了默认8005的shutdown端口;
主进程pid为1,fork 2个进程
运行方式参考:http://commons.apache.org/proper/commons-daemon/jsvc.html
centos 7
- 1、建立 Jsvc
Jsvc 是专为 Java 应用程序开发的一个工具包,其目标是把 Java 应用程序的普通运行转换为以 Unix 守护进程的方式运行。这样的话,可以很方便地启动 / 停止应用程序。Tomcat 安装包的 bin 子目录下就包含了 Jsvc 工具包的源码,整个建立过程很方便,如下。
本文的脚本以 Tomcat 8.0.27,CentOS 7 为例。假定我的 JAVA 8 安装到 / opt/jdk8 处。
$ cd /opt/tomcat8/bin
$ sudo tar zvxf commons-daemon-native.tar.gz
$ cd commons-daemon-1.0.15-native-src/unix
$ sudo ./configure --with-java=/opt/jdk8
$ sudo make
$ sudo cp jsvc ../..
- 2、创建 Tomcat 用户
下面的命令会创建一个专门的用户来运行 Tomcat 实例,并会把 / opt/tomcat 目录及其文件的所有权赋予新创建的 tomcat 用户。
$ sudo useradd -r -s /sbin/nologin tomcat
$ sudo chown -R tomcat: /opt/tomcat8
- 3、创建系统服务
3.1 创建一个名为 tomcat.service 的系统服务脚本。
vim /usr/lib/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat 8 Web Application Container
After=network.target
[Service]
Type=forking
PIDFile=/var/run/tomcat.pid
Environment=CATALINA_PID=/var/run/tomcat.pid
Environment=JAVA_HOME=/opt/jdk8
Environment=CATALINA_HOME=/opt/tomcat8
Environment=CATALINA_BASE=/opt/tomcat8
Environment=CATALINA_OPTS=
ExecStart=/opt/tomcat/bin/jsvc \
-Dcatalina.home=${CATALINA_HOME} \
-Dcatalina.base=${CATALINA_BASE} \
-cp ${CATALINA_HOME}/bin/commons-daemon.jar:${CATALINA_HOME}/bin/bootstrap.jar:${CATALINA_HOME}/bin/tomcat-juli.jar \
-user tomcat \
-java-home ${JAVA_HOME} \
-pidfile /var/run/tomcat.pid \
-errfile SYSLOG \
-outfile SYSLOG \
$CATALINA_OPTS \
org.apache.catalina.startup.Bootstrap
ExecStop=/opt/tomcat8/bin/jsvc \
-pidfile /var/run/tomcat.pid \
-stop \
org.apache.catalina.startup.Bootstrap
[Install]
WantedBy=multi-user.target
开发者可以修改 CATALINA_OPTS 选项以满足自己的需要。
3.2 让 Tomcat 服务在启动后就自动运行:
$ sudo systemctl enable /usr/lib/systemd/tomcat.service
ln -s '/usr/lib/systemd/tomcat.service' '/etc/systemd/system/multi-user.target.wants/tomcat.service'
ln -s '/usr/lib/systemd/tomcat.service' '/etc/systemd/system/tomcat.service'
3.3 使用下面的命令启动、重启、停止 Tomcat 服务
$ systemctl start tomcat
$ systemctl stop tomcat
$ systemctl restart tomcat
$ systemctl status tomcat
来源: http://blog.csdn.net/chszs/article/details/49153881
centos 6
主要利用了提供的daemon.sh 脚本
添加tomcat 用户:
useradd -r -s /sbin/nologin tomcat
vim /etc/init.d/tomcat
#!/bin/bash
#JAVA_HOME=/opt/zimbra/jdk-1.7.0_51
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
jsvc 以daemon方式运行tomcat的更多相关文章
- idea中以maven工程的方式运行tomcat源码
0. 准备环境 idea+jdk8+tomcat源码 1.下载tomcat源码: http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/ ...
- 如何让docker以daemon方式运行/bin/bash
本文转自:https://segmentfault.com/q/1010000000424935 问题: 我想在docker run的时候,用-d参数运行/bin/bash,然后让这个bash一直跑着 ...
- Docker安装+HelloWorld+运行Tomcat
前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 上一篇已经讲解了为什么需要Docker?,相信大家已 ...
- 使用apache daemon让java程序在unix系统上以服务方式运行
通过使用apache_commons_daemon,可以让Java程序在unix系统上以服务器的方式运行. 当然,通过wrapper也是可以达到这样的目的,wrapper还可以指定java应用中用到的 ...
- linux下tomcat作为daemon进程运行
在linux下如果想让tomcat在开机时自启动,可以将启动代码写到/etc/rc.local里面.但是,这样的话,tomcat将以root权限运行,这是不安全的.因此,要想办法让tomcat以非特权 ...
- Docker++:docker运行Tomcat后访问首页报404 (永久解决方式)
docker运行Tomcat后访问首页报404 与 tomcat 版本有关. 解决方式如下: 1.查看防火墙问题 2.Tomcat 下如果有 webapps.dist 和 webapps 则需要进行合 ...
- Docker实践 - 安装Docker并在容器里运行tomcat
安装Docker yum install docker 本文使用的系统是centos7,ubuntu使用以下命令 sudo apt-get update sudo apt-get install do ...
- linux-非root用户运行tomcat
# 前言:为什么要使用非root用户运行tomcat root用户启动tomcat有一个严重的问题,那就是tomcat具有root权限. 这意味着你的任何一个页面脚本(html/js)都具有root权 ...
- Linux下非root用户运行Tomcat
PS:Linux下使用非root用户运行tomcat的原因 由于项目需求,也由于root用户启动tomcat有一个严重的问题,那就是tomcat具有root权限. 这意味着你的任何一个页面脚本(htm ...
随机推荐
- 创建Sdcard
下载好源码之后编译生成了模拟器,这个时候的模拟器是没有SDcard的.这个时候需要创建需要为虚拟机创建SDcard 我们创建mksdcard 256M <src>/out/target/p ...
- Hexo站点之域名配置
摘要 因为Hexo个人博客是托管在github之上,每次访问都要使用githubname.github.io这么一个长串的域名来访问,会显得非常繁琐.这个时候我们可以购买一个域名,设置DNS跳转,以达 ...
- Linux负载均衡软件LVS之二(安装篇)
一. 安装LVS软件 1.安装前准备工作操作系统:统一采用Centos4.4版本.地址规划,如表1所示:表1 更详细的信息如图2所示: 图2中的VIP指的是虚拟IP地址,还可以叫做LVS集群的服务I ...
- 典型关联分析(CCA)原理总结
典型关联分析(Canonical Correlation Analysis,以下简称CCA)是最常用的挖掘数据关联关系的算法之一.比如我们拿到两组数据,第一组是人身高和体重的数据,第二组是对应的跑步能 ...
- 伪 alter 弹窗 +弹窗统一
你应该有遇到这种情况:alert() 在手机上面显示的时候 反正是不好看 有的时候就只看到一个白色的框 看不到提示信息 反正很反人类 这时候我觉得 马上会有产品跟你说 这个要改掉. 然后我就遇 ...
- 个人PE流程备忘
insmod memdisk linux16 /boot/memdisk iso raw initrd16 /iso/Win8PE.iso
- centos6.4、6.5、7.0环境下载及安装
centos6.4.6.5.7.0下载地址: http://www.cnblogs.com/zhwl/p/3657958.html或 http://www.linuxdown.net/CentOS/2 ...
- Ubuntu 16.04 搭建Android开发环境
1.Installing Java sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get inst ...
- windows 下安装mongodb及其配置环境
MongoDB的安装很简单,设置好安装路径后,一直Next直到安装结束,最大的坑就是MongoDB服务的安装,下面具体说下MongoDB安装之后的一些配置操作 一.下载 首先到官网(http://ww ...
- 【锋利的Jquery】读书笔记五
jquery表单 表格操作 表单从基本的得到和失去焦点表单验证 <script type="text/javascript"> $(function(){ $(&quo ...