Centos下Tomcat以指定的用户,非root权限开机自启
安装tomcat
tomcat解压就能用 安装包可以从官网上下载。
[root@template tmp]# wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-7/v7.0.69/bin/apache-tomcat-7.0.69.tar.gz
解压
[root@template tmp]# tar -zxvf nginx-1.9.15.tar.gz -C /usr/local/
启动 注意这里我重命名了解压出来的文件夹名apache-tomcat-7.0.69为tomcat7
[root@template local]# mv apache-tomcat-7.0.69 tomcat7
[root@template bin]# cd /usr/local/tomcat7/bin/
[root@template bin]# ./startup.sh
关闭
[root@template bin]# ./shutdown.sh
设置开机启动root用户 建议看下面更新部分 Tomcat以指定的用户,非root权限开机自启
增加开机启动服务 从安装oracle开机启动学的 脚本比较low
具体编辑脚本
vim /etc/init.d/tomcat7 #创建新文件
tomcat7是我自己取得名字
#!/bin/bash
# oracle: Start/Stop tomcat7
# chkconfig: 345 90 10
# description: tomcat .
JAVA_HOME=/usr/local/jdk1.7.0_79
JRE_HOME=$JAVA_HOME/jre
. /etc/rc.d/init.d/functions
LOCKFILE=/var/lock/subsys/tomcat7flag
TOMCAT_HOME=/usr/local/tomcat7/
TOMCAT_USER=root
case "$1" in
'start')
if [ -f $LOCKFILE ]; then
echo $0 already running.
exit 1
fi
echo -n $"Starting tomcat! "
/usr/local/tomcat7/bin/startup.sh
touch $LOCKFILE
;;
'stop')
if [ ! -f $LOCKFILE ]; then
echo $0 already stopping.
exit 1
fi
echo -n $"Stopping tomcat! "
/usr/local/tomcat7/bin/shutdown.sh
rm -f $LOCKFILE
;;
'restart')
$0 stop
$0 start
;;
'status')
if [ -f $LOCKFILE ]; then
echo $0 started.
else
echo $0 stopped.
fi
;;
*)
echo "Usage: $0 [start|stop|status]"
exit 1
esac
exit 0
修改/etc/init.d/tomcat7服务文件权限
[root@CentOS init.d]# chmod 755 /etc/init.d/tomcat7
#chkconfig --add tomcat7
说明 如果脚本没写好 可能出现
service myservice does not support chkconfig
解决办法
添加下面两句到 #!/bin/bash 之后。
# chkconfig: 2345 10 90
# description: myservice ....
设置为开机启动
如果提示
[root@template sbin]# service tomcat7 stop
Stopping tomcat! Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program
tomcat中需要做如下修改
vim /usr/local/tomcat7/bin/startup.sh
添加如下环境变量
export JAVA_HOME=/usr/local/jdk1.7.0_79
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
export PATH=$PATH:$JAVA_HOME/bin
export CATALINA_HOME=/usr/local/tomcat7
[root@CentOS ~]# chkconfig tomcat7 on
进行service tomcat7 start/stop/restart测试
还有一种简单的办法 直接在启动文件中加启动命令
在/etc/rc.d/rc.local中加入:
/usr/local/tomcat7/bin/startup.sh
Tomcat以指定的用户,非root权限开机自启
2016年5月29日16:44:25 更新 tomcat非root运行
以上安装无法指定启动Tomcat服务的用户,会导致Tomcat以超级用户运行,存在重大的安全隐患!
在Linux下,Tomcat可以作为一个守护进程来启动以及停止,这个必须借助于项目commons-daemon中的jsvc工具。Tomcat安装完后就带有这个工具的源码{tomcat}/bin/下。按照下列命令安装这个工具:
[root@template ~]# cd /usr/local/tomcat7/bin/
[root@template bin]# tar -zxvf commons-daemon-native.tar.gz
#解压出来文件名commons-daemon-1.0.15-native-src
[root@template unix]#cd
/usr/local/tomcat7/bin/commons-daemon-1.0.15-native-src/unix
#自己的java home echo $JAVA_HOME可以查看到,如没有请先配置参考上篇centos搭建java环境
[root@template unix]# ./configure --with-java=/usr/local/jdk1.7.0_79
[root@template unix]# make
#make后,会在当前文件夹下生成一个名为 jsvc 的文件,将其复制到/bin目录
[root@template unix]# cp jsvc /usr/local/tomcat7/bin/
#删掉我之前useradd建的tomcat7用户
[root@template ~]# userdel -r tomcat7
#添加一个用来运行Tomcat的用户,不允许登录
[root@template ~]# useradd tomcat7 -M -d / -s /usr/sbin/nologin
#回到/bin目录下
[root@template unix]# cd /usr/local/tomcat7/bin/
#接下来便是修改/bin目录下的 daemon.sh 文件
vim daemon.sh
#脚本开始添加
TOMCAT_USER=tomcat7
JAVA_HOME=/usr/local/jdk1.7.0_79
#赋予执行权限 之前复制过来的jsvc所有者还是root所以这步建议靠后执行
[root@template bin]# chown -R tomcat7:tomcat7 /usr/local/tomcat7/
#启动一下
[root@template bin]# ./daemon.sh start
看看有没有正常启动
[root@template bin]# netstat -lnp |grep 8080
tcp 0 0 :::8080 :::* LISTEN 3208/jsvc.exec
#也可以这样看一下 注:之前配了nginx代理到8080端口 如没有需加127.0.0.1:8080得到的应该是tomcat主页
[root@template bin]# curl 127.0.0.1
启动成功然后需要设置Tomcat为Service
创建 $CATALINA_HOME/bin/daemon.sh 的一个链接到 /etc/init.d/ 下,service名为tomcat7
注意这里之前我配置过一个自启动的先删掉,有点舍不得 还是移到备份目录
[root@template bin]# mkdir /home/backupFiles
[root@template bin]# mv /etc/init.d/tomcat7 /home/backupFiles/
[root@template bin]# ln -s /usr/local/tomcat7/bin/daemon.sh /etc/init.d/tomcat7
#试一试 结果正常
[root@template bin]# service tomcat7 stop
添加到chkconfig
[root@template bin]# chkconfig --list |grep tomcat
[root@template bin]# chkconfig --add tomcat7
service tomcat7 does not support chkconfig
有经验了,修改脚本就好了 参考上篇centos服务器配置java环境
增加开机启动服务 部分
vim /etc/init.d/tomcat7
添加下面两句到 #!/bin/bash 之后。
# chkconfig: 2345 10 90
# description: myservice ....
再次执行添加,成功后设置开机启动。重启验证一下
[root@template bin]# chkconfig --add tomcat7
[root@template bin]# chkconfig tomcat7 on
[root@template bin]# reboot
#搞定,收工!
[root@template ~]# netstat -lnp |grep 8080
tcp 0 0 :::8080 :::* LISTEN 1445/jsvc.exec