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/
<?php phpinfo(); ?>
[root@git php]# cat << EOF > index.phpEOF
[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 部署
- 在 Jenkins 中创建一个 Freestyle project。
- 进行相关配置(具体配置参考相关图示)。
- 点击 "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
-
在 Jenkins 中添加 Ansible 插件。
-
配置 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 代码
-
克隆 Discuz 代码到本地(以官方仓库为例,或上传本地 Discuz 源码):
[root@git ~]# cd /home/git/ [root@git git]# git clone https://gitee.com/ComsenzDiscuz/DiscuzX.git discuz [root@git git]# cd discuz -
初始化并推送到私有 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 主机环境配置
-
创建网站根目录并授权(以 Nginx 为例):
[root@web ~]# mkdir -p /usr/share/nginx/html/discuz [root@web ~]# chown -R nginx:nginx /usr/share/nginx/html/discuz # 确保 Web 服务有权限访问 -
配置数据库(创建 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 -
调整 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)
-
修改 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!' } } } -
执行部署:在 Jenkins 中运行 Pipeline 项目,等待代码同步完成。
4. 浏览器完成 Discuz 安装
- 访问 Web 主机地址(如
http://192.168.158.5/discuz),进入 Discuz 安装向导。 - 按照提示完成以下步骤:
- 同意许可协议,点击 "下一步"。
- 检查环境(确保所有项均为 "符合"),点击 "下一步"。
- 选择 "全新安装",输入数据库信息:
- 数据库名:
discuz_db - 数据库用户:
discuz_user - 数据库密码:
123456
- 数据库名:
- 设置管理员账号和密码,完成安装。
5. 验证部署
- 安装完成后,访问论坛首页确认正常显示。
- 登录管理员账号,检查功能是否正常(如发帖、上传附件等)。
- 后续代码更新可直接提交到 Git 仓库,Jenkins 会自动触发部署(需配置 Git 钩子或定时构建)。