Jenkins 自动化部署 Tomcat + PHP

一、整体概述

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 必备插件

  1. Git Plugin ------ 拉代码
  2. Maven Integration ------ Maven 构建
  3. Publish Over SSH ------ 远程发送文件、执行命令
  4. SSH plugin ------ 远程执行脚本
  5. Deploy to container ------ 直接部署 war 到 Tomcat

三、自动化部署 Tomcat(Java Web)步骤

1. 流程

plaintext

复制代码
Git 拉代码 → Maven 编译打包(war)→ 上传到 Tomcat → 停止 Tomcat → 部署 war → 启动 Tomcat

2. 关键配置

  1. 源码管理:Git 地址 + 账号
  2. 构建触发器:Poll SCM 定时检查代码更新
  3. Build:执行 clean package -Dmaven.test.skip=true
  4. 构建后操作:
    • 使用 Publish Over SSH 发送 war 到 Tomcat 的 webapps
    • 远程执行:停止→部署→启动脚本

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. 关键配置

  1. Git 拉取代码
  2. 不需要编译(PHP 是解释型语言)
  3. 直接用 Publish Over SSH 同步代码到网站目录
  4. 重启 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 自动化部署核心知识点

  1. Publish Over SSH:远程发送文件、执行脚本(最常用)
  2. Maven:Java 项目编译打包
  3. 无需编译:PHP/Python/ 前端 都是直接同步代码
  4. 触发器:定时触发、代码提交触发
  5. 自动化 = 拉代码 → 构建 → 分发 → 部署 → 启动
  6. Tomcat 部署必须先停服务,再删旧包,再部署
  7. PHP 部署只需覆盖代码 + 重启 php-fpm

七、一句话总结

Jenkins 自动化部署 Tomcat + PHP 项目,就是通过 Git 拉取代码,Java 项目用 Maven 编译成 war 包,通过 SSH 远程部署到 Tomcat;PHP 项目无需编译,直接同步代码到 Nginx 目录并重启 PHP-FPM,全程自动完成,提高发布效率、减少人工失误。

相关推荐
枳实-叶12 小时前
【Linux驱动开发】第17天:I2C子系统整体架构
linux·驱动开发·架构
小辰记事本12 小时前
从零读懂RDMA硬件排障:读数、看码、查计数器
运维·网络·数据库
Cat_Rocky12 小时前
Linux-基于Jenkins自动打包并部署Tomcat环境
linux·tomcat·jenkins
hj28625112 小时前
Linux 进程、作业控制、定时任务 完整版整理笔记
linux·运维·笔记
深圳恒讯13 小时前
马来西亚服务器延迟怎么样?多少才算正常
运维·服务器
时间静止不是简史13 小时前
CentOS 7 虚拟机 NAT 网络排障:DHCP 服务为何启动即停
linux·网络·centos
黄筱筱筱筱筱筱筱13 小时前
基于AI 文本生成的自动化Linux 运维文档系统
运维·自动化
tang74516396213 小时前
Huawei Cloud EulerOS 2.0(x8664)安装 Jenkins
java·servlet·jenkins
2601_9488106013 小时前
Jenkins
运维·jenkins