>  기사  >  백엔드 개발  >  PHP에서 git 배포를 구현하는 방법

PHP에서 git 배포를 구현하는 방법

coldplay.xixi
coldplay.xixi원래의
2020-09-29 09:52:541955검색

PHP에서 git 배포를 구현하는 방법: 먼저 git을 구성하고 sudo 비밀번호를 설정하지 않은 다음 후크를 설정하세요. 코드는 [touch post-receive]입니다. 마지막으로 후크 실행 권한을 추가하세요. 코드는 [chmod a+x]입니다. .git/hooks /post-receive].

PHP에서 git 배포를 구현하는 방법

PHP에서 git 배포 구현 방법:

계정 관련

useradd -m git //新增git账号
ssh-keygen //密钥生成,如果已经有了可略过
su git //切换至git账号
cd ~ //切换到git账号根目录
mkdir .ssh //创建.ssh目录
cat /密钥存放目录/xxx.pub >> ~/.ssh/authorized_keys //设置公钥

여기서 권한 문제에 주의하세요. 그렇지 않으면 키 로그인이 적용되지 않습니다. 각 폴더에 해당하는 권한은 다음과 같습니다.

.ssh文件夹权限 700
id_rsa 600
id_rsa.pub 644
authorized_keys 600

파일 권한 설정

git과 nginx 또는 apache를 실행하는 사용자를 동일한 사용자 그룹의 사이트에 넣습니다. 예: www

vim /etc/passwd git 계정과 www 계정을 찾아 그룹 ID를 변경합니다. git 계정은 www 그룹 ID와 일치해야 합니다

사이트는 다음에 속합니다. 사용자는 git으로 설정되고 사용자 그룹은 www로 설정됩니다. //nginx와 git 모두 www 사용자 그룹에 속한다고 가정합니다

디렉터리 권한은 다음과 같습니다. 775로 설정하고 파일 권한은 664로 설정

웨어하우스 코드

서버측

cd 站点目录
git init //初始化目录

git 구성

git config receive.denyCurrentBranch ignore //设置仓库接受代码提交

sudo 비밀번호 프리 설정

vim /etc/sudoers
# Defaults secure_path 中若没有你要的命令,要注意添加
# php的命令默认需要在 secure_path最后面添加 :/usr/local/php/bin"
在 root ALL=(ALL) ALL 下面一行添加
git ALL=(ALL) NOPASSWD:ALL 
# 保存退出 ,这样针对laravel 要重启队列命令就可以使用了.
# sudo php artisan queue:restart

후크 설정

cd .git/hooks //切换至站点钩子目录
touch post-receive //创建接收提交时钩子
// 钩子文件内容如下:
#!/bin/sh
# 设置账号创建文件的默认权限
umask 002
unset GIT_DIR
cd ..
git checkout -f
# 执行PHP钩子逻辑
/usr/bin/curl http(s)://域名/钩子文字位置/hook.php
# 如果有使用laravel队列则需要重启队列进程,让新代码生效
# sudo php artisan queue:restart
exit 0

hook.php 콘텐츠

<?php
/**
 * git上传执行钩子
 */
//TODO 安全限制
//TODO 其他钩子行为
// 清除opcache
if (version_compare(PHP_VERSION, &#39;5.5.0&#39;, &#39;>=&#39;)) {
 opcache_reset();
}

훅 증가 실행 권한

chmod a+x .git/hooks/post-receive

로컬 코드

git remote add 远程仓库名称 ssh://git@IP地址:/站点目录 //添加远程仓库
git push 远程仓库名称 master

특별한 주의

사용자가 업로드한 이미지 디렉터리는 파일 무시 작업을 수행해야 합니다. 그렇지 않으면 추적되지 않은 파일을 삭제할 때 파일의 이 부분을 삭제하여 치명적인 결과를 초래할 수 있습니다

프로그래밍에 대해 더 자세히 알고 싶다면 php training 칼럼을 주목해주세요!

위 내용은 PHP에서 git 배포를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.