在 CentOS 上搭建 JSP 运行环境的标准做法
一 准备与安装 Java
- 更新系统并安装 OpenJDK(推荐 JDK 8 或 JDK 11,两者均可稳定运行 JSP/Servlet):
- 安装 OpenJDK 8:sudo yum install -y java-1.8.0-openjdk-devel
- 安装 OpenJDK 11:sudo yum install -y java-11-openjdk-devel
- 配置环境变量(全局生效,建议写入 /etc/profile.d/java.sh):
- 查看实际 JDK 路径:readlink -f $(which java) 或 alternatives --config java
- 写入文件:
- echo ‘export JAVA_HOME=/usr/lib/jvm/java-11-openjdk’ | sudo tee /etc/profile.d/java.sh
- echo ‘export PATH=$JAVA_HOME/bin:$PATH’ | sudo tee -a /etc/profile.d/java.sh
- 使配置生效:source /etc/profile.d/java.sh
- 验证:java -version、javac -version 应返回对应版本号。
二 安装与配置 Tomcat
- 方式 A(YUM 安装,适合快速上手)
- 安装:sudo yum install -y tomcat
- 启动与开机自启:sudo systemctl start tomcat;sudo systemctl enable tomcat
- 访问测试:浏览器打开 http://服务器IP:8080,出现 Tomcat 欢迎页即成功。
- 方式 B(二进制包安装,便于多版本并存与自定义)
- 下载并解压(示例为 Tomcat 10.1.x):
- wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.15/bin/apache-tomcat-10.1.15.tar.gz
- sudo tar -xzvf apache-tomcat-10.1.15.tar.gz -C /opt
- sudo mv /opt/apache-tomcat-10.1.15 /opt/tomcat
- 环境变量(/etc/profile.d/tomcat.sh):
- echo ‘export CATALINA_HOME=/opt/tomcat’ | sudo tee /etc/profile.d/tomcat.sh
- echo ‘export PATH=$PATH:$CATALINA_HOME/bin’ | sudo tee -a /etc/profile.d/tomcat.sh
- source /etc/profile.d/tomcat.sh
- 创建专用用户与授权:
- sudo groupadd -r tomcat
- sudo useradd -r -s /sbin/nologin -g tomcat -d /opt/tomcat tomcat
- sudo chown -R tomcat:tomcat /opt/tomcat
- 启动测试:/opt/tomcat/bin/startup.sh;访问 http://服务器IP:8080。
三 部署与验证 JSP 应用
- 部署方式
- 将应用打包为 WAR 文件,复制到 Tomcat 的 webapps 目录(YUM 安装通常为 /usr/share/tomcat/webapps;二进制安装为 /opt/tomcat/webapps),Tomcat 会自动解压部署。
- 也可将静态文件或测试页放入 webapps/ROOT 目录,直接通过根路径访问。
- 快速验证
- 在 ROOT 下创建测试页:echo ‘<%@ page contentType=“text/html;charset=UTF-8” %>
Hello JSP
’ | sudo tee /opt/tomcat/webapps/ROOT/hello.jsp
- 访问:http://服务器IP:8080/hello.jsp,看到 “Hello JSP” 即部署成功。
四 防火墙与安全加固
- 防火墙放行
- 开放 8080 端口:sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
- 重载规则:sudo firewall-cmd --reload
- 可选:使用 Nginx 反向代理到 80/443
- 在 Nginx 配置中增加:location / { proxy_pass http://127.0.0.1:8080; },然后重载 Nginx,实现域名直接访问且端口隐藏。
- 安全建议
- 禁用或限制管理应用:删除或注释 webapps 下的 manager、host-manager,或在 server.xml 中对访问来源做 IP 限制(RemoteAddrValve)。
- 配置 SSL/TLS:为 8443 连接器配置证书(可用 Let’s Encrypt),对外提供 HTTPS。
- 运行权限最小化:Tomcat 以 tomcat 用户运行,目录权限 755/750,避免以 root 启动。
五 服务管理与性能优化
- Systemd 服务示例(二进制安装路径为 /opt/tomcat,如使用 YUM 请将路径替换为 /usr/share/tomcat 并调整 User/Group)
- 创建文件:sudo vi /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
- 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 -Dfile.encoding=UTF-8’
- 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 enable --now tomcat
- 常用优化
- JVM 内存:在 setenv.sh 或 systemd 的 CATALINA_OPTS 中设置 -Xms/-Xmx(如 -Xms1G -Xmx2G,视内存而定)。
- 连接器:在 conf/server.xml 调整 maxThreads、connectionTimeout 等参数,匹配并发与超时需求。
- 日志与排错:tail -f /opt/tomcat/logs/catalina.out、localhost_access_log;端口冲突用 ss -tulnp | grep 8080 定位。