Jsvc是專為Java應(yīng)用程序開發(fā)的一個(gè)工具包,其目標(biāo)是把Java應(yīng)用程序的普通運(yùn)行轉(zhuǎn)換為以Unix守護(hù)進(jìn)程的方式運(yùn)行。這樣的話,可以很方便地啟動(dòng)/停止應(yīng)用程序。Tomcat安裝包的bin子目錄下就包含了Jsvc工具包的源碼,整個(gè)建立過程很方便,如下。
本文的腳本以Tomcat 8.0.27,CentOS 7為例。假定我的Java 8安裝到/opt/jdk8處。
$ cd /opt/tomcat8/bin$ sudo tar zvxf commons-daemon-native.tar.gz$ cd commons-daemon-1.0.15-native-src/unix$ sudo ./configure --with-java=/opt/jdk8$ sudo make$ sudo cp jsvc ../..
下面的命令會(huì)創(chuàng)建一個(gè)專門的用戶來運(yùn)行Tomcat實(shí)例,并會(huì)把/opt/tomcat目錄及其文件的所有權(quán)賦予新創(chuàng)建的tomcat用戶。
$ sudo useradd -r -s /sbin/nologin tomcat$ sudo chown -R tomcat: /opt/tomcat8
如果是CentOS系統(tǒng)(比如CentOS 7),按以下步驟進(jìn)行。
1)創(chuàng)建一個(gè)名為tomcat.service的系統(tǒng)服務(wù)腳本。
# vim /usr/lib/systemd/system/tomcat.service
2)添加以下內(nèi)容:
[Unit]Description=Apache Tomcat 8 Web Application ContainerAfter=network.target[Service]Type=forkingPIDFile=/var/run/tomcat.pidEnvironment=CATALINA_PID=/var/run/tomcat.pidEnvironment=JAVA_HOME=/opt/jdk8Environment=CATALINA_HOME=/opt/tomcat8Environment=CATALINA_BASE=/opt/tomcat8Environment=CATALINA_OPTS=ExecStart=/opt/tomcat/bin/jsvc -Dcatalina.home=${CATALINA_HOME} -Dcatalina.base=${CATALINA_BASE} -cp ${CATALINA_HOME}/bin/commons-daemon.jar:${CATALINA_HOME}/bin/bootstrap.jar:${CATALINA_HOME}/bin/tomcat-juli.jar -user tomcat -java-home ${JAVA_HOME} -pidfile /var/run/tomcat.pid -errfile SYSLOG -outfile SYSLOG $CATALINA_OPTS org.apache.catalina.startup.BootstrapExecStop=/opt/tomcat8/bin/jsvc -pidfile /var/run/tomcat.pid -stop org.apache.catalina.startup.Bootstrap[Install]WantedBy=multi-user.target
開發(fā)者可以修改CATALINA_OPTS選項(xiàng)以滿足自己的需要。
3)讓Tomcat服務(wù)在啟動(dòng)后就自動(dòng)運(yùn)行:
$ sudo systemctl enable /usr/lib/systemd/tomcat.serviceln -s '/usr/lib/systemd/tomcat.service' '/etc/systemd/system/multi-user.target.wants/tomcat.service'ln -s '/usr/lib/systemd/tomcat.service' '/etc/systemd/system/tomcat.service'
4)使用下面的命令啟動(dòng)、重啟、停止Tomcat服務(wù)
$ systemctl start tomcat$ systemctl stop tomcat$ systemctl restart tomcat$ systemctl status tomcat
防火墻打開8080端口
$ firewall-cmd --zone=public --add-port=8080/tcp --permanent$ firewall-cmd --reload
聯(lián)系客服