JSP项目在CentOS上如何部署
小樊
31
2025-12-31 09:20:35
在 CentOS 上部署 JSP 项目的标准流程
一 准备与安装
- 更新系统并安装 JDK(推荐 OpenJDK 8 或 11):
- 安装命令示例:sudo yum install -y java-11-openjdk-devel
- 验证:java -version、javac -version
- 配置环境变量(全局生效):
- 编辑文件:sudo vi /etc/profile.d/java.sh
- 写入示例(路径以实际为准):
- export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
- export PATH=$JAVA_HOME/bin:$PATH
- 使生效:source /etc/profile.d/java.sh
- 安装 Tomcat(两种常用方式,二选一):
- 方式A 使用系统包管理器(便于管理):sudo yum install -y tomcat tomcat-admin-webapps
- 方式B 官方二进制包(便于多版本并存):
- 下载并解压到 /usr/local/tomcat
- 启动:/usr/local/tomcat/bin/startup.sh
- 启动与自启:
- 系统包管理器安装:sudo systemctl start tomcat && sudo systemctl enable tomcat
- 二进制包:建议配置 systemd 服务或使用脚本管理服务
二 部署与发布
- 打包应用:将项目打成 WAR 包(如使用 Maven:mvn clean package)
- 部署方式(任选其一):
- 自动部署:将 WAR 复制到 Tomcat 的 webapps 目录,Tomcat 会自动解压部署;访问路径为 http://服务器IP:8080/应用名/
- 部署为 ROOT:清空 webapps/ROOT 内容,将 WAR 放入 ROOT 或解压到 ROOT,访问 http://服务器IP:8080/
- 虚拟主机部署(基于域名):
- 在 server.xml 的 Engine 内添加 Host,或使用 Catalina/域名/ROOT.xml 配置,指定 docBase 为你的应用目录,实现按域名访问
- 常用管理:
- 如需使用 Manager App,在 conf/tomcat-users.xml 中配置角色与用户(如 manager-gui、admin-gui 等),然后重启 Tomcat 登录管理界面
三 网络与防火墙
- 放行访问端口(默认 8080):
- firewalld:sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent && sudo firewall-cmd --reload
- 云服务器还需在控制台安全组放行对应端口
- 端口与访问:
- 如需使用 80 端口访问,可修改 conf/server.xml 中 Connector 的 port 为 80,并确保系统权限与防火墙已放行 80
四 验证与常见问题
- 验证步骤:
- 访问 http://服务器IP:8080 出现 Tomcat 欢迎页说明服务正常
- 访问应用:http://服务器IP:8080/应用名 或 http://服务器IP:8080(ROOT 部署)
- 可放置测试 test.jsp 验证 JSP 解析是否正常
- 常见问题处理:
- 端口被占用:修改 server.xml 的 Connector 端口或释放占用进程
- 权限问题:检查 Tomcat 目录与 WAR 文件的属主与权限
- 页面乱码:在 JSP 顶部添加 <%@ page contentType=“text/html;charset=UTF-8” pageEncoding=“UTF-8” %>
- 管理界面无法登录:检查 tomcat-users.xml 角色与用户配置是否正确并已重启
五 进阶建议
- 使用 systemd 托管 Tomcat(二进制安装推荐):
- 创建 /etc/systemd/system/tomcat.service,示例:
- [Unit] Description=Tomcat;After=network.target
- [Service] Type=forking;ExecStart=/usr/local/tomcat/bin/startup.sh;ExecStop=/usr/local/tomcat/bin/shutdown.sh;User=tomcat;Restart=on-failure
- [Install] WantedBy=multi-user.target
- 启用:sudo systemctl daemon-reload && sudo systemctl enable --now tomcat
- 多实例与版本管理:不同版本解压到不同目录,使用独立 CATALINA_HOME 与端口
- 反向代理与静态资源:如需 Nginx 前置,建议仅做反向代理(Nginx 不解析 JSP),将请求转发到 Tomcat 的 8080 端口