最開始學習Perfect框架的時候, 就思考過如何部署.後來也試過不少方式, 在今天一個比較特殊的情況下, 找到了一個我覺得目前最完美的部署方式.當然, 如果你用的是Perfect官方支援的阿里雲, 亞馬遜, 谷歌雲這三種, 那麼請直接前往這個地址就可以了.
如果你和我一樣, 用的是普通的vps, 那麼, 請繼續往下看.(貧窮使我觸發無限可能 -. -)
也許我的部署方式並不是最完美的, 如果你有更好的方式, 可以在下面評論告訴我.不甚感激.
曾經嘗試過的部署方式思路, 有幾種.
1.通過在伺服器用git的鉤子進行部署, 在伺服器上, 會有兩個使用者, 一個root使用者, 一個git使用者, 但是如果不用root許可權的話, git許可權的使用者找不到編譯環境, 如果強行把編譯環境修改到git許可權的使用者,那麼root使用者又無法編譯了. 自動編譯不能用, 所以只能手動編譯和啟動. 在無法找到更完美的部署方式前, 一直用的這個. 我目前的操作步驟, 在伺服器上建立一個git資料夾, 然後通過鉤子, 監聽到push後, 打包該檔案, 拷貝到一個編譯目錄, (直接在原來的目錄上進行編譯, 也是可以的), 然後解壓, 解壓後手動通過ssh進行編譯和啟動.
2.通過官方支援的docker進行部署, 但是在本地docker環境裡面進行編譯的時候, 始終無法完成編譯, 說缺少openssl的一個標頭檔案,但是在本地編譯是正常的.在兩臺系統版本號不同的電腦上, 都嘗試過, 結果一樣, 所以不知道是哪裡錯了...很無奈...
3.這一種方式, 也是目前我個人發現的最完美的方式了.
不多BB, 看思路圖.
所用到的環境以及工具
1 寶塔皮膚
讓伺服器ssh介面化, 也是自動化部署的關鍵, 你可以採取其他的監聽webhook的方式, 也可以達到同樣目的
在使用皮膚的時候, 設定好程式碼的埠後(比如8080), 記得在這個裡面對你的埠進行放行, 否則無法訪問.
2 阿里雲程式碼託管
3 Ubuntu伺服器
4 把Ubuntu伺服器的公鑰新增到阿里雲程式碼託管平臺
操作步驟
1.在程式碼託管平臺建立程式碼倉庫.
2.在伺服器建立你存放Perfect程式碼的目錄, 對程式碼平臺的程式碼倉庫進行git clone
3.在寶塔皮膚上安裝webhook
注: 通過寶塔皮膚可以訪問操作檔案和資料夾, 並且皮膚自帶了很多有用的工具, nginx, 資料庫, 等.我覺得非常方便友好, 並且這個東西是免費的, 一鍵安裝, 強烈建議使用. 具體有哪些功能你可以去官網看, 反正點一下又不會懷孕不是. bt.cn
4.安裝完後新增Hook.名稱隨便寫.
指令碼內容如下(你也可以根據你自己的情況進行精簡), 匯入編譯環境的教程地址 juejin.im/post/5a2149…
5.把新增後的皮膚請求地址和密匙新增到程式碼倉庫的webhooks(我是用push事件來做的.你也可以用其他方式.比如tag)
6.新增成功後, 就會像這樣
7.都設定成功後, 你可以在你的皮膚上測試皮膚的webhook操作是否正確, 阿里雲程式碼託管平臺也可以測試發起請求的操作是否正確. TEST HOOK
8.在本地拉取阿里雲程式碼倉庫的程式碼, 進行程式碼提交, 觸發以上一系列的webhook.
以下是成果圖
簡潔思路: 如果你設定的是push事件, 當阿里雲程式碼託管收到你的程式碼push後, 會去請求伺服器的webhook, 伺服器的webhook收到請求後, 會在伺服器進行1進入程式碼目錄, 2拉取阿里雲的程式碼, 3編譯並且啟動的操作.感受自動化部署的愉悅吧!