在生产中,tomcat应该以daemon的模式运行,并且若是须要以普通用户的身份启动tomcat,那么就不能使用1024如下的端口,这是Liunx系统的限制,只有root用户才能使用小于1024的端口。那么该如何将tomcat配置成服务呢?接下来,咱们就来聊一聊jsvc这个东东。
jsvc是什么,简单的讲,它就是一个C程序,是tomcat发行版中自带的一套代码,路径在tomcat/bin/commons-daemon-native.tar.gz中。有了jsvc,咱们就能够简单的定制tomcat的启动脚本使tomcat成为服务,指定tomcat运行时的用户和组,还能够定制一些jvm的参数等等,废话很少说,下面开始实战配置:html
系统版本:java
[root@tomcat ~]# cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core)
内核版本:linux
[root@tomcat ~]# uname -r 3.10.0-514.el7.x86_64
jdk版本:apache
java version "1.8.0_144"
tomcat版本:浏览器
apache-tomcat-8.5.20
下载JDK,为了和线上环境保持一致,这里使用jdk1.8版本的。下载连接:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
我这里提早下好了jdk,因此就直接安装了。tomcat
[root@tomcat ~]# cd soft/ [root@tomcat soft]# tar xf jdk-8u144-linux-x64.tar.gz -C /opt/ #解压到opt目录下 [root@tomcat soft]# cd /opt/ [root@tomcat opt]# ln -sv jdk1.8.0_144/ jdk #建立软连接 ‘jdk’ -> ‘jdk1.8.0_144/’
配置环境变量,编辑/etc/profile.d/java.sh,添加以下内容:oracle
export JAVA_HOME=/opt/jdk export PATH=$JAVA_HOME/bin:$PATH
运行生效:ssh
[root@tomcat ~]# . /etc/profile.d/java.sh
查看版本信息:jvm
[root@tomcat ~]# java -version java version "1.8.0_144" Java(TM) SE Runtime Environment (build 1.8.0_144-b01) Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
出现版本信息代表,jdk安装完成。tcp
tomcat下载地址:https://tomcat.apache.org/download-80.cgi 这里用tomcat8版本。
添加www用户:
[root@tomcat soft]# useradd www
解压tomcat到/opt/下:
[root@tomcat soft]# tar xf apache-tomcat-8.5.20.tar.gz -C /opt/ [root@tomcat opt]# ln -sv apache-tomcat-8.5.20/ tomcat ‘tomcat’ -> ‘apache-tomcat-8.5.20/’ #建立软连接 [root@tomcat opt]# chown -R www.www tomcat/ #更改权限
配置环境变量,编辑/etc/profile.d/catalina.sh,添加以下内容:
export CATALINA_HOME=/opt/tomcat export CATALINA_BASE=/opt/tomcat
运行生效:
[root@tomcat ~]# . /etc/profile.d/catalina.sh
进入tomcat下面的bin目录:
[root@tomcat ~]# cd /opt/tomcat/bin/ [root@tomcat bin]# tar xf commons-daemon-native.tar.gz [root@tomcat bin]# cd commons-daemon-1.0.15-native-src/unix/ [root@tomcat unix]# ./configure --with-java=$JAVA_HOME ... *** All done *** Now you can issue "make" [root@tomcat unix]# make
编译完成后,会在当前文件夹生成一个jsvc的文件,将它拷贝到/opt/tomcat/bin/下:
[root@tomcat unix]# cp jsvc /opt/tomcat/bin/
bin目录下有个daemon.sh,这个是tomcat服务的启动脚本,将它复制到/etc/init.d/下:
[root@tomcat bin]# cp daemon.sh /etc/init.d/tomcat
而后咱们须要对启动脚本作下改动:
# chkconfig: 2345 25 85 #添加到头部,这是服务配置信息 # description: Tomcat daemon project JAVA_HOME=/opt/jdk #配置环境变量 CATALINA_HOME=/opt/tomcat ... test ".$TOMCAT_USER" = . && TOMCAT_USER=www #将tomcat用户改成www
添加服务:
[root@tomcat ~]# chkconfig --add tomcat [root@tomcat ~]# chkconfig --list tomcat Note: This output shows SysV services only and does not include native systemd services. SysV configuration data might be overridden by native systemd configuration. If you want to list systemd services use 'systemctl list-unit-files'. To see services enabled on particular target use 'systemctl list-dependencies [target]'. tomcat 0:off 1:off 2:on 3:on 4:on 5:on 6:off
启动服务:
[root@tomcat ~]# service tomcat start [root@tomcat ~]# netstat -tnlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 2626/jsvc.exec tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 862/sshd tcp 0 0 0.0.0.0:8009 0.0.0.0:* LISTEN 2626/jsvc.exec
打开浏览器就能够访问了。至此,tomcat就能够以daemon的方式运行了。