Tomcat用普通用户身份运行

在Linux下默认使用tomcat目录下bin/start.sh 脚本来启动tomcat,这样做简单,但是如果需要让tomcat监听在80端口就必须使用root用户来启动tomcat,这样在安全上存在风险,可以通过使用jsvc来启动tomcat。

参考资料

http://commons.apache.org/proper/commons-daemon/jsvc.html

版本说明
system: Red Hat Enterprise Linux Server release 5.5
Architecture: amd64
Tomcat Server version: Apache Tomcat/7.0.64
Java version: “1.7.0_60”

安装JDK或者JRE,过程略……

假设安装目录在 /usr/local/java
编辑
Tomcat安装过程略…

此处安装目录在 /usr/local/tomcat
编辑
配置以普通用户身份运行tomcat步骤:

1、安装jsvc

进入${CATALINA_BASE}/bin目录下
# cd /usr/local/tomcat/bin/
解压文件:
# tar xf commons-daemon-native.tar.gz
编译安装jsvc:

# cd commons-daemon-1.0.15-native-src/unix/
 # ./configure --with-java=/usr/local/java/
 # make

复制编译好的jsvc到${CATALINA_BASE}/bin/

# cp jsvc /usr/local/tomcat/bin/

2、创建setenv.sh

在${CATALINA_BASE}/bin/目录下

# vim setenv.sh
JAVA_HOME=/usr/local/java
TOMCAT_USER=tomcat
JSVC_OPTS='-jvm server'
JAVA_OPTS="-server -Xms2048M -Xmx2048M -Xverify:none -XX:PermSize=512M -XX:MaxPermSize=2048m -XX:NewSize=512m -Xmn1024m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=5 -XX:+CMSClassUnloadingEnabled"

3、创建运行tomcat用户,并授权:

# useradd -s /sbin/nologin -M tomcat
 # chown -R tomcat /usr/local/tomcat7

这里主要就是授权CATALINA_HOME/logs目录对tomcat执行用户具有写日志的权限,其他保持读就可以,安全起见,还是更改属主:

# chown -R tomcat /usr/local/tomcat

4、添加到开机启动项里:

# cp daemon.sh /etc/init.d/tomcat
# vim /etc/init.d/tomcat

在第二行添加:

# chkconfig: - 86 14
# description: Tomcat7 daemon
# processname: tomcat

定义CATALINA_HOME变量,不然重启后找不到执行程序;

#test “.$CATALINA_HOME” = . && CATALINA_HOME=`cd “$DIRNAME/..” >/dev/null; pwd`
test “.$CATALINA_HOME” = . && CATALINA_HOME=”/usr/local/tomcat”
或者不将daemon.sh拷贝到 /etc/init.d目录中,而是做一个软连接到 /etc/init.d/下这样脚本可以解析到tomcat的家目录,这样也就不用修改改脚本中的CATALINA_HOME为固定目录而是要原来的变量CATALINA_HOME=`cd “$DIRNAME/..” >/dev/null; pwd` 这的执行结果就是tomcat的家目录了。

#ln -s /usr/local/tomcat/bin/daemon.sh /etc/init.d/tomcat

5、启动服务:

# chkconfig --add tomcat
service tomcat start

6、命令用法:

Usage: tomcat ( commands ... )
commands:
run Start Tomcat without detaching from console
start Start Tomcat
stop Stop Tomcat
version What version of commons daemon and Tomcat
are you running?

发表评论