温馨提示×

Debian系统如何部署JSP应用

小樊
36
2025-11-19 02:57:28
栏目: 编程语言

在 Debian 上部署 JSP 应用的标准流程


一 准备环境

  • 更新系统并安装 OpenJDK 11(或更高 LTS 版本):
    • 命令:sudo apt update && sudo apt install -y openjdk-11-jdk
    • 验证:java -version
  • 可选:设置全局环境变量(便于 Tomcat 识别 Java)
    • 编辑:sudo nano /etc/environment
    • 添加:JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
    • 生效:source /etc/environment
  • 说明:JSP 运行依赖 Servlet 容器(如 Apache Tomcat),Tomcat 9 与 Java 8+ 兼容,生产常用 Java 11

二 安装与运行 Tomcat

  • 方式 A(APT 仓库,推荐)
    • 安装:sudo apt install -y tomcat9
    • 管理:sudo systemctl start|stop|restart|status tomcat9
    • 说明:APT 安装会自动创建系统服务,适合快速上线与系统化管理。
  • 方式 B(官方二进制包,便于多实例与自定义)
    • 下载与解压(示例为 Tomcat 9.0.76):
      • wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.76/bin/apache-tomcat-9.0.76.tar.gz
      • sudo tar -zxvf apache-tomcat-9.0.76.tar.gz -C /opt
      • sudo ln -s /opt/apache-tomcat-9.0.76 /opt/tomcat
    • 创建专用用户与权限:
      • sudo groupadd --system tomcat
      • sudo useradd -s /usr/sbin/nologin -g tomcat -d /opt/tomcat tomcat
      • sudo chown -R tomcat:tomcat /opt/tomcat
      • sudo chmod -R 755 /opt/tomcat/conf /opt/tomcat/logs /opt/tomcat/temp /opt/tomcat/webapps
    • 配置 systemd 服务(/etc/systemd/system/tomcat.service):
      [Unit]
      Description=Apache Tomcat Web Application Container
      After=network.target
      
      [Service]
      Type=forking
      User=tomcat
      Group=tomcat
      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
      Restart=on-failure
      
      [Install]
      WantedBy=multi-user.target
      
    • 启动与开机自启:
      • sudo systemctl daemon-reload
      • sudo systemctl enable --now tomcat
  • 访问测试:浏览器打开 http://服务器IP:8080,出现 Tomcat 欢迎页即成功。

三 部署 JSP 应用

  • 打包与放置
    • 将应用打包为 WAR(例如:myapp.war),复制到 Tomcat 的 webapps 目录:
      • sudo cp myapp.war /opt/tomcat/webapps/
    • Tomcat 会自动解压并部署,应用默认上下文路径为 /myapp
  • 三种常见部署方式(任选其一)
    • 自动部署:将 WAR 放入 webapps,或使用目录拷贝,Tomcat 默认支持自动解压与热部署(Host 配置含 unpackWARs、autoDeploy)。
    • server.xml 中定义 Context:在 conf/server.xml 内添加
      <Context path="/myapp" docBase="/opt/tomcat/webapps/myapp" reloadable="true"/>
      
      提示:修改 server.xml 后需重启 Tomcat。
    • 外部目录部署(推荐用于解耦代码与容器):在 conf/Catalina/localhost/ 下创建 myapp.xml
      <Context docBase="/opt/myapp" reloadable="true"/>
      
      访问路径为 /myapp,无需移动 WAR。

四 网络与反向代理配置

  • 防火墙放行
    • UFW:sudo ufw allow 8080/tcp(测试阶段);生产建议仅开放 80/443 并配合反向代理。
  • 使用 Apache HTTP Server + mod_jk 反向代理
    • 安装模块:sudo apt install -y libapache2-mod-jk
    • 配置 workers.properties(示例):
      worker.list=worker1
      worker.worker1.type=ajp13
      worker.worker1.host=localhost
      worker.worker1.port=8009
      worker.worker1.lbfactor=1
      worker.worker1.sticky_session=1
      
    • 启用模块与站点配置后重启 Apache:
      • sudo a2enmod jk
      • 在 Apache 虚拟主机中增加 JkMount 规则(如:JkMount /myapp/* worker1
      • sudo systemctl restart apache2
    • 访问:http://域名/myapp,由 Apache 接收 80/443 并转发至 Tomcat 8009/AJP

五 常见问题与排查

  • 端口与连通性
    • 默认 8080(Tomcat),8009(AJP)。云服务器需确保安全组/防火墙放行;本地测试可用 curl http://localhost:8080
  • 日志定位
    • Tomcat 日志:/opt/tomcat/logs/catalina.outlocalhost.log*;Apache 日志:/var/log/apache2/error.logmod_jk.log
  • JVM 与内存
    • 在 systemd 的 CATALINA_OPTS 中调整堆内存(如 -Xms512M -Xmx1024M),避免 OOM。
  • 权限与运行用户
    • 确保 /opt/tomcat 归属 tomcat:tomcat,避免以 root 运行容器。
  • 数据库与连接池
    • 若应用使用 MySQL/MariaDB,先安装数据库并创建库与用户,应用内配置 JDBC URL/驱动/连接池(如 HikariCP、DBCP)。

0