如果你覺(jué)得文章幫助了你, 關(guān)注我不迷路, 后面還會(huì)分享Perfect的更多姿勢(shì).
最開(kāi)始學(xué)習(xí)Perfect框架的時(shí)候, 就思考過(guò)如何部署.后來(lái)也試過(guò)不少方式, 在今天一個(gè)比較特殊的情況下, 找到了一個(gè)我覺(jué)得目前最完美的部署方式.當(dāng)然, 如果你用的是Perfect官方支持的阿里云, 亞馬遜, 谷歌云這三種, 那么請(qǐng)直接前往這個(gè)地址就可以了. http://perfect.org/zh/assistant/
如果你和我一樣, 用的是普通的vps, 那么, 請(qǐng)繼續(xù)往下看.(貧窮使我觸發(fā)無(wú)限可能 -. -)
也許我的部署方式并不是最完美的, 如果你有更好的方式, 可以在下面評(píng)論告訴我.不甚感激.
曾經(jīng)嘗試過(guò)的部署方式思路, 有幾種.
1.通過(guò)在服務(wù)器用git的鉤子進(jìn)行部署, 在服務(wù)器上, 會(huì)有兩個(gè)用戶, 一個(gè)root用戶,
一個(gè)git用戶, 但是如果不用root權(quán)限的話, git權(quán)限的用戶找不到編譯環(huán)境, 如果強(qiáng)行把編譯環(huán)境修改到git權(quán)限的用戶,那么root用戶又無(wú)法編譯了. 自動(dòng)編譯不能用, 所以只能手動(dòng)編譯和啟動(dòng). 在無(wú)法找到更完美的部署方式前, 一直用的這個(gè).
我目前的操作步驟, 在服務(wù)器上創(chuàng)建一個(gè)git文件夾, 然后通過(guò)鉤子, 監(jiān)聽(tīng)到push后, 打包該文件, 拷貝到一個(gè)編譯目錄, (直接在原來(lái)的目錄上進(jìn)行編譯, 也是可以的), 然后解壓, 解壓后手動(dòng)通過(guò)ssh進(jìn)行編譯和啟動(dòng).
2.通過(guò)官方支持的docker進(jìn)行部署, 但是在本地docker環(huán)境里面進(jìn)行編譯的時(shí)候, 始終無(wú)法完成編譯, 說(shuō)缺少openssl的一個(gè)頭文件,但是在本地編譯是正常的.在兩臺(tái)系統(tǒng)版本號(hào)不同的電腦上, 都嘗試過(guò), 結(jié)果一樣, 所以不知道是哪里錯(cuò)了...很無(wú)奈...
3.這一種方式, 也是目前我個(gè)人發(fā)現(xiàn)的最完美的方式了.
不多BB, 看思路圖.
所用到的環(huán)境以及工具
1 寶塔面板
讓服務(wù)器ssh界面化, 也是自動(dòng)化部署的關(guān)鍵, 你可以采取其他的監(jiān)聽(tīng)webhook的方式, 也可以達(dá)到同樣目的
在使用面板的時(shí)候, 設(shè)置好代碼的端口后(比如8080), 記得在這個(gè)里面對(duì)你的端口進(jìn)行放行, 否則無(wú)法訪問(wèn).
2 阿里云代碼托管
3 Ubuntu服務(wù)器
4 把Ubuntu服務(wù)器的公鑰添加到阿里云代碼托管平臺(tái)
操作步驟
1.在代碼托管平臺(tái)創(chuàng)建代碼倉(cāng)庫(kù).
2.在服務(wù)器創(chuàng)建你存放Perfect代碼的目錄, 對(duì)代碼平臺(tái)的代碼倉(cāng)庫(kù)進(jìn)行g(shù)it clone
3.在寶塔面板上安裝webhook
注: 通過(guò)寶塔面板可以訪問(wèn)操作文件和文件夾, 并且面板自帶了很多有用的工具, nginx, 數(shù)據(jù)庫(kù), 等.我覺(jué)得非常方便友好, 并且這個(gè)東西是免費(fèi)的, 一鍵安裝, 強(qiáng)烈建議使用. 具體有哪些功能你可以去官網(wǎng)看, 反正點(diǎn)一下又不會(huì)懷孕不是. http://bt.cn
4.安裝完后添加Hook.名稱(chēng)隨便寫(xiě).
腳本內(nèi)容如下(你也可以根據(jù)你自己的情況進(jìn)行精簡(jiǎn)), 導(dǎo)入編譯環(huán)境的教程地址 http://www.reibang.com/p/538b685b6a62
5.把添加后的面板請(qǐng)求地址和密匙添加到代碼倉(cāng)庫(kù)的webhooks(我是用push事件來(lái)做的.你也可以用其他方式.比如tag)
6.添加成功后, 就會(huì)像這樣
7.都設(shè)置成功后, 你可以在你的面板上測(cè)試面板的webhook操作是否正確, 阿里云代碼托管平臺(tái)也可以測(cè)試發(fā)起請(qǐng)求的操作是否正確. TEST HOOK
8.在本地拉取阿里云代碼倉(cāng)庫(kù)的代碼, 進(jìn)行代碼提交, 觸發(fā)以上一系列的webhook.
以下是成果圖
簡(jiǎn)潔思路: 如果你設(shè)置的是push事件, 當(dāng)阿里云代碼托管收到你的代碼push后, 會(huì)去請(qǐng)求服務(wù)器的webhook, 服務(wù)器的webhook收到請(qǐng)求后, 會(huì)在服務(wù)器進(jìn)行1進(jìn)入代碼目錄, 2拉取阿里云的代碼, 3編譯并且啟動(dòng)的操作.感受自動(dòng)化部署的愉悅吧!