ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Mac OS上搭建Tomcat与Jenkins环境全指南

Mac OS上搭建Tomcat与Jenkins环境全指南 1. 环境准备与工具选型在Mac OS上搭建Tomcat和Jenkins环境前需要先确认基础环境。我推荐使用Homebrew作为基础工具链管理器它能帮我们避免很多依赖问题。打开终端执行以下检查brew --version java -version如果尚未安装Homebrew用这条命令快速安装/bin/bash -c $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)对于Java环境Jenkins 2.357需要Java 11或17而Tomcat 10.1.x需要Java 11。建议使用Azul Zulu JDKbrew tap homebrew/cask-versions brew install --cask zulu11注意不要使用系统自带的Java版本可能不兼容且权限管理复杂。我曾在M1芯片的Mac上因使用系统Java导致Tomcat启动报错改用Zulu后问题解决。2. Tomcat 10.1.x安装与深度配置2.1 使用Homebrew安装Tomcat常规做法是手动下载tar包但用Homebrew更便于后续管理brew install tomcat安装完成后会显示如下关键信息Tomcat was installed to /opt/homebrew/Cellar/tomcat/10.1.552.2 配置文件关键修改编辑server.xml解决Jenkins的URL编码问题vim /opt/homebrew/etc/tomcat/server.xml找到Connector部分修改为Connector port8080 protocolHTTP/1.1 encodedSolidusHandlingpassthrough connectionTimeout20000 redirectPort8443 /2.3 权限与启动控制创建专用用户组避免使用root权限sudo dseditgroup -o create tomcat sudo dscl . create /Users/tomcat sudo dscl . append /Groups/tomcat GroupMembership tomcat设置目录权限sudo chown -R tomcat:tomcat /opt/homebrew/Cellar/tomcat sudo chmod -R urwx,grx,o-rwx /opt/homebrew/Cellar/tomcat启动脚本保存为tomcat-start.sh#!/bin/zsh export CATALINA_HOME/opt/homebrew/Cellar/tomcat/10.1.55/libexec export CATALINA_OPTS-DJENKINS_HOME/Users/Shared/Jenkins -Xms512m -Xmx2g sudo -u tomcat $CATALINA_HOME/bin/startup.sh3. Jenkins WAR包部署实战3.1 获取与部署最新版本下载Jenkins WAR包curl -L -o jenkins.war https://get.jenkins.io/war-stable/latest/jenkins.war部署到Tomcatcp jenkins.war /opt/homebrew/Cellar/tomcat/10.1.55/libexec/webapps/3.2 首次启动的特殊处理首次访问时需要解锁Jenkinscat /Users/Shared/Jenkins/secrets/initialAdminPassword如果遇到Crumb问题常见于反向代理场景需要在$JENKINS_HOME/config.xml中添加useCrumbsfalse/useCrumbs useSecuritytrue/useSecurity3.3 性能调优参数在setenv.sh中添加JVM参数export JAVA_OPTS-Djava.awt.headlesstrue -Xms1024m -Xmx2048m -XX:MaxMetaspaceSize512m -XX:UseG1GC4. 常见问题排查手册4.1 端口冲突解决方案查看端口占用lsof -i :8080修改Tomcat端口Connector port9080 protocolHTTP/1.1 ... /4.2 插件安装失败处理临时更换更新中心URLvim /Users/Shared/Jenkins/hudson.model.UpdateCenter.xml修改为urlhttps://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json/url4.3 M1芯片特有问题遇到Native库问题时export JAVA_HOME/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home export PATH$JAVA_HOME/bin:$PATH我在M1 Max设备上实测发现通过Rosetta运行的Tomcat性能下降约15%建议使用原生ARM版本arch -arm64 brew install tomcat5. 进阶集成配置5.1 与GitLab的CI/CD管道安装必要插件GitLab PluginGitLab API PluginPipeline在GitLab项目设置中创建WebhookURL: http://your-mac.local:8080/jenkins/project/your-project Secret Token: 在Jenkins项目配置中生成的token5.2 自动化部署SpringBoot项目示例Jenkinsfilepipeline { agent any stages { stage(Build) { steps { sh ./mvnw clean package -DskipTests } } stage(Deploy) { steps { sh scp target/*.jar userserver:/opt/app sh ssh userserver systemctl restart yourapp } } } }5.3 安全加固措施启用Matrix权限在Configure Global Security中选择Project-based Matrix Authorization Strategy配置HTTPSkeytool -genkey -alias tomcat -keyalg RSA -keystore /opt/homebrew/etc/tomcat/keystore.jks修改server.xmlConnector port8443 protocolorg.apache.coyote.http11.Http11NioProtocol maxThreads150 SSLEnabledtrue SSLHostConfig Certificate certificateKeystoreFile/opt/homebrew/etc/tomcat/keystore.jks typeRSA / /SSLHostConfig /Connector6. 维护与监控方案6.1 日志管理配置Tomcat日志轮转vim /opt/homebrew/etc/tomcat/logging.properties修改为1catalina.org.apache.juli.AsyncFileHandler.level FINE 1catalina.org.apache.juli.AsyncFileHandler.directory ${catalina.base}/logs 1catalina.org.apache.juli.AsyncFileHandler.prefix catalina. 1catalina.org.apache.juli.AsyncFileHandler.rotatable true 1catalina.org.apache.juli.AsyncFileHandler.maxDays 76.2 健康检查端点添加Prometheus监控安装Prometheus插件配置/metrics端点management.endpoints.web.exposure.includehealth,metrics,prometheus6.3 备份策略Jenkins备份脚本保存为jenkins-backup.sh#!/bin/zsh BACKUP_DIR/Users/Shared/JenkinsBackup TIMESTAMP$(date %Y%m%d_%H%M%S) tar -czf $BACKUP_DIR/jenkins_$TIMESTAMP.tar.gz /Users/Shared/Jenkins find $BACKUP_DIR -type f -mtime 30 -delete设置定时任务0 3 * * * /path/to/jenkins-backup.sh
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进