同一個tomcat啟動多個實例


一般在使用Tomcat時,服務器會從conf及webapps目錄中讀取配置文件,並將文件寫入logs、temp和work目錄,當然一些jar文件和class文件需要從服務器的公共目錄樹中予以加載。因此,為了讓多個實例能同時運行,每一個Tomcat實例都必須有自己的目錄集

首先下載安裝tomcat,這里jdk的安裝就不提了

tar xf apache-tomcat-8.5.16.tar.gz -C /usr/local

然后,創建一個文件夾tomcat-instance(該文件夾用於存放tomcat所有實例),並在這個文件夾下分別創建tomcat1和tomcat2兩個實例文件夾:

[root@wadeson local]# ll
drwxr-xr-x. 9 root root 4096 8月 9 15:24 apache-tomcat-8.5.16

drwxr-xr-x.  4 root root 4096 8月   9 15:38 tomcat-instance

cd tomcat-instance

mkdir tomcat1 tomcat2

cd tomcat1然后拷貝需要的一些目錄

cp -a /usr/local/apache-tomcat-8.5.16/conf  ./

創建一些必須的工作和應用目錄:mkdir logs webapps work temp

[root@wadeson tomcat1]# ll
總用量 20
drwx------. 3 root root 4096 8月 9 15:41 conf
drwxr-xr-x. 2 root root 4096 8月 9 15:31 logs
drwxr-xr-x. 2 root root 4096 8月 9 15:26 temp
drwxr-xr-x. 8 root root 4096 8月 9 15:45 webapps
drwxr-xr-x. 3 root root 4096 8月 9 15:40 work

修改tomcat1實例下面的server.xml,因為各實例必須使用不同的端口

<Server port="8012" shutdown="SHUTDOWN">

<Connector port="8081" protocol="HTTP/1.1"

<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />

<Host name="localhost"  appBase="/usr/local/tomcat-instance/tomcat1/webapps"

<Context path="" docBase="ROOT" reloadable="true"/>

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="/usr/local/tomcat-instance/tomcat1/logs"

然后去創建相應的目錄:mkdir classes lib META-INF WEB-INF

 

[root@wadeson webapps]# pwd
/usr/local/tomcat-instance/tomcat1/webapps

[root@wadeson webapps]# ll
總用量 24
drwxr-xr-x. 2 root root 4096 8月 9 15:45 classes
drwxr-xr-x. 2 root root 4096 8月 9 15:45 lib
drwxr-xr-x. 2 root root 4096 8月 9 15:45 META-INF
drwxr-xr-x. 2 root root 4096 8月 9 15:44 myapp
drwxr-xr-x. 2 root root 4096 8月 9 15:40 ROOT
drwxr-xr-x. 2 root root 4096 8月 9 15:45 WEB-INF

在myapp和ROOT目錄下面分別有index.jsp文件

最后為實例tomcat1創建start和stop腳本

[root@wadeson tomcat-instance]# cat start-tomcat1.sh
#!/bin/bash
export CATALINA_HOME=/usr/local/apache-tomcat-8.5.16
export CATALINA_BASE=/usr/local/tomcat-instance/tomcat1           指的是實例名,如果只有一個就和home變量一樣
cd ${CATALINA_HOME}
./bin/catalina.sh start

[root@wadeson tomcat-instance]# cat stop-tomcat1.sh
#!/bin/bash
export CATALINA_HOME=/usr/local/apache-tomcat-8.5.16
export CATALINA_BASE=/usr/local/tomcat-instance/tomcat1
cd ${CATALINA_HOME}
./bin/catalina.sh stop

chmod +x start-tomcat1.sh stop-tomcat1.sh

然后啟動實例tomcat1:

[root@wadeson tomcat-instance]# sh start-tomcat1.sh
Using CATALINA_BASE: /usr/local/tomcat-instance/tomcat1        這里則是tomcat實例名
Using CATALINA_HOME: /usr/local/apache-tomcat-8.5.16
Using CATALINA_TMPDIR: /usr/local/tomcat-instance/tomcat1/temp
Using JRE_HOME: /usr/java/latest
Using CLASSPATH: /usr/local/apache-tomcat-8.5.16/bin/bootstrap.jar:/usr/local/apache-tomcat-8.5.16/bin/tomcat-juli.jar
Tomcat started.

[root@wadeson tomcat-instance]# netstat -tunlp
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:22 0.0.0.0:* LISTEN 14669/sshd
tcp 0 0 ::ffff:127.0.0.1:8012 :::* LISTEN 6752/java
tcp 0 0 :::8081 :::* LISTEN 6752/java
tcp 0 0 :::22 :::* LISTEN 14669/sshd
tcp 0 0 :::8010 :::* LISTEN 6752/java

訪問網站:

 

 創建tomcat2實例:

cd tomcat2

[root@wadeson tomcat2]# cp -a /usr/local/apache-tomcat-8.5.16/conf ./
[root@wadeson tomcat2]# ll
總用量 4
drwx------. 2 root root 4096 6月 22 01:02 conf

[root@wadeson tomcat2]# mkdir logs webapps work temp
[root@wadeson tomcat2]# ll
總用量 20
drwx------. 2 root root 4096 6月 22 01:02 conf
drwxr-xr-x. 2 root root 4096 8月 9 16:12 logs
drwxr-xr-x. 2 root root 4096 8月 9 16:12 temp
drwxr-xr-x. 2 root root 4096 8月 9 16:12 webapps
drwxr-xr-x. 2 root root 4096 8月 9 16:12 work

[root@wadeson webapps]# mkdir ROOT WEB-INF META-INF classes lib tomcat2_app
[root@wadeson webapps]# ll
總用量 24
drwxr-xr-x. 2 root root 4096 8月 9 16:15 classes
drwxr-xr-x. 2 root root 4096 8月 9 16:15 lib
drwxr-xr-x. 2 root root 4096 8月 9 16:15 META-INF
drwxr-xr-x. 2 root root 4096 8月 9 16:15 ROOT
drwxr-xr-x. 2 root root 4096 8月 9 16:15 tomcat2_app
drwxr-xr-x. 2 root root 4096 8月 9 16:15 WEB-INF

修改server.xml:

<Server port="8013" shutdown="SHUTDOWN">

<Connector port="8082" protocol="HTTP/1.1"

<Connector port="8011" protocol="AJP/1.3" redirectPort="8443" />

<Host name="localhost"  appBase="/usr/local/tomcat-instance/tomcat2/webapps"

<Context path="" docBase="ROOT" reloadable="true" />

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="/usr/local/tomcat-instance/tomcat2/logs"

創建實例tomcat2啟動和停止腳本:

 

[root@wadeson tomcat-instance]# cat start-tomcat2.sh
#!/bin/bash
export CATALINA_HOME=/usr/local/apache-tomcat-8.5.16
export CATALINA_BASE=/usr/local/tomcat-instance/tomcat2
cd ${CATALINA_HOME}
./bin/catalina.sh start

[root@wadeson tomcat-instance]# cat stop-tomcat2.sh
#!/bin/bash
export CATALINA_HOME=/usr/local/apache-tomcat-8.5.16
export CATALINA_BASE=/usr/local/tomcat-instance/tomcat2
cd ${CATALINA_HOME}
./bin/catalina.sh stop

啟動tomcat2實例:

[root@wadeson tomcat-instance]# sh start-tomcat2.sh
Using CATALINA_BASE: /usr/local/tomcat-instance/tomcat2
Using CATALINA_HOME: /usr/local/apache-tomcat-8.5.16
Using CATALINA_TMPDIR: /usr/local/tomcat-instance/tomcat2/temp
Using JRE_HOME: /usr/java/latest
Using CLASSPATH: /usr/local/apache-tomcat-8.5.16/bin/bootstrap.jar:/usr/local/apache-tomcat-8.5.16/bin/tomcat-juli.jar
Tomcat started.

[root@wadeson tomcat-instance]# netstat -tunlp
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:22 0.0.0.0:* LISTEN 14669/sshd
tcp 0 0 :::8011 :::* LISTEN 6866/java
tcp 0 0 ::ffff:127.0.0.1:8012 :::* LISTEN 6752/java
tcp 0 0 ::ffff:127.0.0.1:8013 :::* LISTEN 6866/java
tcp 0 0 :::8081 :::* LISTEN 6752/java
tcp 0 0 :::8082 :::* LISTEN 6866/java
tcp 0 0 :::22 :::* LISTEN 14669/sshd
tcp 0 0 :::8010 :::* LISTEN 6752/java
udp 0 0 0.0.0.0:68 0.0.0.0:* 1780/dhclient

訪問網站:

至此多實例的tomcat就部署完成了

當把Web應用的文件和Tomcat發行版的文件分開管理后,升級Tomcat將會變得十分容易,因為我們可以用新目錄直接替換整個Tomcat發行版的目錄。(升級替換tomcat版本目錄就行,替換webapps應用就行)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM