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

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

Jan 11, 2022 am 09:40 AM
git php

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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

GITでリポジトリを削除する方法 GITでリポジトリを削除する方法 Apr 17, 2025 pm 04:03 PM

gitリポジトリを削除するには、次の手順に従ってください。削除するリポジトリを確認します。リポジトリのローカル削除:RM -RFコマンドを使用して、フォルダーを削除します。倉庫をリモートで削除する:倉庫の設定に移動し、「倉庫の削除」オプションを見つけて、操作を確認します。

Gitサーバーのパブリックネットワークに接続する方法 Gitサーバーのパブリックネットワークに接続する方法 Apr 17, 2025 pm 02:27 PM

GITサーバーをパブリックネットワークに接続するには、5つのステップが含まれます。1。パブリックIPアドレスのセットアップ。 2。ファイアウォールポート(22、9418、80/443)を開きます。 3。SSHアクセスを構成します(キーペアを生成し、ユーザーを作成します)。 4。http/httpsアクセスを構成します(サーバーをインストールし、許可を構成); 5.接続をテストします(SSHクライアントまたはGITコマンドを使用)。

GITコードの競合に対処する方法 GITコードの競合に対処する方法 Apr 17, 2025 pm 02:51 PM

コード競合とは、複数の開発者が同じコードを変更し、GITが変更を自動的に選択せずにマージすると発生する競合を指します。解決手順には、競合するファイルを開き、競合するコードを見つけます。コードを手動でマージし、競合マーカーに保持する変更をコピーします。競合マークを削除します。変更を保存して送信します。

Gitで空のフォルダーを送信する方法 Gitで空のフォルダーを送信する方法 Apr 17, 2025 pm 04:09 PM

GITで空のフォルダーを送信するには、次の手順に従ってください。1。空のフォルダーを作成します。 2.フォルダーをステージング領域に追加します。 3.変更を送信して、コミットメッセージを入力します。 4。(オプション)変更をリモートリポジトリに押します。注:空のフォルダーの名前は開始できません。フォルダーが既に存在する場合は、git addを使用して追加する必要があります。

GitでSSHキーを生成する方法 GitでSSHキーを生成する方法 Apr 17, 2025 pm 01:36 PM

リモートGitサーバーに安全に接続するには、パブリックキーとプライベートキーの両方を含むSSHキーを生成する必要があります。 SSHキーを生成する手順は次のとおりです。端子を開き、ssh -keygen -t rsa -b 4096を入力します。キー保存場所を選択します。秘密鍵を保護するには、パスワード句を入力します。公開キーをリモートサーバーにコピーします。アカウントにアクセスするための資格情報であるため、秘密鍵を適切に保存します。

Gitアカウントにパブリックキーを追加する方法 Gitアカウントにパブリックキーを追加する方法 Apr 17, 2025 pm 02:42 PM

Gitアカウントに公開キーを追加する方法は?ステップ:SSHキーペアを生成します。公開キーをコピーします。 gitlabまたはgithubに公開キーを追加します。 SSH接続をテストします。

Git Rebaseの使用方法 Git Rebaseの使用方法 Apr 17, 2025 pm 04:00 PM

Git Rebaseは、履歴をクリーンアップしたり、ブランチを再配置するために、新しいベースラインにコミットを再適用するために使用されます。使用方法:ターゲットブランチの作成コミットを再適用するためにコミットを選択し、Git Rebaseコマンドを実行し、ターゲットブランチを指定し、競合を解決するための範囲をコミットし、残りのコミット検証の変更を再申請し続けます。

GITリポジトリの使用方法 GITリポジトリの使用方法 Apr 17, 2025 pm 04:06 PM

GITリポジトリは、変更の追跡、コラボレーション、プロジェクトバージョンの管理に使用されるコードおよびファイルバージョン履歴のストレージ場所です。 GITリポジトリを使用するには、次の手順を実行します。リポジトリを作成します。GITinitを実行します。ファイルの追加:gitを使用して、ファイルをステージング領域に追加します。コミットの変更:Git Commitを使用して、リポジトリにステージングの変更を保存します。変更の変更:Git Pushを使用して、変更をリモートリポジトリに押します。 Pullの変更:Git Pullを使用して、リモートリポジトリから変更を取得します。ブランチ:gitブランチを使用してブランチを作成します。マージ:gitマージを使用して、異なるブランチからの変更をマージします。タグ:gitタグを使用します

See all articles