在 Debian 上部署 Tomcat Web 应用
一 准备环境
sudo apt update && sudo apt install -y openjdk-11-jdkjava -versionsudo groupadd tomcat && sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat二 安装与配置 Tomcat
wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.56/bin/apache-tomcat-9.0.56.tar.gzsudo tar xvf apache-tomcat-9.0.56.tar.gz -C /optsudo mv /opt/apache-tomcat-9.0.56 /opt/tomcat$CATALINA_HOME/bin/setenv.sh 中配置):
sudo nano /opt/tomcat/bin/setenv.shexport JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64export CATALINA_HOME=/opt/tomcatsudo chown -R tomcat:tomcat /opt/tomcat三 以 systemd 管理 Tomcat(推荐)
sudo nano /etc/systemd/system/tomcat.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/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/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 tomcat && sudo systemctl enable tomcatsudo systemctl status tomcat 或 curl http://localhost:8080$CATALINA_HOME/bin/startup.sh 与 shutdown.sh 脚本进行启停(适合测试)。四 部署 Web 应用
sudo cp your-app.war /opt/tomcat/webapps/http://<服务器IP>:8080/your-app$CATALINA_HOME/conf/Catalina/localhost/ 创建文件 myapp.xml:
<Context docBase="/path/to/your-app.war" reloadable="true"/>http://<服务器IP>:8080/myapp$CATALINA_HOME/conf/tomcat-users.xml,添加角色与用户:
<tomcat-users>
<role rolename="manager-gui"/>
<user username="admin" password="StrongPass!2025" roles="manager-gui"/>
</tomcat-users>
http://<服务器IP>:8080/manager/html 上传并部署 WAR。五 网络与安全配置
sudo ufw allow 8080/tcptail -f /opt/tomcat/logs/catalina.outwebapps 下的 WAR 文件或更新 Catalina/localhost/*.xml 后自动生效(取决于 reloadable 设置)。