ホームページ >バックエンド開発 >PHPの問題 >PHP スクリプトの Git 自動デプロイメントを実装する方法

PHP スクリプトの Git 自動デプロイメントを実装する方法

藏色散人
藏色散人オリジナル
2022-01-11 09:40:422554ブラウズ

php スクリプトの git 自動デプロイメントを実装する方法: 1. git をインストールする; 2. ウェアハウス コードを複製する; 3. Linux 権限を変更し、設定を変更する; 4. www ユーザーを sudoers に追加する; 5. 生成するキー; 6 、Webhook ドメイン名を入力し、PHP スクリプトをアップロードします。

PHP スクリプトの Git 自動デプロイメントを実装する方法

この記事の動作環境: 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 ウェアハウス webhook->linux サーバー php スクリプト プル

まず 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.
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

PHP スクリプトの Git 自動デプロイメントを実装する方法

4. 最後にキーを生成します (このステップは www ユーザーがキーを生成する必要があります。追記: この場所は 2 日間スタックしています。私は root を使用しています。管理者アカウントで生成します。数日間 Baidu を試し、さまざまな方法を試しました。その後、www ユーザーに切り替えてキーを生成しましたが、すべて問題ありませんでした。)

PHP スクリプトの Git 自動デプロイメントを実装する方法公開キーのキーを生成

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 ドメイン名を入力しますPHP スクリプトの Git 自動デプロイメントを実装する方法
# Webhook 通知アドレスのドメイン名を入力します (パスワードの設定は空です。後で PHP でのパスワード検証はありません。セキュリティを考慮する場合は、後でパスワードを設定してください)


PHP スクリプト ハンドラーhook.php に移動します (Linux コマンドを実行) PHP スクリプトの Git 自動デプロイメントを実装する方法

    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 コマンドを実行できません
PHP スクリプトの Git 自動デプロイメントを実装する方法問題 1

ホスト キーの検証に失敗しました。

致命的: リモート リポジトリから読み取れませんでした。

正しいアクセス権があることを確認してください。

、リポジトリが存在すること。

归根结底还是因为linux权限的问题,我遇到的是出现一下问题
PHP スクリプトの Git 自動デプロイメントを実装する方法
到这里的原因是因为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 スクリプトの Git 自動デプロイメントを実装する方法
自己的后端语言是php,这里可以用多种方式去实现执行linux脚本,nodejs,python等等

推荐学习:《PHP视频教程

以上がPHP スクリプトの Git 自動デプロイメントを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。