在Linux上部署多个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实例设置不同的环境变量。
export CATALINA_HOME_1=/opt/apache-tomcat-9.0.56
export CATALINA_HOME_2=/opt/apache-tomcat-9.0.57
复制Tomcat目录以便创建多个实例。
cp -r $CATALINA_HOME_1 $CATALINA_HOME_2
编辑每个实例的conf/server.xml文件,修改以下端口号:
例如,对于第二个实例:
sed -i 's/8080/8081/g' $CATALINA_HOME_2/conf/server.xml
sed -i 's/8443/8444/g' $CATALINA_HOME_2/conf/server.xml
sed -i 's/8009/8010/g' $CATALINA_HOME_2/conf/server.xml
为每个实例配置不同的JVM参数。编辑bin/catalina.sh文件,在文件开头添加以下内容:
对于第一个实例:
CATALINA_OPTS="-Xms512m -Xmx1024m -Djava.awt.headless=true"
对于第二个实例:
CATALINA_OPTS="-Xms256m -Xmx512m -Djava.awt.headless=true"
使用startup.sh脚本来启动每个Tomcat实例。
$CATALINA_HOME_1/bin/startup.sh
$CATALINA_HOME_2/bin/startup.sh
检查每个Tomcat实例的运行状态。
$CATALINA_HOME_1/bin/catalina.sh version
$CATALINA_HOME_2/bin/catalina.sh version
确保防火墙允许新的端口号通过。
sudo firewall-cmd --zone=public --add-port=8081/tcp --permanent
sudo firewall-cmd --zone=public --add-port=8444/tcp --permanent
sudo firewall-cmd --zone=public --add-port=8010/tcp --permanent
sudo firewall-cmd --reload
为了更方便地管理Tomcat服务,可以创建systemd服务文件。
创建第一个实例的服务文件:
sudo nano /etc/systemd/system/tomcat1.service
添加以下内容:
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
Environment=CATALINA_PID=/opt/apache-tomcat-9.0.56/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/apache-tomcat-9.0.56
Environment=CATALINA_BASE=/opt/apache-tomcat-9.0.56
Environment='CATALINA_OPTS=-Xms512m -Xmx1024m -Djava.awt.headless=true'
Environment='JAVA_OPTS=-Djava.awt.headless=true'
ExecStart=/opt/apache-tomcat-9.0.56/bin/startup.sh
ExecStop=/opt/apache-tomcat-9.0.56/bin/shutdown.sh
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
创建第二个实例的服务文件:
sudo nano /etc/systemd/system/tomcat2.service
添加以下内容:
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
Environment=CATALINA_PID=/opt/apache-tomcat-9.0.57/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/apache-tomcat-9.0.57
Environment=CATALINA_BASE=/opt/apache-tomcat-9.0.57
Environment='CATALINA_OPTS=-Xms256m -Xmx512m -Djava.awt.headless=true'
Environment='JAVA_OPTS=-Djava.awt.headless=true'
ExecStart=/opt/apache-tomcat-9.0.57/bin/startup.sh
ExecStop=/opt/apache-tomcat-9.0.57/bin/shutdown.sh
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable tomcat1
sudo systemctl start tomcat1
sudo systemctl enable tomcat2
sudo systemctl start tomcat2
通过以上步骤,你可以在Linux上成功部署多个Tomcat实例。每个实例将运行在不同的端口上,并且可以有不同的配置和应用程序。