news 2026/6/9 23:51:29

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/5/30 13:34:26

Janus-Pro-7B:单模型实现多模态理解与生成

Janus-Pro-7B&#xff1a;单模型实现多模态理解与生成 【免费下载链接】Janus-Pro-7B Janus-Pro-7B&#xff1a;新一代自回归框架&#xff0c;突破性实现多模态理解与生成一体化。通过分离视觉编码路径&#xff0c;既提升模型理解力&#xff0c;又增强生成灵活性&#xff0c;性…

作者头像 李华
网站建设 2026/6/7 4:58:28

C++课后习题训练记录Day54

1.练习项目&#xff1a; 输入描述 第一行是整数 n(0<n<1000000)。 第二行包含 n 个数&#xff0c;表示 n 种糖果的数量 mi&#xff0c;0<mi<1000000。 输出描述 输出一行&#xff0c;包含一个 Yes 或 No。 2.选择课程 在蓝桥云课中选择题库&#xff0c;选择…

作者头像 李华
网站建设 2026/6/9 14:26:17

企业级分布式任务调度:3大核心能力如何将运维成本降低73%

企业级分布式任务调度&#xff1a;3大核心能力如何将运维成本降低73% 【免费下载链接】snail-job &#x1f525;&#x1f525;&#x1f525; 灵活&#xff0c;可靠和快速的分布式任务重试和分布式任务调度平台 项目地址: https://gitcode.com/aizuda/snail-job 在当今微…

作者头像 李华
网站建设 2026/6/9 14:26:05

冬至周末的工作生活平衡术:我是这样实现文件自由访问的

冬至遇上周末&#xff0c;本应是家人团聚的美好时光&#xff0c;但很多职场人都会面临这样的纠结&#xff1a;既想安心陪伴家人&#xff0c;又担心突发工作需要处理。节点小宝或许能给大家带来一些启发。那个周五晚上的烦恼记得冬至前的周五晚上&#xff0c;用户A小王一边收拾行…

作者头像 李华
网站建设 2026/6/8 23:18:27

深度解析:Flyte与Spark集成构建企业级数据处理平台

深度解析&#xff1a;Flyte与Spark集成构建企业级数据处理平台 【免费下载链接】flyte Scalable and flexible workflow orchestration platform that seamlessly unifies data, ML and analytics stacks. 项目地址: https://gitcode.com/gh_mirrors/fl/flyte 还在为大规…

作者头像 李华
网站建设 2026/6/10 2:03:17

高效构建语音识别API:FastAPI与Whisper实战指南

高效构建语音识别API&#xff1a;FastAPI与Whisper实战指南 【免费下载链接】awesome-fastapi A curated list of awesome things related to FastAPI 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-fastapi 在数字化时代&#xff0c;语音识别API已成为现代应用…

作者头像 李华