當我們需要在多臺服務器部署多個不同的項目時,我們需要一個集中的配置信息管理和同步的工具。考慮過的方案有:
用rsync同步.env文件:多個項目的配置略繁瑣,要ssh到服務器修改再同步
用Docker:集群部署比較方便,可以用圖形界面修改html' target='_blank'>環境變量,但是更新環境變量要重啟容器,大部分項目沒遷移到Docker
下面看一下Consul + Consul Template的方案。
安裝Consul和Consul Template都提供了預編譯的可執行文件,下載解壓即可。
啟動Consul:
consul agent -server -bootstrap -ui -bind ip
其他服務節點可以通過consul agent -join ip 加入到集群。
啟動之后通過consul命令、RESTful API、Web UI管理Consul。
Consul KVConsul提供了一個分布式的鍵值對存儲,可以用來存儲應用的動態配置信息,基本操作:
# put 設置一個KV對consul kv put APP_DEBUG false# get 獲取consul kv get APP_DEBUG# exprot 導出JSONconsul kv export data.json# import 導入JSONconsul kv import @data.json# delete 刪除consul kv delete APP_DEBUG
Consul KV支持目錄,可以通過/分隔key實現,例如我們使用configs/ app_name /這樣的目錄來存放一個項目的所有配置。
Consul Template配置集中管理了,怎樣傳給Laravel呢?一個方法是在Laravel里用Consul的API獲取配置信息,第二個發放是在外部監聽KV變化然后寫入到.env文件,Consul Template就是這樣的一個外部工具。
我們用的配置模板(.env.tpl):
{{ range ls configs/crm }}{{ .Key }}={{ .Value }}{{ end }}
意思是遍歷config/crm這個KV目錄,生成key=value格式。
運行:
## 格式: 模板文件:目標文件:更新后執行的命令consul-template --template / /path/to/.env.tpl:/path/to/.env: php /path/to/artisan config:cache
就可以生成.env文件,并且持續監聽變化,一個consul-template實例可以有多個--template多個參數,可以為一臺服務器上多個項目生成配置文件。
以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !
相關推薦:
Laravel服務容器(IocContainer)的解讀
Laravel用戶認證系統(基礎介紹)
Laravel微信小程序獲取用戶詳細信息及帶參數小程序碼擴展的分析
以上就是使用Consul管理Laravel項目的配置介紹的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答