Consul을 사용하여 Laravel 프로젝트를 관리하는 구성 소개

不言
풀어 주다: 2023-04-02 17:28:02
원래의
4577명이 탐색했습니다.

1년 넘게 프리프로덕션 환경에서 달려왔기 때문에 이곳에서 녹음하고 공유하겠습니다.

Consul을 사용하여 Laravel 프로젝트를 관리하는 구성 소개

문제 및 기타 솔루션

여러 서버에 여러 프로젝트를 배포해야 하는 경우 중앙 집중식 구성 정보가 필요합니다. 관리 및 동기화 도구. 고려된 솔루션은 다음과 같습니다:

  1. rsync를 사용하여 .env 파일을 동기화합니다. 여러 프로젝트를 구성하는 것은 약간 번거롭고, 수정하려면 서버에 SSH로 접속해야 합니다. 동기화.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 导出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>/这样的目录来存放一个项目的所有配置。

Consul Template

配置集中管理了,怎样传给Laravel呢?一个方法是在Laravel里用Consul的API获取配置信息,第二个发放是在外部监听KV变化然后写入到.env文件,Consul Template就是这样的一个外部工具。

我们用的配置模板(.env.tpl):

{{ range ls "configs/crm" }}
{{ .Key }}={{ .Value }}{{ end }}
로그인 후 복사

意思是遍历config/crm这个KV目录,生成key=value

Docker 사용: 클러스터 배포는 그래픽 인터페이스를 사용하여 환경 변수를 수정하는 것이 더 편리합니다. 환경 변수를 사용하려면 컨테이너를 다시 시작해야 합니다. 대부분의 프로젝트는 Docker#🎜 🎜#

으로 마이그레이션되지 않았습니다. Consul + Consul 템플릿의 솔루션을 살펴보겠습니다.

Installation

Consul과 Consul 템플릿 모두 미리 컴파일된 실행 파일을 제공하므로 다운로드하여 압축을 풀면 됩니다.

Consul 시작:

## 格式: 模板文件:目标文件:更新后执行的命令
consul-template --template \
    /path/to/.env.tpl:/path/to/.env:&#39;php /path/to/artisan config:cache&#39;
로그인 후 복사
다른 서비스 노드는 consul Agent -join <ip></ip>를 통해 클러스터에 참여할 수 있습니다.
시작 후 consul 명령어와 RESTful API, Web UI를 통해 Consul을 관리해보세요.

Consul KV

Consul은 애플리케이션의 동적 구성 정보를 저장하는 데 사용할 수 있는 분산 키-값 저장소를 제공합니다. 기본 작업: rrreee#🎜🎜 #Consul KV는 키를 /로 구분하여 구현할 수 있는 디렉터리를 지원합니다. 예를 들어 configs/<app_name>/과 같은 디렉터리를 사용하여 프로젝트의 모든 구성을 저장합니다. .

Consul 템플릿


구성은 중앙에서 관리되는데 이를 Laravel에 전달하는 방법은 무엇입니까? 한 가지 방법은 Laravel에서 Consul의 API를 사용하여 구성 정보를 얻는 것입니다. 두 번째 방법은 KV 변경 사항을 외부에서 모니터링하고 이를 .env 파일에 쓰는 것입니다.

우리가 사용하는 구성 템플릿(.env.tpl): rrreee은 이 KV를 config/crm 순회하는 것을 의미합니다. 디렉터리에서 key=value 형식을 생성합니다.

#🎜🎜#실행: #🎜🎜#rrreee#🎜🎜# .env 파일을 생성하고 변경 사항을 계속 모니터링하려면 consul-template 인스턴스에 여러 --template 매개변수가 있을 수 있으며 이는 하나의 생성 구성일 수 있습니다. 하나의 서버에 여러 프로젝트의 파일을 저장합니다. #🎜🎜##🎜🎜#위 내용은 모두의 학습에 도움이 되기를 바랍니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요! #🎜🎜##🎜🎜#관련 추천: #🎜🎜##🎜🎜##🎜🎜#Laravel 서비스 컨테이너(IocContainer) 해석 #🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜 #Laravel 사용자 인증 시스템(기본 소개)#🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜# 사용자 세부정보 획득 및 매개변수화된 애플릿 코드 확장을 확보하는 Laravel WeChat 애플릿 분석#🎜🎜# #🎜🎜#

위 내용은 Consul을 사용하여 Laravel 프로젝트를 관리하는 구성 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿