Jenkins自动化部署Tomcat + PHP项目实例

 更新时间:2026年06月25日 09:33:02   作者:齐潇宇  
jenkins是一个开源的、提供友好操作界面的持续集成工具(CI),起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控一些定时执行的任务,这篇文章主要介绍了Jenkins自动化部署Tomcat+PHP项目的相关资料,需要的朋友可以参考下

一、整体概述

1. 是什么?

通过 Jenkins 实现 Tomcat(Java Web) 和 PHP 项目的自动拉代码 → 编译 → 部署 → 重启,全程自动化,不用手动上传包、手动重启服务。

2. 核心流程

开发提交代码 → 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. 流程

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. 远程脚本示例

# 停止 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. 流程

Git 拉代码 → 直接同步代码到 Nginx 站点目录 → 重启 PHP-FPM → 完成

2. 关键配置

  1. Git 拉取代码
  2. 不需要编译(PHP 是解释型语言)
  3. 直接用 Publish Over SSH 同步代码到网站目录
  4. 重启 php-fpm 即可

3. 脚本示例

# 同步代码(Jenkins 传过来)
cp -r /tmp/php-project/* /usr/local/nginx/html/
# 重启 PHP 服务
systemctl restart php-fpm

五、Tomcat 项目 vs PHP 项目 区别

表格

项目类型编译扩展名运行环境部署方式
Tomcat(Java)需要编译.warTomcat上传 war、重启服务
PHP不需要编译.phpNginx+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,全程自动完成,提高发布效率、减少人工失误。

相关文章

  • PHP扩展迁移为PHP7扩展兼容性问题记录

    PHP扩展迁移为PHP7扩展兼容性问题记录

    PHP7扩展编写的时候,提供的一些内核方法和之前的PHP之前的版本并不能完全兼容。有不少方法参数做了调整。下面是在迁移过程中遇到的一些问题,感兴趣的朋友参考下吧
    2016-02-02
  • php getcwd与dirname(__FILE__)区别详解

    php getcwd与dirname(__FILE__)区别详解

    这篇文章主要介绍了php getcwd与dirname(__FILE__)区别详解的相关资料,需要的朋友可以参考下
    2016-09-09
  • 浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)

    浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)

    thinkPHP的F方法只能用于缓存简单数据类型,不支持有效期和缓存对象。S()缓存方法支持有效期,又称动态缓存方法。本文是小编日常整理有关thinkphp缓存方法,对thinkphp缓存方法感兴趣的朋友一起学习吧
    2015-10-10
  • 全世界最小的php网页木马一枚 附PHP木马的防范方法

    全世界最小的php网页木马一枚 附PHP木马的防范方法

    php网页木马代码,大家可以看下自己的网站里面是不是有这样的代码,注意网站安全用mcafee限制w3wp.exe生成php或者asp文件。并在php.ini中设置一下。
    2009-10-10
  • 老生常谈ThinkPHP中的行为扩展和插件(推荐)

    老生常谈ThinkPHP中的行为扩展和插件(推荐)

    下面小编就为大家带来一篇老生常谈ThinkPHP中的行为扩展和插件(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • PHP框架Laravel学习心得体会

    PHP框架Laravel学习心得体会

    Laravel是一套简洁、优雅的PHP Web开发框架 (PHP Web Framework) 。在世界(不含中国)PHP框架的占有率超过40%。下面通过本文给大家分享我的PHP框架Laravel学习心得体会,欢迎大家给我留言
    2015-10-10
  • php中curl新手秒变高手的使用教程实例

    php中curl新手秒变高手的使用教程实例

    本文介绍PHP中使用cURL发送HTTP请求的优势,涵盖POST数据提交、文件上传下载、http验证、代理请求、JSON处理及多连接处理,强调其灵活性和强大功能,适合复杂网络操作需求
    2025-06-06
  • Laravel框架中Blade模板的用法示例

    Laravel框架中Blade模板的用法示例

    Blade 是 laravel 提供的一个简单强大的模板引擎,下面这篇文章主要给大家介绍了关于Laravel框架中Blade模板用法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-08-08
  • 实例讲解yii2.0在php命令行中运行的步骤

    实例讲解yii2.0在php命令行中运行的步骤

    Yii中的资源是和Web页面相关的文件,可为CSS文件,JavaScript文件,图片或视频等,资源放在Web可访问的目录下,直接被Web服务器调用。本文通过实例讲解yii2.0在php命令行中运行的步骤,对yii2.0 php相关知识感兴趣的朋友一起学习吧
    2015-12-12
  • PHP array_key_exists检查键名或索引是否存在于数组中的实现方法

    PHP array_key_exists检查键名或索引是否存在于数组中的实现方法

    下面小编就为大家带来一篇PHP array_key_exists检查键名或索引是否存在于数组中的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06

最新评论