温馨提示×

JSP项目在Ubuntu上如何部署

小樊
43
2025-12-10 06:53:48
栏目: 编程语言

在 Ubuntu 上部署 JSP 项目的标准流程


一 准备环境

  • 安装 JDK 11(推荐 LTS):
    • 执行:sudo apt update && sudo apt install openjdk-11-jdk
    • 验证:java -version 应显示 openjdk 11 版本信息
  • 安装 Apache Tomcat 9(两种常用方式,二选一)
    • 方式 A(系统包,便于管理):sudo apt install tomcat9
      • 安装完成后 Tomcat 通常会自动启动,可用 sudo systemctl status tomcat9 查看状态
    • 方式 B(官方压缩包,便于多版本并存):
      • 下载:wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.56/bin/apache-tomcat-9.0.56.tar.gz
      • 解压:sudo tar -zxvf apache-tomcat-9.0.56.tar.gz -C /opt
      • 软链:sudo ln -s /opt/apache-tomcat-9.0.56 /usr/local/tomcat
      • 启动:/usr/local/tomcat/bin/startup.sh
      • 验证:curl http://localhost:8080 能看到 Tomcat 欢迎页
  • 防火墙放行端口(如启用 UFW):sudo ufw allow 8080/tcp

二 部署应用

  • 准备应用包:将项目打包为 WAR(例如 myapp.war
  • 部署方式(三选一)
    • 自动部署:将 WAR 放入 Tomcat 的 webapps 目录
      • APT 安装路径:sudo cp myapp.war /var/lib/tomcat9/webapps/
      • 官方包路径:sudo cp myapp.war /usr/local/tomcat/webapps/
      • Tomcat 会自动解压并部署,访问:http://服务器IP:8080/myapp
    • 管理控制台部署:访问 http://服务器IP:8080/manager/html
      • 使用配置的 manager 账号登录后上传 WAR 并部署
    • 目录方式:在 webapps 下创建目录并放入 JSP/静态资源
      • 示例:sudo mkdir -p /usr/local/tomcat/webapps/myapp,复制文件后访问 http://服务器IP:8080/myapp

三 可选配置

  • 反向代理与 HTTPS(Nginx + Let’s Encrypt)
    • 安装:sudo apt install certbot python3-certbot-nginx
    • 申请证书:sudo certbot --nginx -d your_domain.com
    • 反向代理示例(/etc/nginx/sites-available/your_domain.com):
      server {
        listen 80;
        server_name your_domain.com www.your_domain.com;
        location / {
          proxy_pass http://localhost:8080;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $scheme;
        }
      }
      
    • 启用与生效:
      • sudo ln -s /etc/nginx/sites-available/your_domain.com /etc/nginx/sites-enabled/
      • sudo nginx -t && sudo systemctl restart nginx
    • 访问:https://your_domain.com(HTTP 将自动跳转至 HTTPS)
  • 运行用户与权限(官方包推荐)
    • 创建用户/组:sudo groupadd tomcat && sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
    • 设置权限:
      • sudo chgrp -R tomcat /opt/tomcat
      • sudo chmod -R 755 /opt/tomcat/conf/
      • sudo chown -R tomcat /opt/tomcat/webapps/ /opt/tomcat/work/ /opt/tomcat/temp/ /opt/tomcat/logs/
  • systemd 服务(官方包推荐)
    • 新建: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
      Restart=always
      RestartSec=10
      
      [Install]
      WantedBy=multi-user.target
      
    • 启用:sudo systemctl daemon-reload && sudo systemctl start tomcat && sudo systemctl enable tomcat
  • 数据库(如 MySQL)
    • 安装:sudo apt install mysql-server
    • 在项目中加入 MySQL JDBC 驱动(如 mysql-connector-java),JDBC URL 示例:
      • jdbc:mysql://localhost:3306/your_db?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC

四 验证与常见问题

  • 验证要点
    • Tomcat 欢迎页:http://服务器IP:8080
    • 应用首页:http://服务器IP:8080/your_app/
    • 管理控制台:http://服务器IP:8080/manager/html(需配置 manager 账号)
  • 常见问题
    • 端口占用:修改 conf/server.xml 中的 <Connector port="8080"> 为未占用端口,重启 Tomcat
    • 权限错误:确保 Tomcat 用户对 webapps、logs、work、temp 等目录具备正确权限
    • 中文乱码:在 JSP 顶部添加 <%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>,并统一项目与数据库字符集为 UTF-8
    • 数据库连接失败:检查驱动 JAR 是否在 WEB-INF/lib,确认 JDBC URL、用户名、密码 与数据库服务状态

0