Utilisation et compréhension des variables

Découvrez comment tirer parti de la puissance des variables dans le serveur web Apache et dans les fichiers de configuration du module de Dispatcher.

Description description

Environnement

Adobe Experience Manager (AEM)

Problème

Ce document explique comment utiliser la puissance des variables dans le serveur web Apache et dans les fichiers de configuration du module de Dispatcher.

Variables

Apache prend en charge les variables et les versions 4.1.9 et ultérieures du module Dispatcher. Nous pouvons les exploiter pour effectuer les opérations suivantes :

  • Assurez-vous que tout ce qui est spécifique à l’environnement n’est pas en ligne dans les configurations, mais extrait pour vous assurer que les fichiers de configuration du développement fonctionnent en production avec la même sortie fonctionnelle.
  • Active/désactive les fonctionnalités et modifie les niveaux de journal des fichiers non modifiables fournis par AMS et ne vous permet pas de modifier.
  • Modification qui comprend à utiliser en fonction de variables telles que RUNMODE et ENV_TYPE.
  • Faire correspondre les noms DNS de DocumentRoot et VirtualHost entre les configurations Apache et les configurations de module.

Résolution resolution

  1. Utilisation de variables de ligne de base
    Étant donné que les fichiers de ligne de base AMS sont en lecture seule et immuables, il existe des fonctionnalités qui peuvent être activées et désactivées et configurées en modifiant les variables qu’elles utilisent.

    Variables de ligne de base

    Voici un exemple du contenu du fichier /etc/httpd/conf.d/variables/ams_default.vars

    code language-none
    Define DISP_LOG_LEVEL info
    
    Define AUTHOR_WHITELIST_ENABLED 0
    
    Define PUBLISH_WHITELIST_ENABLED 0
    
    Define AUTHOR_FORCE_SSL 1
    
    Define PUBLISH_FORCE_SSL 0
    

    Exemple 1 - Forcer SSL

    Les variables affichées au-dessus de AUTHOR_FORCE_SSL ou PUBLISH_FORCE_SSL peuvent être définies sur 1 pour appliquer des règles de réécriture qui forcent les utilisateurs finaux lorsqu’ils entrent sur une requête http à être redirigés vers https.

    Voici la syntaxe du fichier de configuration qui permet à ce bouton de fonctionner :

    code language-none
    <VirtualHost *:80>
    
      <IfModule mod_rewrite.c>
    
        ReWriteEngine    on
    
        <If "${PUBLISH_FORCE_SSL} == 1">
    
          Include /etc/httpd/conf.d/rewrites/forcessl_rewrite.rules
    
        </If>
    
      </IfModule>
    
    </VirtualHost>
    

    Comme vous pouvez le constater, les règles de réécriture incluent le code permettant de rediriger le navigateur des utilisateurs finaux, mais la variable définie sur 1 permet d’utiliser ou non le fichier.

    Exemple 2 - Niveau de journalisation

    Les variables DISP_LOG_LEVEL peuvent être utilisées pour définir ce que vous souhaitez avoir pour le niveau de journal réellement utilisé dans la configuration en cours d’exécution.

    Voici l’exemple de syntaxe qui existe dans les fichiers de configuration de ligne de base ams :

    code language-none
    <IfModule disp_apache2.c>
    
      DispatcherLog    logs/dispatcher.log
    
      DispatcherLogLevel ${DISP_LOG_LEVEL}
    
    </IfModule>
    

    Si vous devez augmenter le niveau de journalisation du dispatcher, mettez simplement à jour la variable ams_default.vars DISP_LOG_LEVEL au niveau souhaité.

    Les exemples de valeurs peuvent être un entier ou le mot :

    table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3
    Niveau de journalisation Valeur entière Valeur Word
    Trace 4 trace
    Déboguer 3 debug
    Infos 2 info
    Avertissement 1 warn
    Erreur 0 error

    Exemple 3 - Listes blanches

    Les variables AUTHOR_WHITELIST_ENABLED et PUBLISH_WHITELIST_ENABLED peuvent être définies sur 1 pour engager des règles de réécriture qui incluent des règles permettant d’autoriser ou d’interdire le trafic de l’utilisateur final en fonction de son adresse IP. L’activation/désactivation de cette fonctionnalité ON doit être combinée à la création d’un fichier de règles de liste blanche pour qu’il soit inclus.

    Voici quelques exemples de syntaxe sur la manière dont la variable active les inclusions des fichiers de liste blanche et un exemple de fichier de liste blanche :

    sample.vhost:

    code language-none
    <VirtualHost *:80>
    
      <Directory />
    
        <If "${AUTHOR_WHITELIST_ENABLED} == 1">
    
            Include /etc/httpd/conf.d/whitelists/*_whitelist.rules
    
        </If>
    
      </Directory>
    
    </VirtualHost>
    

    sample_whitelist.rules:

    code language-none
    <RequireAny>
    
      Require ip 10.43.0.10/24
    
    </RequireAny>
    

    Comme vous pouvez le voir, sample_whitelist.rules applique la restriction IP, mais le fait de basculer la variable permet de l’inclure dans le sample.vhost

  2. Où placer les variables ?
    Arguments de démarrage du serveur web

    AMS placera des variables globales dans les arguments de démarrage du processus Apache dans le fichier /etc/sysconfig/httpd

    Ce fichier comporte des variables prédéfinies, comme illustré ci-dessous :

    code language-none
    AUTHOR_IP="10.43.0.59"
    AUTHOR_PORT="4502"
    AUTHOR_DOCROOT='/mnt/var/www/author'
    PUBLISH_IP="10.43.0.20"
    PUBLISH_PORT="4503"
    PUBLISH_DOCROOT='/mnt/var/www/html'
    ENV_TYPE='dev'
    RUNMODE='dev'
    

    Il ne s’agit pas d’un élément que vous pouvez modifier, mais que vous pouvez exploiter dans vos fichiers de configuration.

    Remarque - En raison du fait que ce fichier n’est inclus que lorsque le service démarre. Un redémarrage du service est nécessaire pour récupérer les modifications. Cela signifie qu’une recharge n’est pas suffisante, mais qu’un redémarrage est nécessaire.

    Fichiers variables (.vars)

    Les variables personnalisées fournies par votre code doivent se trouver dans les fichiers .vars dans le répertoire /etc/httpd/conf.d/variables/

    Ces fichiers peuvent avoir toutes les variables personnalisées que vous souhaitez. Voici quelques exemples de syntaxe pour les exemples de fichiers suivants :

    Lors de la création de vos propres fichiers de variables, nommez-les en fonction de leur contenu et pour respecter les normes d’attribution de noms fournies dans le manuel ici. Dans l’exemple ci-dessus, vous pouvez constater que le fichier de variables héberge les différentes entrées DNS en tant que variables à utiliser dans les fichiers de configuration.

    /etc/httpd/conf.d/variables/sample-domain_domains_dev.vars:

    code language-none
    Define SAMPLE_DOMAIN dev.sample-domain.com
        Define SAMPLE_ALT_DOMAIN dev.sample-domain.net
    

    /etc/httpd/conf.d/variables/sample-domain_domains_stage.vars:

    code language-none
    Define SAMPLE_DOMAIN stage.sample-domain.com
        Define SAMPLE_ALT_DOMAIN stage.sample-domain.net
    

    /etc/httpd/conf.d/variables/sample-domain_domains_prod.vars:

    code language-none
    Define SAMPLE_DOMAIN www.sample-domain.com
        Define SAMPLE_ALT_DOMAIN www.sample-domain.net
    
  3. Utilisation de variables
    Maintenant que vous avez défini vos variables dans vos fichiers de variables, vous allez savoir comment les utiliser correctement dans vos autres fichiers de configuration.

    Nous utiliserons les exemples de fichiers .vars ci-dessus pour illustrer un cas d’utilisation approprié.

    Nous voulons inclure toutes les variables basées sur l'environnement globalement. Nous allons créer le fichier /etc/httpd/conf.d/000_load_env_vars.conf

    code language-none
    Include /etc/httpd/conf.d/variables/*_${ENV_TYPE}.vars
    Include /etc/httpd/conf.d/variables/*_${RUNMODE}.vars
    

    Nous savons que lorsque le service httpd démarre, il extrait les variables définies par AMS dans /etc/sysconfig/httpd et possède l’ensemble de variables ENV_TYPE et RUNMODE.

    Lorsque ce fichier .conf global est extrait, il l’est plus tôt, car l’ordre d’inclusion des fichiers dans conf.d correspond à un ordre de chargement alphanumérique ; 000 dans le nom du fichier assure qu’il se charge avant les autres fichiers du répertoire.

    L’instruction d’inclusion utilise également une variable dans le nom de fichier. Cela peut modifier le fichier qu’il charge en fonction de la valeur des variables ENV_TYPE et RUNMODE.

    Si la valeur ENV_TYPE est dev, alors le fichier utilisé est :

    /etc/httpd/conf.d/variables/sample-domain_domains_dev.vars

    Si la valeur ENV_TYPE est stage, alors le fichier utilisé est :

    /etc/httpd/conf.d/variables/sample-domain_domains_stage.vars

    Si la valeur RUNMODE est preview, alors le fichier utilisé est :

    /etc/httpd/conf.d/variables/sample-domain_domains_preview.vars

    Lorsque ce fichier sera inclus, il nous permettra d’utiliser les noms de variables qui étaient stockés à l’intérieur.

    Dans notre fichier /etc/httpd/conf.d/available_vhosts/sample-domain.vhost, nous pouvons remplacer la syntaxe normale qui ne fonctionnait que pour dev :

    code language-none
    <VirtualHost *:80>
    
      ServerName    dev.sample-domain.com
    
      ServerAlias    dev.sample-domain.net
    

    Avec une syntaxe plus récente qui utilise la puissance des variables pour fonctionner pour le développement, l’évaluation et la production :

    code language-none
    <VirtualHost *:80>
    
      ServerName    ${SAMPLE_DOMAIN}
    
      ServerAlias    ${SAMPLE_ALT_DOMAIN}
    

    Dans notre fichier /etc/httpd/conf.dispatcher.d/vhosts/sample-domain_vhosts.any, nous pouvons remplacer la syntaxe normale qui ne fonctionnait que pour dev :

    code language-none
    "dev.sample-domain.com"
    "dev.sample-domain.net"
    

    Avec une syntaxe plus récente qui utilise la puissance des variables pour fonctionner pour le développement, l’évaluation et la production :

    code language-none
    "${SAMPLE_DOMAIN}"
    "${SAMPLE_ALT_DOMAIN}"
    

    Ces variables ont une grande quantité de réutilisation pour personnaliser les paramètres d’exécution sans avoir à déployer différents fichiers par environnement. Vous pouvez essentiellement modéliser vos fichiers de configuration à l’aide de variables et inclure des fichiers en fonction de variables.

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f