consul php sdk,使用Consul管理Laravel项目的配置介绍

在预生产环境跑了一年多,在此记录和分享一下。

e4e2df368a5068e2fa76710413d7ec3a.png

问题 & 其他方案

当我们需要在多台服务器部署多个不同的项目时,我们需要一个集中的配置信息管理和同步的工具。考虑过的方案有:用rsync同步.env文件:多个项目的配置略繁琐,要ssh到服务器修改再同步

用Docker:集群部署比较方便,可以用图形界面修改环境变量,但是更新环境变量要重启容器,大部分项目没迁移到Docker

下面看一下Consul + Consul Template的方案。

安装

Consul和Consul Template都提供了预编译的可执行文件,下载解压即可。

启动Consul:consul agent -server -bootstrap -ui -bind

其他服务节点可以通过consul agent -join 加入到集群。

启动之后通过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//这样的目录来存放一个项目的所有配置。

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中文网!

相关推荐:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值