git自动化部署php脚本的实现方法:1、安装git;2、克隆仓库代码;3、更改linux权限,修改配置;4、将www用户加入sudoers;5、生成密钥;6、填写webhook域名,上传php脚本即可。
本文操作环境:linux5.9.8系统、Git 2.30.0版、DELL G3电脑
git自动化部署php脚本怎么实现?
git+php部署webhook自动化脚本 实现代码同步
本文将介绍git+php部署webhook自动化脚本 实现代码同步
git配合webhook自动化部署不算是个高深的技术,但是第一次自己部署中走了很多弯路,主要自己在linux方面算是个菜鸡,本文记录一下容易出错的问题点,遇到的坑
准备
lnmp环境下部署可访问的web域名,服务端php脚本,仓库码云gitee
自动化流程,本地push->gitee仓库webhook->linux服务器php脚本pull
首先在gitee码云上创建仓库
本地使用ssh协议与仓库进行通讯,我的本地是windows,这里就不介绍怎么生成ssh公钥,下面linux下将会介绍
1.安装git
yum install git
2.克隆仓库代码《注意一定要使用ssh协议,后面都是基于ssh》
git initgit clone git@gitee.com:zhuyanbin/HiAdmin.git
3.更改linux权限,修改配置
因为我们webhook去通知服务端属于外部访问,所以这里的管理员用户默认是www用户,所以要给定www足够的权限才行
vim /etc/passwd 添加下面的一行 www:x:1001:1001::/home/www:/bin/bash
1001是用户组的id,使用以下命令可查看用户www的id
cat /etc/group
将www用户加入sudoers并可以无密码执行shell
#(1)为当前用户添加写入sudoers的权限
chmod u+w /etc/sudoers
#(2)编辑sudoers
vim /etc/sudoers
#(3)搜索Allow root to run any commands anywhere,在root用户对应行下写入如下内容:
www ALL=(ALL) NOPASSWD:/usr/bin/git
#(4)收回对sudoers的写入权限
chmod u-w /etc/sudoers
修改php-fpm.conf配置设置访问者,我这里是www,也就是php已经默认的配置
4.最后生成密钥(此步必须是www用户生成密钥,ps:在这个地方卡了两天,一直使用root管理员账号生成,百度了好几天,尝试各种方法,后来切换到www用户生成密钥之后一切ok)
生成公钥密钥
mkdir -p /home/www/.ssh
chown -R www.www /home/www/.ssh
ssh-keygen -t rsa
查看公钥密钥
cat /home/www/.ssh/id_rsa.pub
将生成好的公钥复制到gitee码云仓库公钥填写处
https://gitee.com/profile/sshkeys
补充:gitee填写公钥的地方有两个,一个是仓库的公钥,如果填写到仓库的公钥,服务端git权限将只有pull的权限,另一个是账号的公钥,如果填写到个人账号的公钥,将会有pull,push等权限,我这里直接使用的个人账号公钥
5.最后填写webhook域名,上php脚本
填写webhook通知地址域名(密码设置的空,后面php中没有密码验证,如果考虑安全,请在后面设置密码)
上php脚本处理程序hook.php(执行linux命令)
chdir("/home/wwwroot/default/HiAdmin"); exec("git pull origin master 2>&1", $out); foreach($out as $v) { echo iconv( 'GB2312','UTF-8', $v)."<br>"; }
到此,配置完以上服务端代码可自动同步,完成自动化部署
出现问题
1.php脚本不执行
原因php.ini中php很多函数是默认没打开包括执行linux脚本函数exec(),shell_exec()等等
找到php.ini,找到disable_functions那一行删除相应的函数即可,或者整行注释掉
2.无法执行git pull命令
问题一
Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
归根结底还是因为linux权限的问题,我遇到的是出现一下问题
到这里的原因是因为root生成git公钥密钥,而切换到www后生成公钥密钥后就成功了(上述第四小步生成公钥,一定使用www生成公钥密钥)
问题二
error: insufficient permission for adding an object to repository database .git/objects
fatal: failed to write object
fatal: unpack-objects failed
这个还是没有权限执行git命令,只需要执行以下
第一步:cd .git/objects 定位到git下的objects文件下 第二步: ls -al 查看git库的所有者(git用户 git组) 第三步: chown -R yourname:yourgrounp * 或者sudo chmod 777 -R .git/objects 提交
最后解决完以上问题,大功告成,上一张成功的截图
自己的后端语言是php,这里可以用多种方式去实现执行linux脚本,nodejs,python等等
推荐学习:《PHP视频教程》
以上是git自动化部署php脚本怎么实现的详细内容。更多信息请关注PHP中文网其他相关文章!

GitHub是一个面向开源及私有软件项目的托管平台,可以让开发者们在这里托管自己的代码,并进行版本控制。GitHub主打的是开源项目与协作,通过这个平台上的开源项目,开发者们可以查看其他开发者的项目源代码,并进行交流和学习。

在git中,“push -u”的意思是将本地的分支版本上传到远程合并,并且记录push到远程分支的默认值;当添加“-u”参数时,表示下次继续push的这个远端分支的时候推送命令就可以简写成“git push”。

GitLab是一种基于Web的Git版本控制库管理软件,旨在帮助开发团队更好地协同工作,提高工作效率。当您第一次登录GitLab时,系统会提示您要更改初始密码以确保账户安全。本文将为大家介绍如何在GitLab上进行第一次登录并更改密码。

在git中,pack文件可以有效的使用磁盘缓存,并且为常用命令读取最近引用的对象提供访问模式;git会将多个指定的对象打包成一个成为包文件(packfile)的二进制文件,用于节省空间和提高效率。

git中pull失败的解决方法:1、利用“git reset --hard”强制覆盖掉自己的本地修改;2、利用“git stash”推送一个新的储藏,拉取之后利用“git stash pop”将修改保存到暂存区;3、若依然出现问题,则将文件保存到暂存区并提交注释即可。

git分支能改名字。改名方法:1、利用git中的branch命令修改本地分支的名称,语法为“git branch -m 旧名字 新名字”;2、利用“git push origin 新名字”命令,在删除远程分支之后将改名后的本地分支推送到远程;3、利用IDEA直接操作修改分支名称即可。

本篇文章给大家带来了关于git的相关知识,其中主要跟大家聊一聊怎么让你的git记录保持整洁,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。

git删除某个分支的方法:1、利用“git branch --delete dev”命令删除本地分支;2、利用“git push origin --delete branch”命令删除远程分支;3、利用“git branch --delete --remotes”命令删除追踪分支。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

Dreamweaver Mac版
视觉化网页开发工具

SublimeText3汉化版
中文版,非常好用

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中