news 2026/2/22 14:26:33

Jenkins 自动化部署 PHP 项目

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Jenkins 自动化部署 PHP 项目

1. 准备实验环境

搭建包含 Git 仓库主机、Jenkins 主机和 Web 主机的环境。

2. 准备 Git 仓库

  • 在 Git 主机上创建 git 用户并设置密码:
[root@git ~]# useradd git [root@git ~]# echo "123" | passwd --stdin git
  • 切换到 git 用户,创建并初始化裸仓库:
[root@git ~]# su - git [git@git ~]$ mkdir php.git [git@git ~]$ cd php.git [git@git php.git]$ git --bare init [git@git php.git]$ exit

3. 上传代码到仓库

  • 克隆仓库到本地:
[root@git ~]# git clone git@192.168.166.9:/home/git/php.git
  • 创建 PHP 测试文件并提交推送:
[root@git ~]# cd php/ [root@git php]# cat << EOF > index.php <?php phpinfo(); ?> EOF [root@git php]# git add . [root@git php]# git commit -m "all" [root@git php]# git push origin master

4. 部署 Web 主机环境

nginx

  • 安装相关软件:
yum install -y nginx php php-mysqlnd mysql-server php-fpm
  • 配置 nginx.conf 文件,添加 PHP 解析相关配置:
cd /etc/nginx/ mv nginx.conf nginx.conf.back cp nginx.conf.default nginx.conf vim nginx.conf http { ... include conf.d/*.conf; ... server { ... location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; root html; fastcgi_pass php-fpm; fastcgi_index index.php; include fastcgi.conf; } ... } }
  • 启动服务:
systemctl start php-fpm mysqld nginx

5. Jenkins 主机配置密钥认证

  • 切换到 jenkins 用户,生成密钥并分发到 Web 主机和 Git 仓库主机:
[root@jenkins ~]# su -s /bin/bash jenkins bash-4.2$ ssh-keygen bash-4.2$ ssh-copy-id root@192.168.158.5 bash-4.2$ ssh-copy-id git@192.168.158.4

6. 基于 rsync 部署

  1. 在 Jenkins 中创建一个 Freestyle project。
  2. 进行相关配置(具体配置参考相关图示)。
  3. 点击 “build Now” 执行部署。

7. 基于 ansible 部署

  • 在 Jenkins 主机上安装 ansible:
[root@jenkins ~]# rpm -ivh epel-release-latest-7.noarch.rpm [root@jenkins ~]# yum -y install ansible
  • 配置 ansible 主机清单:
[root@jenkins ~]# vim /etc/ansible/hosts [webserver] 192.168.166.6
  • 修改 Jenkins 运行用户:
[root@jenkins ~]# vim /usr/lib/systemd/system/jenkins.service User=root Group=root [root@jenkins ~]# systemctl daemon-reload [root@jenkins ~]# systemctl restart jenkins
  • 设置 SSH 免密登录:
[root@jenkins ~]# ssh-keygen -N '' -f ~/.ssh/id_rsa [root@jenkins ~]# ssh-copy-id root@192.168.158.5 [root@jenkins ~]# ssh-copy-id git@192.168.158.4
  1. 在 Jenkins 中添加 Ansible 插件。
  2. 配置 Web 主机的 nginx.conf 文件,设置网站根目录等信息并重启 nginx:
[root@web ~]# cat /etc/nginx/nginx.conf server { listen 80; listen [::]:80; server_name _; root /usr/share/nginx/html/php-ansible; index index.html index.php; include /etc/nginx/default.d/*.conf; ..... [root@web ~]# systemctl restart nginx

8. 使用 pipeline 部署

  • 创建 Pipeline 项目,编写 Pipeline 脚本:
pipeline { agent any stages { stage('Checkout Code') { steps { // 使用 SSH 方式拉取 Git 代码 git branch: 'master', // 替换为你的分支名称 url: 'git@192.168.158.4:/home/git/discuz.git' // 替换为你的 Git 仓库地址 } } stage('Deploy to Server') { steps { sh 'scp -r ** root@192.168.158.5:/usr/share/nginx/html/ ;' } } } post { success { echo 'Deployment successful!' } failure { echo 'Deployment failed!' } } }
  • 执行部署。

9. Discuz 论坛部署

1. Git 主机准备 Discuz 代码
  1. 克隆 Discuz 代码到本地(以官方仓库为例,或上传本地 Discuz 源码):

    [root@git ~]# cd /home/git/ [root@git git]# git clone https://gitee.com/ComsenzDiscuz/DiscuzX.git discuz [root@git git]# cd discuz
  2. 初始化并推送到私有 Git 仓库

    [root@git discuz]# git init [root@git discuz]# git add . [root@git discuz]# git commit -m "initial discuz code" [root@git discuz]# git remote add origin git@192.168.166.9:/home/git/discuz.git # 关联私有仓库 [root@git discuz]# git push -u origin master # 推送代码
2. Web 主机环境配置
  1. 创建网站根目录并授权(以 Nginx 为例):

    [root@web ~]# mkdir -p /usr/share/nginx/html/discuz [root@web ~]# chown -R nginx:nginx /usr/share/nginx/html/discuz # 确保 Web 服务有权限访问
  2. 配置数据库(创建 Discuz 专用数据库和用户):

    [root@web ~]# mysql -u root -p Enter password: # 输入数据库密码 mysql> CREATE DATABASE discuz_db CHARACTER SET utf8mb4; # 创建数据库 mysql> CREATE USER 'discuz_user'@'localhost' IDENTIFIED BY '123456'; # 创建用户 mysql> GRANT ALL PRIVILEGES ON discuz_db.* TO 'discuz_user'@'localhost'; # 授权 mysql> FLUSH PRIVILEGES; mysql> exit
  3. 调整 PHP 配置(确保满足 Discuz 需求):

    [root@web ~]# vim /etc/php.ini # 修改以下参数(根据实际环境调整) upload_max_filesize = 20M post_max_size = 20M max_execution_time = 300 [root@web ~]# systemctl restart php-fpm # 重启 PHP 服务
3. Jenkins 部署配置(基于 Pipeline)
  1. 修改 Pipeline 脚本(适配 Discuz 部署):

    pipeline { agent any stages { stage('Checkout Code') { steps { // 拉取 Discuz 代码 git branch: 'master', url: 'git@192.168.158.4:/home/git/discuz.git' # 私有仓库地址 } } stage('Deploy to Web Server') { steps { // 同步代码到 Web 主机目录 sh 'scp -r ./* root@192.168.158.5:/usr/share/nginx/html/discuz/' // 远程授权(确保文件权限正确) sh 'ssh root@192.168.158.5 "chown -R nginx:nginx /usr/share/nginx/html/discuz"' } } } post { success { echo 'Discuz deployment successful! Please complete installation via browser.' } failure { echo 'Discuz deployment failed!' } } }
  2. 执行部署:在 Jenkins 中运行 Pipeline 项目,等待代码同步完成。

4. 浏览器完成 Discuz 安装
  1. 访问 Web 主机地址(如http://192.168.158.5/discuz),进入 Discuz 安装向导。
  2. 按照提示完成以下步骤:
    • 同意许可协议,点击 “下一步”。
    • 检查环境(确保所有项均为 “符合”),点击 “下一步”。
    • 选择 “全新安装”,输入数据库信息:
      • 数据库名:discuz_db
      • 数据库用户:discuz_user
      • 数据库密码:123456
    • 设置管理员账号和密码,完成安装。
5. 验证部署
  1. 安装完成后,访问论坛首页确认正常显示。
  2. 登录管理员账号,检查功能是否正常(如发帖、上传附件等)。
  3. 后续代码更新可直接提交到 Git 仓库,Jenkins 会自动触发部署(需配置 Git 钩子或定时构建)。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/16 20:30:33

rusefi:免费开源ECU平台,让汽车控制更智能

rusefi是一个基于GPL许可证的开源ECU&#xff08;电子控制单元&#xff09;项目&#xff0c;为汽车爱好者、工程师和开发者提供完整的发动机控制系统解决方案。无论您是想进行汽车ECU改装、学习发动机控制单元开发&#xff0c;还是构建原型系统&#xff0c;rusefi都能为您提供强…

作者头像 李华
网站建设 2026/2/20 8:34:31

小鼠大脑立体定位图谱终极指南:从零基础到精准定位的完整教程

小鼠大脑立体定位图谱终极指南&#xff1a;从零基础到精准定位的完整教程 【免费下载链接】小鼠大脑立体定位图谱资源文件介绍 《小鼠大脑立体定位图谱》是一本由澳大利亚新南威尔士大学Paxinos教授编写的权威解剖图谱&#xff0c;填补了国内小鼠脑组织解剖资源的空白。本书包含…

作者头像 李华
网站建设 2026/2/21 4:25:27

Flutter广告监测终极方案:用AdSpark Pro构建精准归因与增长引擎

你是否曾因广告数据黑洞而错失增长良机&#xff1f;是否在复杂的渠道归因中迷失方向&#xff1f;作为移动应用开发者&#xff0c;我们深知广告效果追踪的痛点。本文将为你揭示三步构建精准归因体系的完整方案&#xff0c;让每一分广告投入都产生可衡量的回报。 【免费下载链接】…

作者头像 李华
网站建设 2026/2/20 21:34:25

3大Python开源项目终极对决:谁才是你的最佳选择?

还在为选择Python开源项目而烦恼&#xff1f;面对众多功能强大的应用&#xff0c;你是否常常感到无从下手&#xff1f;Home Assistant、Calibre和Django三大明星项目各有千秋&#xff0c;本文将从实际使用场景、技术门槛、扩展性等多个维度为你深度解析&#xff0c;帮你找到最适…

作者头像 李华
网站建设 2026/2/16 4:40:25

Langchain-Chatchat矿业安全规程:井下作业标准操作指引

Langchain-Chatchat矿业安全规程&#xff1a;井下作业标准操作指引 在煤矿、金属矿等地下作业环境中&#xff0c;安全规程的执行直接关系到一线工人的生命安危。然而现实中&#xff0c;面对厚厚一叠《煤矿安全规程》或《动火作业审批流程》&#xff0c;即便是经验丰富的安全员也…

作者头像 李华