前期准备
硬件环境
组件 | 最低配置建议 | 用途说明 |
---|---|---|
CPU | 双核2GHz以上 | 支撑多线程请求处理 |
内存 | 4GB起步(推荐8GB+) | JVM堆内存分配及缓存机制需求 |
磁盘空间 | 50GB可用存储 | 存放Web应用、日志和临时文件 |
网络带宽 | 百兆独享 | 确保并发访问时的响应速度 |
软件依赖包
软件名称 | 版本要求 | 获取方式 |
---|---|---|
CentOS/Ubuntu | x/18.04 LTS | 官方镜像站下载安装 |
JDK | OpenJDK 8或11 | Oracle官网下载对应Linux版 |
Tomcat | x系列 | Apache基金会提供开源下载 |
MySQL | 7+ | MariaDB兼容版优先选择 |
IntelliJ IDEA | Community Edition | 开发环境调试使用(非必需但推荐) |
基础架构搭建步骤
操作系统初始化配置
# 更新系统内核并安装基础工具 yum update -y && yum install net-tools tree curl wget unzip -y # 设置主机名解析(/etc/hosts添加) echo "127.0.0.1 jsphostmanager.local" >> /etc/hosts
注意:生产环境建议关闭IPv6以减少潜在攻击面
sysctl -w net.ipv6.conf.all.disable_ipv6=1
(图片来源网络,侵删)
Java运行环境部署
# 创建专用目录结构 mkdir -p /opt/jdk8 && chown root:root /opt/jdk8 # 解压已下载的JDK压缩包(示例路径需替换实际文件名) tar zxvf jdk-8u291-linux-x64.tar.gz -C /opt/jdk8 --strip-components=1 # 配置环境变量 cat <<EOF >> /etc/profile export JAVA_HOME=/opt/jdk8 export JRE_HOME=\${JAVA_HOME}/jre export PATH=\$PATH:\${JAVA_HOME}/bin EOF source /etc/profile
验证安装:java -version
应显示正确版本信息
Tomcat容器化部署
操作项 | 具体命令 | 参数说明 |
---|---|---|
解压安装包 | tar xzvf apache-tomcat-9.0.xx.tar.gz |
上传至/usr/local 目录 |
重命名目录 | mv apache-tomcat-9.0.xx tomcat9 |
便于版本管理 |
创建软链接 | ln -s /usr/local/tomcat9/bin/ /usr/bin/ |
全局可执行权限 |
启动服务脚本修改 | 编辑startup.sh 首行添加#!/bin/bash |
确保Shebang有效性 |
关键配置文件调整:
# conf/server.xml核心片段 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" maxThreads="150" minSpareThreads="25"/> <!-security约束配置 --> <Valve className="org.apache.catalina.valves.RemoteIpValve" />
数据库集成方案
MySQL实例创建流程
CREATE DATABASE jspvm_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; GRANT ALL PRIVILEGES ON jspvm_db. TO 'vmadmin'@'localhost' IDENTIFIED BY 'SecurePassw0rd!'; FLUSH PRIVILEGES;
推荐表结构设计: | 表名 | 字段类型 | 注释 | |--------------|-------------------------|--------------------| | users | id(INT自增主键),... | 管理员账户存储 | | virtualhosts | domain(VARCHAR唯一索引),...| 虚拟主机映射关系 | | accesslogs | log_time(DATETIME),... | 操作审计追踪 |
连接池优化配置(context.xml)
<Resource name="jdbc/vmds" auth="Container" type="javax.sql.DataSource" maxActive="30" maxIdle="10" maxWait="10000" username="vmadmin" password="SecurePassw0rd!" driverClassName="com.mysql.cj.jdbc.Driver" url="jdbc:mysql://localhost:3306/jspvm_db?useSSL=false&serverTimezone=UTC"/>
安全加固措施
安全层级 | 实施策略 | 预期效果 |
---|---|---|
网络层 | 防火墙仅开放80/443端口,禁用默认管理端口 | 阻断非法外部扫描 |
Web层 | CSRF令牌校验、XSS过滤、SQL注入防护 | 防御OWASP Top 10攻击 |
应用层 | 强制密码复杂度策略(大小写+数字+特殊符号≥8位)、会话超时控制(30分钟无操作) | 提升暴力破解难度 |
系统层 | AppArmor沙箱限制Tomcat进程权限,定期安全扫描(推荐使用Trivy工具) | 防止提权漏洞利用 |
性能调优参数参考
子系统 | 关键参数 | 推荐值范围 | 调整方法 |
---|---|---|---|
JVM堆内存 | -Xms/-Xmx | [2G,4G]动态分配 | 根据实际负载逐步增加 |
Connector线程数 | maxThreads | 基于CPU核心数×2+预留 | 压力测试确定最佳并发量 |
数据库连接池 | initialSize/maxActive | 初始5~10,最大50 | 监控活跃连接数动态调整 |
GZIP压缩 | compressionMinSize | 2KB以上启用压缩 | 平衡带宽节省与CPU开销 |
常见问题与解答
Q1:启动Tomcat时报"Permission denied"错误如何解决?
A:检查三个关键点:①文件所有权是否归tomcat用户组所有;②SELinux是否处于enforcing模式阻止执行;③确保JAVA_HOME路径下所有可执行文件具有执行权限,可通过chown -R tomcat:tomcat /path/to/tomcat
修正权限。

Q2:如何实现HTTPS安全访问?
A:分步操作如下:①生成自签名证书keytool -genkeypair -alias tomcat -keyalg RSA -keysize 2048 -storetype PEM -keystore keystores/localhost.p12
;②配置server.xml
添加SSL连接器;③修改web.xml强制跳转HTTPS,生产环境
