1 年以上プリプロダクション環境で実行してきたので、ここに記録して共有します。
複数の異なるプロジェクトを複数のサーバーにデプロイする必要がある場合、一元的な構成情報管理および同期ツールが必要です。検討された解決策は次のとおりです。
rsync.env
ファイルと同期する: 複数のプロジェクトの構成は少し面倒で、ssh で
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 は、アプリケーションの動的構成情報の保存に使用できる分散キーと値のペアのストレージを提供します。基本操作:
# 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>/
のようなディレクトリを使用します。
設定は一元管理されていますが、それを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:'php /path/to/artisan config:cache'
.env ファイルを生成し、変更の監視を続行できます。consul-template インスタンスには複数の --template 複数のパラメーターを含めることができ、これらは複数のパラメーターに使用できます。 1 つのサーバーで、プロジェクトごとに構成ファイルを生成します。
上記がこの記事の全内容です。皆様の学習に少しでもお役に立てれば幸いです。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。
関連する推奨事項:
Laravel サービスコンテナ (IocContainer) の解釈
Laravel WeChat アプレットは、ユーザーの詳細とパラメータによるアプレット コード展開の分析を取得します
以上がConsul を使用して Laravel プロジェクトを管理する構成の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。