使用Consul管理Laravel項目的配置介紹

來源:互聯網
上載者:User
在預生產環境跑了一年多,在此記錄和分享一下。

問題 & 其他方案

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

  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>加入到叢集。

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

Consul KV

Consul提供了一個分布式的索引值對儲存,可以用來儲存應用的動態配置資訊,基本操作:

# 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多個參數,可以為一台伺服器上多重專案組建組態檔案。

以上就是本文的全部內容,希望對大家的學習有所協助,更多相關內容請關注topic.alibabacloud.com!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.