1. 程式人生 > >使用github自動部署網站

使用github自動部署網站

更多文章,請訪問我的部落格

整體流程

1、在伺服器上生成部署公鑰

2、在github上對專案做部署配置

3、配置域名,初次拉取程式碼到伺服器

4、編寫指令碼,儲存至伺服器

5、測試指令碼,釋出專案

需求

把github上的專案自動釋出到指定的伺服器,即自動部署

環境與裝置說明

1、遠端伺服器一臺(程式碼自動部署到此伺服器)

2、github專案(我們的程式碼存到github)

3、開發計算機(本地開發)

4、域名管理

生成釋出公鑰

位置:伺服器

1、在伺服器上安裝git,省略

2、git安裝完畢後,在git的cmd視窗執行命令

ssh -keygen

後面直接回車,不要輸入密碼,這樣使用公鑰的時候就無需密碼了

3、生成的公鑰預設存放在使用者目錄下的.ssh目錄,預設名稱為id_ras和id_ras.pub,其中id_ras.pub為公鑰檔案,也就是要上傳到github上的檔案

github專案配置

位置: github

1、選擇新增公鑰

新增公鑰

2、進入新增公鑰介面,填寫標題和內容,標題隨意,內容為第一步生成的公鑰的內容,儲存後新增成功填寫頁面

因為是危險操作,需要輸入使用者github的密碼來確認 新增成功證書新增成功

3、配置webhook,填寫自動部署所需要的指令碼和secret新建webhook詳細設定webhook的詳細設定配置完成後,點選add webhook, github專案的配置即完成。webhook配置成功

配置域名,拉取程式碼到伺服器

位置:伺服器

1、新增域名,指向伺服器域名管理2、在伺服器上拉取專案

git clone https://github.com/wmhello/apidemo

3、本地web伺服器配置後,域名指向專案(不同的框架可以按不同的要求來配置) 4、伺服器程式碼部署成功後,通過域名可以訪問網站伺服器部署

編寫指令碼

位置:伺服器

編寫指令碼,存放至配置webhook時指定的存放位置,並注意名稱一定要相符

 <?php
// 與webhook配置相同,為了安全,請設定此引數
$secret = "wmhello";
// 專案路徑
$path = "d:/www/apidemo";
// 校驗傳送位置,正確的情況下自動拉取程式碼,實現自動部署
$signature = $_SERVER['HTTP_X_HUB_SIGNATURE'];
if ($signature) {
  $hash = "sha1=".hash_hmac('sha1', file_get_contents("php://input"), $secret);
  if (strcmp($signature, $hash) == 0) {
    echo shell_exec("cd \ && cd {$path} && git pull 2>&1");
    exit();
  }
}
http_response_code(404);
?>

測試自動釋出

位置:開發機 伺服器

在本地計算機增加程式碼後,提交到github倉庫,程式碼自動同步到伺服器,實現了自動釋出的功能