在Debian上部署多个Tomcat实例需要遵循以下步骤:
wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.56/bin/apache-tomcat-9.0.56.tar.gz
sudo tar -xvzf apache-tomcat-9.0.56.tar.gz -C /opt/tomcat9_instance1
sudo tar -xvzf apache-tomcat-9.0.56.tar.gz -C /opt/tomcat9_instance2
sudo nano /etc/profile.d/tomcat9_instance1.sh
在文件中添加以下内容:
export CATALINA_HOME=/opt/tomcat9_instance1/apache-tomcat-9.0.56
export PATH=$PATH:$CATALINA_HOME/bin
保存并退出。然后运行以下命令使环境变量生效:
source /etc/profile.d/tomcat9_instance1.sh
对第二个实例执行相同的操作,只需将文件名更改为tomcat9_instance2.sh,并将路径更改为/opt/tomcat9_instance2/apache-tomcat-9.0.56。
conf/server.xml文件,以确保它们使用不同的端口。例如,对于第一个实例:sudo nano /opt/tomcat9_instance1/apache-tomcat-9.0.56/conf/server.xml
更改以下端口:
8080更改为其他端口,例如8081。8009更改为其他端口,例如8010。8005更改为其他端口,例如8006。对第二个实例执行相同的操作,只需将路径更改为/opt/tomcat9_instance2/apache-tomcat-9.0.56/conf/server.xml,并将端口号更改为其他可用端口。
sudo nano /etc/systemd/system/tomcat9_instance1.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/tomcat9_instance1/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat9_instance1/apache-tomcat-9.0.56
Environment=CATALINA_BASE=/opt/tomcat9_instance1/apache-tomcat-9.0.56
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
ExecStart=/opt/tomcat9_instance1/apache-tomcat-9.0.56/bin/startup.sh
ExecStop=/opt/tomcat9_instance1/apache-tomcat-9.0.56/bin/shutdown.sh
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
保存并退出。然后运行以下命令以创建服务:
sudo systemctl daemon-reload
sudo systemctl start tomcat9_instance1
对第二个实例执行相同的操作,只需将文件名更改为tomcat9_instance2.service,并将路径更改为/opt/tomcat9_instance2/apache-tomcat-9.0.56/conf/server.xml,同时更改端口号。
sudo systemctl enable tomcat9_instance1
sudo systemctl enable tomcat9_instance2
至此,你已经在Debian上成功部署了多个Tomcat实例。可以通过访问http://your_server_ip:port来验证每个实例是否正常运行。