php スクリプトの git 自動デプロイメントを実装する方法: 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 自動化スクリプトを紹介します。 Webhook 自動デプロイメントを使用した Git は高度なテクノロジーではありませんが、開発には多くの回り道がありました。初めての展開、主に私は Linux の初心者だと考えられています。この記事では、間違いやすい問題と遭遇する落とし穴について記録します。
準備 アクセス可能な Web ドメイン名とサーバー側を展開するlnmp 環境の php スクリプトウェアハウス コード クラウド gitee
まず gitee コード クラウド上にウェアハウスを作成します
ウェアハウスとローカルで通信するための ssh プロトコル 通信には、ローカル コンピューターは Windows です。ssh 公開キーの生成方法はここでは紹介しません。Linux
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
cat /etc/group
の ID を表示するには、次のコマンドを実行します。www ユーザーを sudoers に追加し、パスワードなしで実行します。shell
#(1)現在のユーザーに sudoers への書き込み権限を追加します。
chmod u+w /etc/sudoers
#(2)sudoers の編集
vim /etc/sudoers
#(3)「どこでも root が任意のコマンドを実行できるようにする」を検索し、root ユーザーの対応する行の下に次の内容を書き込みます。
www ALL=(ALL) NOPASSWD:/usr/bin/git#(4) sudoers
chmod u-w /etc/sudoersへの書き込み権限を取り戻します php-fpm.conf 設定を変更して訪問者を設定します、私のここは www で、これはデフォルトの設定ですphp
公開キーのキーを生成
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 が公開キーを入力する場所は 2 つあります。1 つはウェアハウスの公開キーです。ウェアハウスの公開キーを入力すると、サーバーの Git 権限はプル権限のみになり、もう 1 つは公開権限になります。アカウントのキー。キー、個人アカウントの公開キーを入力すると、プル、プッシュ、その他の権限が与えられます。個人アカウントの公開キーはここで直接使用します
5. 最後に Webhook ドメイン名を入力します
# 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. Linux スクリプト関数 exec()、shell_exec() の実行を含む、ini 内の多くの php 関数がデフォルトで有効になっていません。など。
php.ini を検索し、disable_functions 行を見つけて対応する関数を削除するか、行全体をコメントアウトします。
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 中国語 Web サイトの他の関連記事を参照してください。