今天我们继续DevOps内容Jenkins自动化部署PHP项目

1、实验环境

需要准备三台服务器充当:git、jenkins、web

2、准备git仓库

bash 复制代码
[root@git ~]# useradd git
[root@git ~]# echo "123" | passwd --stdin git
[root@git ~]# su - git
上一次登录:三 8月 23 20:41:53 CST 2023pts/0 上
[git@git ~]$ mkdir php.git
[git@git ~]$ cd php.git
#--bare:创建一个裸仓库。裸仓库是一种特殊的Git仓库,它不包含工作目录(没有文件的检出和编辑空间),主要用于共享,是作为远程仓#库被其他仓库推送(push)和拉取(pull)的中心存储库。
[git@git php.git]$ git --bare init
#初始化空的 Git 版本库于 /home/git/php.git/
[git@git php.git]$ exit
#登出

3、上传代码到仓库

bash 复制代码
[root@git ~]# git clone git@192.168.166.9:/home/git/php.git
正克隆到 'php'...
git@192.168.200.111's password: 
warning: 您似乎克隆了一个空版本库。
[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"
[master(根提交) 4ec0ba3] all
 1 file changed, 3 insertions(+)
 create mode 100644 index.php
[root@git php]# git push origin master
git@192.168.166.9's password: 
Counting objects: 3, done.
Writing objects: 100% (3/3), 218 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@192.168.166.9:/home/git/php.git
* [new branch]      master -> master

4、部署web主机环境

bash 复制代码
yum install -y nginx php php-mysqlnd mysql-server php-fpm
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;
            #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi.conf;
        }
...
}
}
systemctl start  php-fpm mysqld nginx

6、基于rsync部署

创建一个Freestyle project

7、 基于ansible部署

bash 复制代码
[root@jenkins ~]# rpm -ivh epel-release-latest-7.noarch.rpm 
[root@jenkins ~]# yum -y install ansible
[root@jenkins ~]# vim /etc/ansible/hosts
[webserver]
192.168.166.6

修改jenkins运行用户

bash 复制代码
[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

添加Ansible插件

bash 复制代码
[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;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf; 
      	.....
[root@web ~]# systemctl restart nginx
相关推荐
RisunJan1 小时前
Linux命令-rlogin(远程登录)
linux·运维
一孤程3 小时前
Airtest自动化测试第五篇:小程序与Web测试——跨平台自动化全覆盖
前端·自动化测试·小程序·自动化·测试·airtest
大飞记Python4 小时前
Linux命令速查手册(测试开发4年实战总结,附PDF)
linux·网络·pdf
木木子226 小时前
[特殊字符] 音乐播放器——状态驱动的多媒体控制
android·开发语言·华为·php·harmonyos
顾喵6 小时前
PetaLinux 2017.4 实操指南:PREEMPT_RT实时补丁移植+Zynq PL中断UIO用户态配置(超完整避坑版)
linux
酷酷的身影6 小时前
Drivers/LedManager.cs
开发语言·php
小樱花的樱花6 小时前
Linux 线程的创建
linux·c语言·开发语言
云飞云共享云桌面7 小时前
单机建模卡顿运维繁琐!中小型机械制造厂云飞云 3D 云桌面落地
运维·服务器·网络·3d·自动化·电脑·负载均衡
mounter6257 小时前
BPF 的进化史:从网络过滤器到 AI 时代的 Linux 核心引擎
linux·网络·人工智能·ebpf·linux kernel·kernel
可靠的仙人掌7 小时前
SAC(Soft Actor-Critic)算法底座
开发语言·算法·php