当前位置: 首页 > 后端技术 > PHP

使用Consul管理Laravel项目配置

时间:2023-03-29 21:22:49 PHP

已经在预生产环境中运行了一年多,在此记录分享。Problems&OtherSolutions当我们需要在多台服务器上部署多个不同的项目时,我们需要一个集中的配置信息管理和同步工具。考虑的方案是:使用rsync同步.env文件:多个项目的配置有点繁琐,需要ssh到服务器修改后再与Docker同步:集群部署比较方便,可以使用图形界面修改环境变量,但需要重启才能更新环境变量对于容器来说,大部分项目还没有迁移到Docker。我们来看看Consul+ConsulTemplate的解决方案。同时安装Consul和ConsulTemplate提供了预编译好的可执行文件,下载解压即可。启动Consul:consulagent-server-bootstrap-ui-bind其他服务节点可以通过consulagent-join加入集群。启动后,通过consul命令、RESTfulAPI、WebUI管理Consul。ConsulKVConsul提供了一个分布式键值对存储,可以用来存储应用程序的动态配置信息。基本操作:#putsetaKVpairtoconsulkvputAPP_DEBUGfalse#getgetconsulkvgetAPP_DEBUG#exportexportJSONconsulkvexport>data.json#importimportJSONconsulkvimport@data.json#deletedeleteconsulkvdeleteAPP_DEBUGConsulKV支持目录,可以通过/分隔键来实现,比如我们使用configs//这样的目录来存放一个项目的所有配置。ConsulTemplate配置是集中管理的,如何传给Laravel?一种方法是使用ConsulAPI获取Laravel中的配置信息。第二种方法是在外部监听KV变化,写入.env文件。ConsulTemplate就是这样一个外部工具。我们使用的配置模板(.env.tpl):{{rangels"configs/crm"}}{{.Key}}={{.Value}}{{end}}表示遍历config/的KV目录crm,生成key=value格式。运行:##格式:模板文件:目标文件:更新consul-template后执行的命令--template\/path/to/.env.tpl:/path/to/.env:'php/path/to/artisanconfig:cache'可以生成.env文件并持续监控变化。一个consul-template实例可以有多个--template参数,可以为一台服务器上的多个项目生成配置文件。