使用github自動部署網站
阿新 • • 發佈:2019-02-09
更多文章,請訪問我的部落格
整體流程
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詳細設定配置完成後,點選add webhook, github專案的配置即完成。
配置域名,拉取程式碼到伺服器
位置:伺服器
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倉庫,程式碼自動同步到伺服器,實現了自動釋出的功能