在生產中,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的方式運行了。