Consul を使用して Laravel プロジェクトを管理する構成の概要

不言
リリース: 2023-04-02 17:28:02
オリジナル
4578 人が閲覧しました

1 年以上プリプロダクション環境で実行してきたので、ここに記録して共有します。

Consul を使用して Laravel プロジェクトを管理する構成の概要

問題とその他の解決策

複数の異なるプロジェクトを複数のサーバーにデプロイする必要がある場合、一元的な構成情報管理および同期ツールが必要です。検討された解決策は次のとおりです。

  1. rsync.env ファイルと同期する: 複数のプロジェクトの構成は少し面倒で、ssh で

  2. Docker を使用する: クラスターのデプロイメントはより便利です。グラフィカル インターフェイスを使用して環境変数を変更できますが、環境変数を更新するにはコンテナーを再起動する必要があります。ほとんどのプロジェクトには、 Docker に移行されていません

Consul Consul Template のソリューションを見てみましょう。

インストール

Consul と Consul Template はどちらも、ダウンロードして解凍できるプリコンパイルされた実行可能ファイルを提供します。

Start 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 サポート ディレクトリ 、これは、キーを / で区切ることで実現できます。たとえば、プロジェクトのすべての構成を保存するには、configs/<app_name>/ のようなディレクトリを使用します。

Consul Template

設定は一元管理されていますが、それをLaravelに渡すにはどうすればよいですか? 1 つの方法は、Laravel の Consul の API を使用して構成情報を取得することです。2 つ目は、KV の変更を外部で監視し、.env ファイルに書き込むことです。Consul Template はそのような外部ツールです。

使用する構成テンプレート (.env.tpl):

{{ range ls "configs/crm" }}
{{ .Key }}={{ .Value }}{{ end }}
ログイン後にコピー

は、config/crm KV ディレクトリを走査し、 を生成することを意味します。キー=値形式。

実行:

## 格式: 模板文件:目标文件:更新后执行的命令
consul-template --template \
    /path/to/.env.tpl:/path/to/.env:&#39;php /path/to/artisan config:cache&#39;
ログイン後にコピー

.env ファイルを生成し、変更の監視を続行できます。consul-template インスタンスには複数の --template 複数のパラメーターを含めることができ、これらは複数のパラメーターに使用できます。 1 つのサーバーで、プロジェクトごとに構成ファイルを生成します。

上記がこの記事の全内容です。皆様の学習に少しでもお役に立てれば幸いです。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

Laravel サービスコンテナ (IocContainer) の解釈

#Laravel ユーザー認証システム (基本的な概要)

Laravel WeChat アプレットは、ユーザーの詳細とパラメータによるアプレット コード展開の分析を取得します

以上がConsul を使用して Laravel プロジェクトを管理する構成の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート