PHP 스크립트의 git 자동 배포를 구현하는 방법: 1. 웨어하우스 코드를 복제합니다. 3. Linux 권한을 변경하고 구성을 수정합니다. 4. sudoers에 www 사용자를 추가합니다. .웹훅 도메인 이름을 입력하고 PHP 스크립트를 업로드합니다.
이 문서의 운영 환경: Linux5.9.8 시스템, Git 버전 2.30.0, DELL G3 컴퓨터
PHP 스크립트의 git 자동 배포를 구현하는 방법은 무엇입니까?
git+php 자동 webhook 배포 코드 동기화를 달성하는 스크립트
이 기사에서는 코드 동기화를 달성하기 위해 웹훅 자동화 스크립트를 배포하는 git+php를 소개합니다
웹훅 자동화 배포를 사용하는 Git은 정교한 기술은 아니지만 많은 우회를 했습니다. 첫 번째 배포에서는 주로 Linux 초보자로 간주됩니다. 이 문서에서는 오류가 발생하기 쉬운 문제와 함정을 기록합니다.
준비
접근 가능한 웹 도메인 이름, 서버 측 PHP 스크립트 및 웨어하우스 코드 클라우드 gitee
자동 프로세스 배포 lnmp 환경에서는 로컬 push->gitee Warehouse webhook->linux server php script pull
먼저 gitee 코드 클라우드에 웨어하우스를 만듭니다
SSH 프로토콜을 사용하여 로컬에서 웨어하우스와 통신합니다. SSH 공개 주소를 생성하는 방법은 아래에 소개합니다. Linux에서 소개될 키
1. git
yum install git
를 설치합니다. 2. 웨어하우스 코드를 복제합니다. "Ssh 프로토콜을 사용해야 하며 나머지는 SSH 기반입니다. "
git initgit clone git@gitee.com:zhuyanbin/HiAdmin.git
3. Linux 권한 변경 및 구성 수정
웹훅이 서버에 외부 접속임을 알리기 때문에 여기서 관리자 사용자는 기본적으로 www 사용자이므로 www에 충분한 권한을 부여해야 합니다
vim /etc/passwd 添加下面的一行 www:x:1001:1001::/home/www:/bin/bash
1001은 사용자 그룹의 ID입니다. 다음 명령을 사용하여 사용자의 ID를 확인하세요 www
cat /etc/group
www 사용자를 sudoers에 추가하고 비밀번호 없이 쉘을 실행하세요
#(1) sudoers를 쓸 수 있는 권한을 추가하세요 현재 사용자
chmod u+w /etc/sudoers
#(2) Edit sudoers
vim /etc/sudoers
#(3) Allow root to run any Command Anywhere를 검색하고 루트 사용자의 해당 줄 아래에 다음 내용을 작성합니다.
www ALL=(ALL) NOPASSWD:/usr/bin/git
#(4) 다시 가져오기 sudoers
chmod u-w /etc/sudoers
에 대한 쓰기 권한 방문자를 설정하려면 php-fpm.conf 구성을 수정하세요. 여기도 www입니다. 이는 php
의 기본 구성입니다. 4. 마지막으로 키를 생성합니다(이 단계에서는 반드시 키를 생성하려면 www 사용자가 되십시오. ps: 저는 이틀 동안 이 곳에 갇혀 있었고 루트 관리자 계정을 사용하여 키를 생성했습니다. Baidu는 며칠 동안 다양한 방법을 시도한 다음 www로 전환했습니다. 사용자가 키를 생성했고 모든 것이 정상이었습니다)
공개 키 생성
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 권한이 됩니다. 풀 권한만 있고 다른 하나는 계정의 공개 키입니다. 개인 계정의 공개 키를 입력하면 여기에서 개인 계정 공개 키를 직접 사용합니다. .마지막으로 웹훅 도메인 이름을 입력하고 PHP 스크립트를 업로드합니다
웹훅 알림 주소 도메인 이름을 입력합니다(비밀번호 설정이 비어 있으며 나중에 PHP에서 비밀번호 확인이 없으므로 보안을 고려하면 나중에 비밀번호를 설정하세요)
PHP 스크립트 핸들러 Hook.php(리눅스 명령 실행)를 올려주세요
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 스크립트가 실행되지 않습니다 그 이유는 Linux 스크립트 함수 exec() 실행을 포함하여 php.ini의 많은 PHP 함수가 기본적으로 열리지 않기 때문입니다.
php.ini를 찾고, 비활성화_함수를 찾으세요. 2. git pull 명령을 실행할 수 없습니다
문제 1
호스트 키 확인에 실패했습니다.
꼭 확인해주세요 올바른 액세스 권한이 있고
저장소가 존재합니다.归根结底还是因为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视频教程》
위 내용은 PHP 스크립트의 Git 자동 배포를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!