Maison >développement back-end >tutoriel php >Introduction à la configuration de l'utilisation de Consul pour gérer des projets Laravel

Introduction à la configuration de l'utilisation de Consul pour gérer des projets Laravel

不言
不言original
2018-07-06 15:31:584621parcourir

Je travaille dans l'environnement de pré-production depuis plus d'un an, je vais donc l'enregistrer et le partager ici.

Introduction à la configuration de lutilisation de Consul pour gérer des projets Laravel

Problèmes et autres solutions

Lorsque nous devons déployer plusieurs projets différents sur plusieurs serveurs, nous avons besoin d'outils centralisés de gestion des informations de configuration et de synchronisation. Les solutions qui ont été envisagées sont :

  1. Synchroniser les fichiers avec rsync.env : La configuration de plusieurs projets est un peu lourde et nécessite ssh au serveur pour modifier puis synchroniser

  2. Utiliser Docker : le déploiement de cluster est plus pratique. Vous pouvez utiliser l'interface graphique pour modifier les variables d'environnement, mais la mise à jour des variables d'environnement nécessite le redémarrage du conteneur. La plupart des projets n'ont pas été migrés vers Docker

    .

Jetons un coup d'œil à la solution Consul + Consul Template.

Installation

Consul et Consul Template fournissent des fichiers exécutables précompilés, il suffit de les télécharger et de les décompresser.

Démarrer Consul :

consul agent -server -bootstrap -ui -bind <ip>

D'autres nœuds de service peuvent rejoindre le cluster via consul agent -join <ip></ip>.

Après le démarrage, gérez Consul via les commandes consul, l'API RESTful et l'interface utilisateur Web.

Consul KV

Consul fournit un magasin clé-valeur distribué qui peut être utilisé pour stocker les informations de configuration dynamique des applications :

# 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

Répertoires de prise en charge de Consul KV. peut être réalisé en séparant les clés par / Par exemple, nous utilisons des répertoires tels que configs/<app_name>/</app_name> pour stocker toutes les configurations d'un projet.

Consul Template

La configuration est gérée de manière centralisée Comment la transmettre à Laravel ? Une méthode consiste à utiliser l'API de Consul dans Laravel pour obtenir des informations de configuration. La deuxième méthode consiste à surveiller les modifications KV en externe et à les écrire dans le fichier .env Consul Template est un tel outil externe.

Le modèle de configuration (.env.tpl) que nous utilisons :

{{ range ls "configs/crm" }}
{{ .Key }}={{ .Value }}{{ end }}

signifie parcourir le répertoire config/crm KV et générer le format key=value.

Exécutez :

## 格式: 模板文件:目标文件:更新后执行的命令
consul-template --template \
    /path/to/.env.tpl:/path/to/.env:&#39;php /path/to/artisan config:cache&#39;

pour générer le fichier .env et surveiller en permanence les modifications. Une instance consul-template peut avoir plusieurs paramètres --template, qui peuvent être un serveur Générer des fichiers de configuration pour. plusieurs projets.

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

Interprétation du conteneur de services Laravel (IocContainer)

Système d'authentification des utilisateurs Laravel (introduction de base)

L'applet Laravel WeChat obtient les détails de l'utilisateur et analyse l'expansion du code de l'applet avec des paramètres

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn