您的位置:首页 > 运维架构 > Tomcat

JSVC启动Tomcat

2015-07-27 15:54 274 查看

What is JSVC?

Jsvc is a set of libraries and applications for making Java applications run on UNIX more easily. Jsvc allows the application (e.g. Tomcat) to perform some privileged operations as root (e.g. bindto a port < 1024), and then switch identity to a non-privileged user.

使用jsvc管理Tomcat的运行,相比使用其他方式最大的优势是可以使Tomcat以root身份做一些非root身份做不了的事,例如绑定端口到小与1024的端口,例如80。

通常为了安全考虑,linux服务器上运行Tomcat程序的进程其身份均不为root,这为Tomcat的正常使用带来了一些限制,使用jsvc恰好可以弥补这些限制带来的不足。

Using jsvc

在$CATALINA_HOME/bin中有commons-daemon-native.tar.gz,进入bin目录并解压

[root@sw ~]# ar zxvf commons-daemon-native.tar.gz

[root@sw ~]# cd commons-daemon-1.0.2-native-src/unix

[root@sw ~]# ./configure && make

编译完成后出现jsvc文件,复制jsvc到$CATALINA_HOME/bin目录下面

[root@sw ~]# cp jsvc ../../

为了方便受用,在/etc/init.d/目录下编写tomcat启动服务配置文件

[root@sw ~]#cd /etc/init.d/

[root@sw ~]#vi tomcat

下面贴出示例,复制并做本地化修改后即可使用

在$CATALINA_HOME/bin中有commons-daemon-native.tar.gz,进入bin目录并解压
[root@sw ~]# ar zxvf commons-daemon-native.tar.gz
[root@sw ~]# cd commons-daemon-1.0.2-native-src/unix
[root@sw ~]# ./configure && make
编译完成后出现jsvc文件,复制jsvc到$CATALINA_HOME/bin目录下面
[root@sw ~]# cp jsvc ../../
为了方便受用,在/etc/init.d/目录下编写tomcat启动服务配置文件。
[root@sw ~]#cd /etc/init.d/
[root@sw ~]#vi tomcat

#!/bin/sh

# Small shell script to show how to start/stop Tomcat using jsvc
#########根据自己的实际jdk位置来修改#############
JAVA_HOME=/usr/local/jdk1.7.0_51
################Tomcat安装程序配置##############
CATALINA_HOME=/usr/local/apache-tomcat-7.0.62
DAEMON_HOME=$CATALINA_HOME/bin
################指定运行实力账户################
TOMCAT_USER=sandwish

######################实例配置#######################################
CATALINA_BASE=/usr/local/apache-tomcat-7.0.62-ins/instance
TMP_DIR=$CATALINA_BASE/temp
PID_FILE=$CATALINA_BASE/jsvc.pid
CATALINA_OPTS=
JAVA_OPTS='-Xms128m -Xmx512m -XX:MaxNewSize=128m -XX:MaxPermSize=256m'
######################实例配置########################################

##################加载类库##############
. /etc/rc.d/init.d/functions
CLASSPATH=\
$JAVA_HOME/lib/tools.jar:\
$CATALINA_HOME/bin/commons-daemon.jar:\
$CATALINA_HOME/bin/bootstrap.jar:\
$CATALINA_HOME/bin/tomcat-juli.jar
##################加载类库##############

start() {
$DAEMON_HOME/catalina.sh version |grep version
# If you want to specify a user to run Tomcat.
#increase the 'user $ TOMCAT_USER \' to the parameter list.
$DAEMON_HOME/jsvc \
-home $JAVA_HOME \
-user $TOMCAT_USER \
-Dcatalina.home=$CATALINA_HOME \
-Dcatalina.base=$CATALINA_BASE \
-Djava.io.tmpdir=$TMP_DIR \
-wait 10 \
-pidfile $PID_FILE \
-outfile $CATALINA_BASE/logs/catalina.out \
-errfile '&1' \
$CATALINA_OPTS \
$JAVA_OPTS \
-cp $CLASSPATH \
org.apache.catalina.startup.Bootstrap
echo "start*****************************[ok]"
}

stop() {
$DAEMON_HOME/catalina.sh version |grep version
#
$DAEMON_HOME/jsvc \
-stop \
-pidfile $PID_FILE \
org.apache.catalina.startup.Bootstrap
echo "stop*****************************[ok]"
}

status() {
ps ax --width=1000 | grep "[o]rg.apache.catalina.startup.Bootstrap" | awk '{printf $1 " "}' | wc | awk '{print $2}' >tomcat_process_count.txt
read line < tomcat_process_count.txt
if [ $line -gt 0 ]; then
$DAEMON_HOME/catalina.sh version |grep version
echo -n  " ( pid "
ps ax --width=1000 | grep "[o]rg.apache.catalina.startup.Bootstrap" | awk '{printf $1 " "}'
echo ") is running                             "
else
$DAEMON_HOME/catalina.sh version |grep version
echo " is stopped"
fi
}

case "$1" in
start)
# Start Tomcat
start
exit $?
;;

stop)
# Stop Tomcat
stop
exit $?
;;
restart)
# Restart Tomcat
stop
sleep 3
start
exit $?
;;
status)
status
exit $?
;;
*)
echo "Usage: Tomcat7 {start|stop|restart|status}"
exit 1;;
esac

#####

####
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: