[置顶] centos安装tomcat设置开机启动

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   

你可能感兴趣的:(tomcat,centos,tomcat开机启动)