Swift Perfect服務端的自動化部署

zedxpp發表於2017-12-04

最開始學習Perfect框架的時候, 就思考過如何部署.後來也試過不少方式, 在今天一個比較特殊的情況下, 找到了一個我覺得目前最完美的部署方式.當然, 如果你用的是Perfect官方支援的阿里雲, 亞馬遜, 谷歌雲這三種, 那麼請直接前往這個地址就可以了.

perfect.org/zh/assistan…

image.png

如果你和我一樣, 用的是普通的vps, 那麼, 請繼續往下看.(貧窮使我觸發無限可能 -. -)

也許我的部署方式並不是最完美的, 如果你有更好的方式, 可以在下面評論告訴我.不甚感激.

曾經嘗試過的部署方式思路, 有幾種.

1.通過在伺服器用git的鉤子進行部署, 在伺服器上, 會有兩個使用者, 一個root使用者, 一個git使用者, 但是如果不用root許可權的話, git許可權的使用者找不到編譯環境, 如果強行把編譯環境修改到git許可權的使用者,那麼root使用者又無法編譯了. 自動編譯不能用, 所以只能手動編譯和啟動. 在無法找到更完美的部署方式前, 一直用的這個. 我目前的操作步驟, 在伺服器上建立一個git資料夾, 然後通過鉤子, 監聽到push後, 打包該檔案, 拷貝到一個編譯目錄, (直接在原來的目錄上進行編譯, 也是可以的), 然後解壓, 解壓後手動通過ssh進行編譯和啟動.

2.通過官方支援的docker進行部署, 但是在本地docker環境裡面進行編譯的時候, 始終無法完成編譯, 說缺少openssl的一個標頭檔案,但是在本地編譯是正常的.在兩臺系統版本號不同的電腦上, 都嘗試過, 結果一樣, 所以不知道是哪裡錯了...很無奈...

3.這一種方式, 也是目前我個人發現的最完美的方式了.

不多BB, 看思路圖.

image.png

所用到的環境以及工具

1 寶塔皮膚

讓伺服器ssh介面化, 也是自動化部署的關鍵, 你可以採取其他的監聽webhook的方式, 也可以達到同樣目的

在使用皮膚的時候, 設定好程式碼的埠後(比如8080), 記得在這個裡面對你的埠進行放行, 否則無法訪問.

image.png

2 阿里雲程式碼託管

3 Ubuntu伺服器

4 把Ubuntu伺服器的公鑰新增到阿里雲程式碼託管平臺

操作步驟

1.在程式碼託管平臺建立程式碼倉庫.

2.在伺服器建立你存放Perfect程式碼的目錄, 對程式碼平臺的程式碼倉庫進行git clone

3.在寶塔皮膚上安裝webhook

注: 通過寶塔皮膚可以訪問操作檔案和資料夾, 並且皮膚自帶了很多有用的工具, nginx, 資料庫, 等.我覺得非常方便友好, 並且這個東西是免費的, 一鍵安裝, 強烈建議使用. 具體有哪些功能你可以去官網看, 反正點一下又不會懷孕不是. bt.cn

image.png

4.安裝完後新增Hook.名稱隨便寫.

image.png

指令碼內容如下(你也可以根據你自己的情況進行精簡), 匯入編譯環境的教程地址 juejin.im/post/5a2149…

image.png

5.把新增後的皮膚請求地址和密匙新增到程式碼倉庫的webhooks(我是用push事件來做的.你也可以用其他方式.比如tag)

image.png

image.png

6.新增成功後, 就會像這樣

image.png

7.都設定成功後, 你可以在你的皮膚上測試皮膚的webhook操作是否正確, 阿里雲程式碼託管平臺也可以測試發起請求的操作是否正確. TEST HOOK

8.在本地拉取阿里雲程式碼倉庫的程式碼, 進行程式碼提交, 觸發以上一系列的webhook.

以下是成果圖

image.png

image.png

image.png

簡潔思路: 如果你設定的是push事件, 當阿里雲程式碼託管收到你的程式碼push後, 會去請求伺服器的webhook, 伺服器的webhook收到請求後, 會在伺服器進行1進入程式碼目錄, 2拉取阿里雲的程式碼, 3編譯並且啟動的操作.感受自動化部署的愉悅吧!

如果你覺得文章幫助了你, 關注我不迷路, 後面還會分享Perfect的更多姿勢.

相關文章