這個話題說簡單簡單,也難也難,因為這跟團隊的管理,配合等都有直接關系,所以php項目的部署方案也都會有很多不同。我這里簡單記錄一些,大家可以選擇適合自己的使用。
后面幾個都能搜到,本來發了一篇帶鏈接的,這樣大家不用麻煩去找,發現一個都不給推薦。沒辦法,去掉鏈接,重新發一下吧。找不到的請在評論區回復,我會回你地址。
1.利用git的鉤子機制
這個方案原理很簡單,在代碼完成之后,哪個commit想要發布,在commit message中加上自己定義好的關鍵字,讓鉤子去識別,只要發現它,就知道是要部署了,然后分支代碼就會被pull到指定目錄。缺點是部署一些不用composer方式的代碼還好,如果用這個的話,在第三方包更新的過程中勢必會影響線上程序的運行。
2.用rsync的方案
也就是說git鉤子做的事交給另一個shell去干,由部署人員主動去控制什么時候要部署,可以等到程序完全測好之后再按下這一鍵。最后代碼會被同步到相應目錄。缺點與方案1相同。
以下方案還是利用一些現代化工具人性化、智能化一點
3.rocketeer
試用過這個一段時間,目錄結構還比較滿意,對composer包之類的應用部署也支持,當時遇到兩點比較頭疼的問題,棄之。一個是這個應用開發中使用了一個第三方包,不支持php7,所以只能使用php5的程序去運行rocketeer,比較麻煩。后來又遇到想分別部署開發服務器和測試服務,當時兩個都在同一臺服務器,它的配置不是很好搞這個。
此應用的配置也相對麻煩,找了很多資料,用的比較少。官方的文檔配置,沒看到便捷的配置方式,可能是沒看仔細,在這方面花了不少時間。有興趣的,私信我,發你參考地址吧
引導式創建配置
$ rocketeer ignite
4.Deployer
文檔清晰,配置方便,PHP7沒問題,配置多服務器等等都OK。唯一對這個不理想的是,它部署之后的目錄是按序號從1開始排的,沒有rocketeer那個按發布時間做目錄好,不過這個無傷大雅。這個也是我目前在用的,相對來說,這個對小項目的部署是相當快速又方便的。
5.Walle
發布的控制更復雜一些的工具,人員的權限控制等都有了,發布的記錄等等。麻煩的是先安裝一套這個系統,不熟悉的話,在這上面需要花些時間管理它,至少要保持正常運轉。小團隊想偷懶的話,恐怕不那么適用。當然也還有其它一些類似Walle的發布系統,如果你覺得自己在用的比較方便,好用,可以在評論區提出,方便分享給其它讀者。
6.Docker打包整體項目部署
這就更復雜一些了,想了解的,需要先把Docker用好,再考慮后面的。過程比較復雜,這里就不詳述了。
原創內容,轉載請標注出處,謝謝。