Jenkins自动化部署Tomcat+PHP项目学习笔记
Jenkins自动化部署Tomcat+PHP项目学习笔记
一、实验概述
1.1 实验目的
实现Jenkins + Git + Tomcat + PHP全自动CI/CD流水线:
-
开发将PHP代码提交至Git仓库
-
Jenkins自动拉取源码
-
自动清理Tomcat旧项目、发布新代码
-
自动重启Tomcat服务,实现代码一键上线
1.2 服务器环境规划(单节点实验,一台服务器全部搞定)
-
操作系统:CentOS 7 / Rocky Linux 9
-
服务部署:Jenkins、Git、Tomcat、PHP 全部部署在同一台服务器
-
IP地址:192.168.10.100
-
端口说明:Jenkins:8080 Tomcat:8081
1.3 整体工作流程
开发提交PHP代码到Git → Webhook触发Jenkins构建 → Jenkins拉取代码 → 清空Tomcat站点目录 → 拷贝新代码到Tomcat → 重启Tomcat → 访问页面验证
二、前置环境搭建(Tomcat+PHP运行环境)
2.1 安装JDK(Tomcat依赖)
yum install -y java-1.8.0-openjdk-devel
java -version
2.2 安装Tomcat8
# 下载解压Tomcat
wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.90/bin/apache-tomcat-8.5.90.tar.gz
tar xf apache-tomcat-8.5.90.tar.gz -C /usr/local/
mv /usr/local/apache-tomcat-8.5.90 /usr/local/tomcat
# 修改Tomcat端口,避免和Jenkins8080冲突
vim /usr/local/tomcat/conf/server.xml
# 修改端口:Connector port="8081"
# 启动Tomcat并设置开机自启
/usr/local/tomcat/bin/startup.sh
ss -antlp | grep 8081
2.3 整合PHP环境到Tomcat
Tomcat默认不支持解析PHP代码,需要安装php、php-fpm,配置Tomcat调用PHP解析引擎
# 安装PHP环境
yum install -y php php-fpm
# 启动php-fpm
systemctl start php-fpm
systemctl enable php-fpm
# 修改Tomcat配置,支持解析PHP文件
vim /usr/local/tomcat/conf/context.xml
# 文件末尾添加一行:
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
driverClassName="com.mysql.cj.jdbc.Driver" url="jdbc:mysql://localhost:3306/test"
username="root" password="123456" maxTotal="100" maxIdle="30" maxWaitMillis="10000"/>
# 重启Tomcat生效
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
2.4 本地Git仓库准备
# 安装git
yum install -y git
# 创建本地git仓库(实验使用本地Git,无需外网Gitee/GitHub)
mkdir -p /data/git/php-project
cd /data/git/php-project
git init
# 编写测试php页面
echo "<?php phpinfo(); ?>" > index.php
git add .
git commit -m "init php project"
三、Jenkins服务安装与初始化
3.1 安装Jenkins
# 导入Jenkins源
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
# 安装Jenkins
yum install -y jenkins
# 【关键】修改Jenkins运行用户为root,避免发布权限不足
sed -i 's/JENKINS_USER="jenkins"/JENKINS_USER="root"/g' /etc/sysconfig/jenkins
# 启动服务
systemctl start jenkins
systemctl enable jenkins
3.2 Jenkins页面初始化
-
访问地址:http://192.168.10.100:8080
-
查看初始密码:
cat /var/lib/jenkins/secrets/initialAdminPassword -
安装推荐插件 → 创建管理员账号 → 进入Jenkins首页
3.3 安装必备插件
系统管理 → 插件管理 → 可选插件,搜索安装:
-
Git Plugin:拉取Git代码
-
Publish over SSH:远程发布(本机也可用)
-
Generic Webhook Trigger:Git钩子自动触发构建
四、Jenkins自由风格项目配置(核心步骤)
4.1 新建项目
-
新建Item → 输入项目名:tomcat-php-deploy
-
选择【自由风格项目】→ 确定
4.2 源码管理配置
-
勾选【Git】
-
仓库地址:file:///data/git/php-project (本地Git仓库地址)
-
分支构建:*/main
4.3 构建触发器(自动发布核心)
勾选:Generic Webhook Trigger,后续配置Git钩子实现代码提交自动构建
4.4 构建环节:执行Shell脚本(一键发布脚本)
下拉选择【Execute shell】,粘贴以下完整发布脚本,直接复制即用
# 1. 进入Jenkins工作空间
cd $WORKSPACE
# 2. 清空Tomcat默认站点旧代码
rm -rf /usr/local/tomcat/webapps/ROOT/*
# 3. 将Jenkins拉取的最新PHP代码拷贝到Tomcat站点目录
cp -rf ./* /usr/local/tomcat/webapps/ROOT/
# 4. 重启Tomcat服务
/usr/local/tomcat/bin/shutdown.sh
sleep 3
/usr/local/tomcat/bin/startup.sh
echo "=====PHP项目自动化发布完成====="
4.5 手动构建测试
-
点击【立即构建】
-
查看控制台输出,无报错即为发布成功
-
访问测试:http://192.168.10.100:8081,看到phpinfo页面代表部署成功
五、配置Git钩子,实现代码提交自动发布
5.1 获取Jenkins触发地址
Jenkins项目页面 → 构建触发器 → 复制Webhook地址:
http://192.168.10.100:8080/generic-webhook-trigger/invoke?token=tomcat-php
5.2 本地Git仓库配置钩子脚本
cd /data/git/php-project/.git/hooks
vim post-receive
写入内容:
#!/bin/bash
curl http://192.168.10.100:8080/generic-webhook-trigger/invoke?token=tomcat-php
# 添加执行权限
chmod +x post-receive
5.3 全自动验证
-
修改本地PHP代码:
echo "<h1>Jenkins自动发布成功</h1><?php phpinfo(); ?>" > index.php -
提交代码:
git add . && git commit -m "update index page" -
自动触发Jenkins构建,无需人工点击
-
刷新网页,页面内容自动更新
六、常见报错及解决方案(实验必看)
| 报错现象 | 原因 | 解决办法 |
|---|---|---|
| Jenkins拷贝文件权限不足 | Jenkins默认运行用户为jenkins,无tomcat目录权限 | 修改配置将Jenkins运行用户改为root,重启服务 |
| Tomcat无法重启,端口占用 | Tomcat关闭脚本失效,进程残留 | kill -9 $(ps -ef |
| Git提交后不自动构建 | 钩子脚本无执行权限、Jenkins地址写错 | 给post-receive添加执行权限,核对JenkinsIP和token |
| 页面访问无法解析PHP | php-fpm未启动、tomcat配置未生效 | 重启php-fpm和tomcat,检查context.xml配置 |
七、实验总结
-
本次实验实现Jenkins一键自动发布PHP项目至Tomcat,全程无人为干预
-
核心流程:代码提交→Git钩子触发→Jenkins拉取代码→清空旧项目→发布新代码→重启Tomcat
-
生产优化点:生产环境建议拆分Jenkins节点和Tomcat服务器,使用SSH远程发布,不要本地同机部署
-
核心痛点:一定要修改Jenkins运行用户为root,否则目录权限不足导致发布失败
更多推荐

所有评论(0)