小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

關(guān)于怎么使用 webhooks 自動(dòng)部署博客,詳細(xì)教程文檔!

 小傅哥 2021-12-13

作者:小傅哥
博客:https://

?

沉淀、分享、成長,讓自己和他人都能有所收獲!??

?

目錄

  • 一、前言

  • 二、環(huán)境說明

  • 三、站點(diǎn)配置

    • 1. 環(huán)境安裝

    • 2. 站點(diǎn)配置

    • 3. 訪問站點(diǎn)

  • 四、創(chuàng)建公鑰

    • 1. 查看運(yùn)行用戶

    • 2. 生成和配置公鑰

  • 五、webhooks 更新博客

    • 1. 克隆我的代碼

    • 2. 部署到站點(diǎn)

    • 3. 更改網(wǎng)站運(yùn)行目錄

    • 4. 配置 webhooks

  • 六、部署驗(yàn)證

    • 1. index.php 新增代碼

    • 2. push 代碼到 Github

    • 3. 驗(yàn)證博客更新

    • 4. 查看腳本執(zhí)行日志

    • 5. 查看webhooks推送日志

  • 七、總結(jié)

  • 八、系列推薦

一、前言

小傅哥,我搞了三臺(tái)服務(wù)器,維護(hù)學(xué)校游戲社站點(diǎn),我麻了!

??女粉來信:傅哥,我大二了,就編程學(xué)的還可以的那種大二女生??。最近我不是天天看見一大堆人宣傳服務(wù)器白皮襖嗎,我就在11.1日也買了,還讓宿舍的兩個(gè)同學(xué)一起跟著買了,都買了三年。想著這樣我們?nèi)齻€(gè)人就可以搭建和維護(hù)我們學(xué)校游戲社團(tuán)的站點(diǎn)了,日常維護(hù)著學(xué)校的游戲比賽、宣傳、通知,還能順便就把我學(xué)的編程技術(shù)用上,一舉多得嘛。本來還想,可以趕在 EDG VS DK 的時(shí)候上線秀一下呢,但是域名要備案好多天,只能鴿了。而且隨著我們?nèi)齻€(gè)熬夜的折騰服務(wù)器、做站點(diǎn)網(wǎng)站、備案域名,真是遇到太多問題了,以前感覺課本學(xué)了就能起飛呢,現(xiàn)在全拉胯了。只能一遍學(xué)習(xí)傅哥的云服務(wù)器操作視頻,一遍部署驗(yàn)證,真的學(xué)到了好多好多!再次感謝傅哥!那么現(xiàn)在問題來了,就是傅哥你的B站視頻只有6節(jié),我看完也跟著做了,但這回我遇到了新的問題,就是就是,我三個(gè)服務(wù)器,按照視頻配置完 Nginx 負(fù)載以后,每次都要通過 FTP 把網(wǎng)站文件傳到三個(gè)服務(wù)器上去,有時(shí)候還忘記一個(gè)。這咋弄呀,傅哥給想想辦法嘛。

??傅哥回信:辦法是有的,可以把你的網(wǎng)站代碼設(shè)置私有倉庫傳到 Github 或者 Gitee,這兩個(gè)代碼庫都支持 webhook 簡單說就是當(dāng)你把代碼 push 到代碼庫以后,代碼庫會(huì)調(diào)用你預(yù)先配置好的一個(gè)或者多個(gè)回調(diào)鉤子,其實(shí)也就是調(diào)用你三個(gè)負(fù)載均衡的站點(diǎn)提供的 URL,來通知你現(xiàn)在這個(gè)代碼庫有最新更新的代碼,你可以在收到 URL 的調(diào)用通知以后,通過 git pull 命令把最新上傳的網(wǎng)站代碼,拉取到服務(wù)器上。那么現(xiàn)在的效果就是,你把代碼維護(hù)在 GitHub 以后,上傳最新的網(wǎng)站內(nèi)容以后,三個(gè)站點(diǎn)就可以自動(dòng)部署了,簡要流程如下:

方案流程

  1. 在自己的網(wǎng)站站點(diǎn)中,提供 webhooks URL 訪問地址,配置到 Github/Gitee 代碼庫的 Settings -> Webhooks 在下文中會(huì)有詳細(xì)介紹
  2. 例如圖中 webhooks.php 開發(fā)的內(nèi)容就是在接收到調(diào)用的時(shí)候,獲取入?yún)⒁院箝_始執(zhí)行 git pull 操作 shell_exec("git pull origin main 2>&1");
  3. webhooks 配置完成以后,當(dāng)我們再通過 git push 把本地代碼推送到倉庫(Github/Gitee)的時(shí)候,倉庫就會(huì)調(diào)用全部的 webhooks.php,把倉庫(Github/Gitee)中的代碼拉取到站點(diǎn)中,這樣就完成了整個(gè)站點(diǎn)內(nèi)容的更新。

?? 傅哥,你說的我悟了,但需要你再手把手,操作下!

二、環(huán)境說明

  1. 【必須】使用 Github、Gitee、Codechina 維護(hù)網(wǎng)站代碼,因?yàn)檫@些代碼庫可以支持配置 webhooks
  2. 【必須】Linux 云服務(wù)器(公網(wǎng)IP);安裝Git、安裝Nginx、安裝PHP、安裝FTP
  3. 【可選】使用寶塔運(yùn)維面板,部署站點(diǎn)博客,操作起來會(huì)比較方便

三、站點(diǎn)配置

首先,我們使用 Linux 寶塔運(yùn)維面板,添加一個(gè)博客站點(diǎn),在添加之前需要在寶塔中安裝 Nginx、FTP、PHP模塊,如果你對(duì)這里的操作比較陌生,可以先看小傅哥在B站錄制好的云服務(wù)器學(xué)習(xí)視頻,地址:https://space.bilibili.com/15637440/channel/seriesdetail?sid=479958 PS:當(dāng)然你也可以不使用寶塔,通過命令安裝 Nginx 或者 Apache 服務(wù)器等所需要的軟件也是可以的。

1. 環(huán)境安裝

安裝 Git

  • 需求:在站點(diǎn)接收到 webhooks 回調(diào)時(shí),使用 git pull 拉取網(wǎng)站代碼,所以需要安裝 git
  • 命令:yum -y install git
  • 驗(yàn)證:
[root@CodeGuide ~]# git version
git version 2.27.0

安裝 Nginx、FTP

  • 需求:部署博客站點(diǎn)時(shí)會(huì)需要到Nginx服務(wù)器、FTP上傳
  • 操作:可以直接在寶塔中使用軟件商店進(jìn)行安裝

配置 PHP,允許 exec 腳本指令

  • 需求:由于我們使用的是 PHP 開發(fā)的 webhook 回調(diào)操作,所以這里需要安裝 PHP 模塊

  • 安裝:直接在寶塔的軟件商店中進(jìn)行安裝即可

  • 配置:安裝完 PHP 模塊以后,還需要對(duì) PHP 的 php.ini 進(jìn)行更改,刪除 disable_functions 下的 exec、shell_exec,這樣才能在 webhooks.php 文件中,執(zhí)行腳本命令。如圖:

2. 站點(diǎn)配置

  • 環(huán)境安裝完畢后,就可以添加一個(gè)網(wǎng)站的站點(diǎn)了,你的網(wǎng)站運(yùn)行代碼都需要上傳到這個(gè)站點(diǎn)中,它提供了 FTP 操作以及寶塔運(yùn)維面板中還有一個(gè)文件,可以在線修改站點(diǎn)內(nèi)容。

3. 訪問站點(diǎn)

  • 地址:http://39.96.73.167 - 你換成自己的訪問IP即可
  • 描述:默認(rèn)創(chuàng)建完站點(diǎn),會(huì)在 /www/wwwroot/39.96.73.167 目錄下有一個(gè) index.html 此時(shí)你可以進(jìn)行在線修改

四、創(chuàng)建公鑰

SSH 是 Linux 系統(tǒng)的登錄工具,現(xiàn)在廣泛用于服務(wù)器登錄和各種加密通信。

1. 查看運(yùn)行用戶

一般php運(yùn)行使用的是 www 用戶,我們可以通過 ftp 上傳一個(gè) index.php 到站點(diǎn)根目錄下,之后進(jìn)行訪問站點(diǎn),查看項(xiàng)目路徑和用戶目錄。

index.php 中的代碼如下

<?php
header('Content-type: text/html; charset=utf-8')
;
ini_set("error_reporting""E_ALL & ~E_NOTICE");

echo "Hi,Webhooks!By 小傅哥<br/>";

echo '<br/>測試:輸出項(xiàng)目路徑和用戶目錄:<br/>';

exec("cd ~ && cd - && cd -", $output);

echo '<pre>';
echo print_r($output);
echo '</pre>';
  • 如果你未對(duì) php.ini 中的 disable_functions = {exec、shell_exec} 刪掉,那么執(zhí)行這個(gè) php 文件的中腳本指令會(huì)報(bào)錯(cuò)。

訪問站點(diǎn)

  • 項(xiàng)目路徑:[0] => /www/wwwroot/39.96.73.167
  • 用戶目錄:[1] => /home/www - www 就是這個(gè)用戶目錄,也就是我們需要為其創(chuàng)建 ssh 公鑰的用戶

2. 生成和配置公鑰

2.1 開啟 www 用戶

  • 命令:vim /etc/passwd

  • 配置:把 sbin/nologinbin/bash

2.2 生成公鑰

因?yàn)槲覀円呀?jīng)開始了 www 登錄權(quán)限,那么在生成公鑰之前,需要切換到 www 賬戶下,命令:su www

  • 切換用戶:su www

  • 生成公鑰:ssh-keygen -t rsa -C "184172133@qq.com" - 默認(rèn)回車即可

  • 查看公鑰:cat ~/.ssh/id_rsa.pub - 其他賬戶下不可見,只有切換到 www 可見


2.3 配置公鑰(Github)

  • 地址:https://github.com/settings/ssh/new

  • 配置:把你通過 cat ~/.ssh/id_rsa.pub 查看到的公鑰,配置到這里即可,如下:


    • 有了這個(gè)公鑰的配置,我們通過 webhooks.php 中的腳本指令就可以自動(dòng)的拉取代碼了。

五、webhooks 更新博客

1. 克隆我的代碼

  • 源碼:關(guān)注公眾號(hào):bugstack蟲洞棧 - 回復(fù):guide-webhooks 即可獲得
  • 使用:你可以把我的源碼先fork到自己的Github,然后部署到你的站點(diǎn)中。在學(xué)習(xí)完成搞清楚原理后,再處理你自己的站點(diǎn)

2. 部署到站點(diǎn)

  • 這里我們需要先在站點(diǎn)使用 git clone ”你的網(wǎng)站代碼git地址“,把Github代碼克隆到自己的博客中,其實(shí)也就是啟動(dòng)了部署做的作用。而這步操作,其實(shí)就是日常使用 Git 的方式,先克隆代碼,在不斷 git pull 更新。
  • 命令:[www@CodeGuide 39.96.73.167]$ git clone git@github.com:fuzhengwei/guide-webhooks.git - 注意,你需要切換為自己的代碼庫地址,否則 webhooks 不能生效

3. 更改網(wǎng)站運(yùn)行目錄

  • 因?yàn)槲覀円呀?jīng)在博客站點(diǎn)中,從 Github 克隆下來我們的博客運(yùn)行代碼,那么這里需要把網(wǎng)站的運(yùn)行目錄切換到這個(gè)文件夾下,這樣就能正常訪問到我們的博客代碼了。

4. 配置 webhooks

webhooks.php

回調(diào)腳本

<?php
/**
 * Git webhooks 自動(dòng)部署腳本
 * 地址:https://github.com/fuzhengwei/guide-webhooks/settings/hooks
 */


// 接收post參數(shù)
$requestBody = file_get_contents("php://input");
if (empty($requestBody)) {
    exit('data null!');
}

// Content type = application/json
$content = json_decode($requestBody, true);

// 驗(yàn)證 Webhooks 配置的 Secret,也可以不驗(yàn)證
/*if (empty($content['password']) || $content['password'] != '123456') {
 exit('password error');
}*/


// 項(xiàng)目存放物理路徑,也就是站點(diǎn)的訪問地址
$path = "/www/wwwroot/39.96.73.167/guide-webhooks/";

// 判斷需要下拉的分支上是否有提交,我們這里的分支名稱為 main
if ($content['ref'] == 'refs/heads/main') {

    // 執(zhí)行腳本 git pull,拉取分支最新代碼
    $res = shell_exec("cd {$path} && git pull origin main 2>&1"); // 當(dāng)前為www用戶

    // 記錄日志 ($content 返回的是一整個(gè)對(duì)象,可以按需獲取里面的內(nèi)容,寫入日志)
    $res_log = '------------------------->' . PHP_EOL;
    $res_log .= '用戶 ' . $content['pusher']['name'] . ' 于 ' . date('Y-m-d H:i:s') . ' 向項(xiàng)目【' . $content['repository']['name'] . '】分支【' . $content['ref'] . '】PUSH ' . $content['commits'][0]['message'] . PHP_EOL;
    $res_log .= $res . PHP_EOL;

    // 追加方式,寫入日志文件
    file_put_contents("git_webhook_log.txt", $res_log, FILE_APPEND);
}
echo 'done';
  • 在我們從 Github 克隆下來的代碼文件中,有一個(gè)名為 webhooks.php 的文件,它是用于處理 Github 回調(diào)時(shí)拉取 Github 對(duì)應(yīng)博客代碼庫的腳本文件。

  • 現(xiàn)在 http://39.96.73.167/webhooks.php 就可以配置到 Github 的 webhooks 下了,如圖:


    • 配置,URL、Content type、Secret、trigger,配置完成后確認(rèn)即可,另外你可以把多個(gè)服務(wù)器實(shí)例都配置上 webhooks,這樣就可以在推送代碼到 Github 倉庫時(shí)一起部署了。

六、部署驗(yàn)證

目前,訪問博客是這樣,如下:接下來我們開始修改博客文件并提交,驗(yàn)證自動(dòng)部署更新站點(diǎn)

1. index.php 新增代碼

  • 你可以在 index.php 文件中修改任意內(nèi)容,或者添加新的內(nèi)容。

2. push 代碼到 Github

  • 推送新修改的內(nèi)容,到代碼庫中,等待 Github webhooks 回調(diào)腳本

3. 驗(yàn)證博客更新

  • 地址:http://39.96.73.167/

  • 效果:

    • 通過訪問博客地址,已經(jīng)可以看到我們新加入的內(nèi)容,已經(jīng)自動(dòng)部署更新到站點(diǎn)了!???

4. 查看腳本執(zhí)行日志

在我們的 webhooks.php 中,執(zhí)行 git pull 腳本的時(shí)候,還有一段日志記錄,便于知曉誰對(duì)網(wǎng)站對(duì)了什么!

git_webhook_log.txt

  • git_webhook_log.txt 是在 webhooks.php 中記錄的日志文件,你可以自行擴(kuò)展其他需要輸出的內(nèi)容。

5. 查看webhooks推送日志

  • 每一次 webhooks 執(zhí)行時(shí),都會(huì)有對(duì)應(yīng)的記錄,來告訴你本次代碼推送是否被回調(diào)成功。并且在日志中,你還可以看到 webhooks 向你推送的內(nèi)容 JSON 文件內(nèi)容,你可以從中獲取需要的信息,比如這是誰推送的、在哪個(gè)分支推送的、推送的文件有哪些等等。
  • 這里也截取了一段推送的 JSON,其余信息你可以在推送記錄中自己查看了。

七、總結(jié)

  • 本章節(jié)我們帶著大家徹底的把 webhooks 的使用走了一遍,也讓需要此技術(shù)的小伙伴可以讓自己的站點(diǎn)部署變更的更加聰明一些。當(dāng)然自己做記錄也幫助了一些師弟和小姐姐!
  • 那么現(xiàn)在如果你手里有服務(wù)器正在吃灰不知道怎么用起來,現(xiàn)在可以折騰起來了,因?yàn)楦蹈缃o你錄好了入門視頻、寫好了操作文章,那么不要等待了,上吧!年輕人!課程鏈接:https://space.bilibili.com/15637440/channel/seriesdetail?sid=479958
  • 最后,如果你還沒有服務(wù)器,那么趕緊搞一個(gè)吧,趁著還有活動(dòng)?? 鏈接:https://www.aliyun.com/minisite/goods?taskPkg=1111ydsrwb&pkgSid=11388&recordId=1033318&userCode=is4kfbdt

八、系列推薦

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多