首頁 >後端開發 >php教程 >使用Consul管理Laravel專案的配置介紹

使用Consul管理Laravel專案的配置介紹

不言
不言原創
2018-07-06 15:31:584609瀏覽

在預生產環境跑了一年多,在此記錄並分享一下。

使用Consul管理Laravel專案的配置介紹

問題& 其他方案

當我們需要在多台伺服器部署多個不同的專案時,我們需要一個集中的設定資訊管理和同步的工具。考慮過的方案有:

  1. 用rsync同步.env檔案:多個專案的設定略繁瑣,要ssh到伺服器修改再同步

  2. 用Docker:叢集部署比較方便,可以用圖形介面修改環境變量,但更新環境變數要重啟容器,大部分專案沒移轉到Docker

下面來看看Consul Consul Template的方案。

安裝

Consul和Consul Template都提供了預先編譯的可執行文件,下載解壓縮即可。

啟動Consul:

consul agent -server -bootstrap -ui -bind <ip>

其他服務節點可以透過consul agent -join <ip></ip>加入到叢集。

啟動之後透過consul指令、RESTful API、Web UI管理Consul。

Consul KV

Consul提供了一個分佈式的鍵值對存儲,可以用來存儲應用的動態配置信息,基本操作:

# put 设置一个KV对
consul kv put APP_DEBUG false

# get 获取
consul kv get APP_DEBUG

# exprot 导出JSON
consul kv export > data.json

# import 导入JSON
consul kv import @data.json

# delete 删除
consul kv delete APP_DEBUG

Consul KV支援目錄,可以透過/分隔key來實現,例如我們使用configs/<app_name>/</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:&#39;php /path/to/artisan config:cache&#39;

就可以產生.env文件,並且持續監聽變化,一個consul-template實例可以有多個--template多個參數,可以為一台伺服器上多個項目生成設定檔。

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關推薦:

Laravel服務容器(IocContainer)的解讀

Laravel用戶認證系統(基礎介紹)

Laravel微信小程式取得使用者詳細資料及帶參數小程式碼擴充的分析

#

以上是使用Consul管理Laravel專案的配置介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn