在Debian上部署多个Tomcat实例可以通过以下步骤实现。每个实例将运行在不同的端口和目录中,以确保它们不会相互干扰。
首先,下载你需要的Tomcat版本并解压到不同的目录中。
wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.56/bin/apache-tomcat-9.0.56.tar.gz
tar -xvzf apache-tomcat-9.0.56.tar.gz -C /opt
重复上述步骤以下载并解压其他版本的Tomcat。
为每个Tomcat实例设置不同的环境变量。
# Tomcat 1
export CATALINA_BASE=/opt/apache-tomcat-9.0.56
export CATALINA_HOME=/opt/apache-tomcat-9.0.56
export PATH=$PATH:$CATALINA_HOME/bin
# Tomcat 2
export CATALINA_BASE_2=/opt/apache-tomcat-9.0.57
export CATALINA_HOME_2=/opt/apache-tomcat-9.0.57
export PATH=$PATH:$CATALINA_HOME_2/bin
编辑每个Tomcat实例的conf/server.xml
文件,更改HTTP和AJP端口。
nano /opt/apache-tomcat-9.0.56/conf/server.xml
找到以下行并更改端口号:
<Server port="8005" shutdown="SHUTDOWN">
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
...
</Service>
</Server>
nano /opt/apache-tomcat-9.0.57/conf/server.xml
找到相同的行并更改端口号:
<Server port="8105" shutdown="SHUTDOWN">
<Service name="Catalina">
<Connector port="8180" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8543" />
<Connector port="8109" protocol="AJP/1.3" redirectPort="8543" />
...
</Service>
</Server>
编辑conf/tomcat-users.xml
文件,为每个实例配置不同的用户。
nano /opt/apache-tomcat-9.0.56/conf/tomcat-users.xml
添加用户:
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="admin1" password="admin1" roles="manager-gui,admin-gui"/>
</tomcat-users>
nano /opt/apache-tomcat-9.0.57/conf/tomcat-users.xml
添加用户:
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="admin2" password="admin2" roles="manager-gui,admin-gui"/>
</tomcat-users>
使用以下命令启动每个Tomcat实例:
# Tomcat 1
/opt/apache-tomcat-9.0.56/bin/startup.sh
# Tomcat 2
/opt/apache-tomcat-9.0.57/bin/startup.sh
打开浏览器并访问以下URL以验证每个Tomcat实例是否正常运行:
http://your_server_ip:8080
http://your_server_ip:8180
确保防火墙允许访问这些端口。
sudo ufw allow 8080/tcp
sudo ufw allow 8180/tcp
sudo ufw reload
通过以上步骤,你可以在Debian上成功部署多个Tomcat实例。每个实例将运行在不同的端口和目录中,并且可以通过不同的URL访问。