一、整体概述
1. 是什么?
通过 Jenkins 实现 Tomcat(Java Web) 和 PHP 项目的自动拉代码 → 编译 → 部署 → 重启,全程自动化,不用手动上传包、手动重启服务。
2. 核心流程
plaintext
开发提交代码 → Git/Gitee → Jenkins 触发构建 →
拉代码 → 编译/打包 → 分发到目标服务器 →
部署到 Tomcat / Nginx + PHP → 重启服务 → 部署完成
3. 必备环境
- Jenkins 服务器(Linux)
- JDK(Tomcat 需要)
- Maven(Java 打包)
- Git(拉代码)
- Tomcat 服务器(运行 Java 项目)
- Nginx + PHP-FPM(运行 PHP 项目)
- 插件:Git、Maven Integration、Publish Over SSH、SSH plugin
二、Jenkins 必备插件
- Git Plugin ------ 拉代码
- Maven Integration ------ Maven 构建
- Publish Over SSH ------ 远程发送文件、执行命令
- SSH plugin ------ 远程执行脚本
- Deploy to container ------ 直接部署 war 到 Tomcat
三、自动化部署 Tomcat(Java Web)步骤
1. 流程
plaintext
Git 拉代码 → Maven 编译打包(war)→ 上传到 Tomcat → 停止 Tomcat → 部署 war → 启动 Tomcat
2. 关键配置
- 源码管理:Git 地址 + 账号
- 构建触发器:
Poll SCM定时检查代码更新 - Build:执行
clean package -Dmaven.test.skip=true - 构建后操作:
- 使用 Publish Over SSH 发送 war 到 Tomcat 的
webapps - 远程执行:停止→部署→启动脚本
- 使用 Publish Over SSH 发送 war 到 Tomcat 的
3. 远程脚本示例
bash
运行
# 停止 Tomcat
sh /usr/local/tomcat/bin/shutdown.sh
sleep 3
# 删除旧包
rm -rf /usr/local/tomcat/webapps/ROOT*
# 移动新包
mv /tmp/ROOT.war /usr/local/tomcat/webapps/
# 启动 Tomcat
sh /usr/local/tomcat/bin/startup.sh
四、自动化部署 PHP 项目步骤
1. 流程
plaintext
Git 拉代码 → 直接同步代码到 Nginx 站点目录 → 重启 PHP-FPM → 完成
2. 关键配置
- Git 拉取代码
- 不需要编译(PHP 是解释型语言)
- 直接用 Publish Over SSH 同步代码到网站目录
- 重启 php-fpm 即可
3. 脚本示例
bash
运行
# 同步代码(Jenkins 传过来)
cp -r /tmp/php-project/* /usr/local/nginx/html/
# 重启 PHP 服务
systemctl restart php-fpm
五、Tomcat 项目 vs PHP 项目 区别
表格
| 项目类型 | 编译 | 扩展名 | 运行环境 | 部署方式 |
|---|---|---|---|---|
| Tomcat(Java) | 需要编译 | .war | Tomcat | 上传 war、重启服务 |
| PHP | 不需要编译 | .php | Nginx+PHP-FPM | 直接覆盖代码、重启 php-fpm |
六、Jenkins 自动化部署核心知识点
- Publish Over SSH:远程发送文件、执行脚本(最常用)
- Maven:Java 项目编译打包
- 无需编译:PHP/Python/ 前端 都是直接同步代码
- 触发器:定时触发、代码提交触发
- 自动化 = 拉代码 → 构建 → 分发 → 部署 → 启动
- Tomcat 部署必须先停服务,再删旧包,再部署
- PHP 部署只需覆盖代码 + 重启 php-fpm
七、一句话总结
Jenkins 自动化部署 Tomcat + PHP 项目,就是通过 Git 拉取代码,Java 项目用 Maven 编译成 war 包,通过 SSH 远程部署到 Tomcat;PHP 项目无需编译,直接同步代码到 Nginx 目录并重启 PHP-FPM,全程自动完成,提高发布效率、减少人工失误。