Variablen verwenden und verstehen

Beschreibung description

Umgebung

Adobe Experience Manager

Problem/Symptome

In diesem Dokument wird erläutert, wie Sie die Leistungsfähigkeit von Variablen im Apache-Webserver und in den Konfigurationsdateien des Dispatcher-Moduls nutzen können.

Variablen

Apache unterstützt ab Version 4.1.9 Variablen des Dispatcher-Moduls. Diese können wir nutzen, um Folgendes durchzuführen:

  • Stellen Sie sicher, dass alles, was umgebungsspezifisch ist, nicht inline in den Konfigurationen ist, sondern extrahiert wird, um sicherzustellen, dass Konfigurationsdateien aus dev in prod mit derselben funktionalen Ausgabe funktionieren.
  • Wechsel zu Funktionen und Änderung der Protokollebenen unveränderlicher Dateien, die AMS bereitstellt, lassen eine Änderung nicht zu.
  • Ändern, welche „includes“ basierend auf Variablen wie RUNMODE und ENV_TYPE verwendet werden sollen
  • Passen Sie die DNS-Namen von DocumentRoot und VirtualHost zwischen Apache-Konfigurationen und Modulkonfigurationen an.

Auflösung resolution

  1. Grundlegende Variablen verwenden
    Da die Grundlinien-Dateien von AMS schreibgeschützt und unveränderlich sind, können Funktionen deaktiviert und aktiviert sowie durch Bearbeiten der von ihnen verwendeten Variablen konfiguriert werden.

    Grundlegende Variablen

    Im Folgenden finden Sie ein Beispiel für den Inhalt der Datei /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
    

    Beispiel 1: SSL erzwingen

    Die oben aufgeführten Variablen AUTHOR_FORCE_SSLoder PUBLISH_FORCE_SSL kann auf 1 gesetzt werden, um Umschreibungsregeln zu aktivieren, die Endbenutzer zwingen, beim Eintreffen auf eine HTTP-Anfrage zu HTTPS umgeleitet zu werden.

    Die folgende Syntax der Konfigurationsdatei ermöglicht es, diesen Umschalter zu verwenden:

    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
    

    Wie Sie sehen, enthalten die Neuschreibungsregeln Folgendes: Der Code, um den Endbenutzer-Browser umzuleiten, aber die Variable, die auf 1 gesetzt ist, ermöglicht die Verwendung oder Nichtverwendung der Datei.

    Beispiel 2: Protokollierungsstufe

    Die Variablen DISP_LOG_LEVEL kann verwendet werden, um festzulegen, was Sie für die Protokollebene wünschen, die tatsächlich in der laufenden Konfiguration verwendet wird.

    Im Folgenden finden Sie ein Syntaxbeispiel, das in den grundlegenden AMS-Konfigurationsdateien vorhanden ist:

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

    Wenn Sie die Dispatcher-Protokollierungsstufe erhöhen müssen, aktualisieren Sie einfach die ams_default.vars Variable DISP_LOG_LEVEL auf die gewünschte Ebene.

    Beispielwerte können eine Ganzzahl oder das Wort sein:

    table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3
    Protokollebene Ganzzahlwert Wortwert
    Trace 4 trace
    Debuggen 3 debug
    Info 2 info
    Warnung 1 warn
    Fehler 0 error

    Beispiel 3: Whitelists

    Die Variablen AUTHOR_WHITELIST_ENABLED und PUBLISH_WHITELIST_ENABLED kann auf 1 gesetzt werden, um Umschreibungsregeln zu aktivieren, die Regeln enthalten, die den Endbenutzer-Traffic auf der Grundlage der IP-Adresse zulassen oder verbieten. Das Umschalten dieser Funktion auf muss auch mit dem Erstellen einer Whitelist-Regeldatei kombiniert werden, damit sie eingeschlossen wird.

    Im Folgenden finden Sie einige Syntaxbeispiele, wie die -Variable die Includes der Whitelist-Dateien und ein Beispiel für eine Whitelist-Datei aktiviert:

    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
    

    Sie können die sample_whitelist.rules erzwingt die IP-Beschränkung, aber durch Umschalten der Variable kann sie in die Variable sample.vhost

  2. Wo können die Variablen platziert werden?

    Argumente zum Starten von Webservern

    AMS legt globale Variablen in die Startargumente des Apache-Prozesses in die Datei /etc/sysconfig/httpd

    Diese Datei enthält vordefinierte Variablen, wie im Folgenden gezeigt:

    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'
    

    Dies kann sich nicht ändern, ist aber gut in Ihren Konfigurationsdateien zu nutzen.

    Hinweis - Da diese Datei nur beim Starten des Dienstes eingeschlossen wird. Um Änderungen aufzunehmen, ist ein Neustart des Dienstes erforderlich. Das bedeutet, dass eine Neuladung nicht ausreicht, sondern stattdessen ein Neustart erforderlich ist.

    Variablendateien (.vars)

    Benutzerdefinierte Variablen, die von Ihrem Code bereitgestellt werden, sollten sich in .vars-Dateien im Verzeichnis befinden /etc/httpd/conf.d/variables/

    Diese Dateien können beliebige benutzerdefinierte Variablen enthalten. Im Folgenden finden Sie einige Syntaxbeispiele für die folgenden Beispieldateien:

    Bei der Erstellung Ihrer eigenen Variablen benennen Sie sie anhand ihres Inhalts und folgen Sie den im Handbuch angegebenen Benennungsstandards. here. Im obigen Beispiel sehen Sie, dass die Variablendatei die verschiedenen DNS-Einträge als Variablen hostet, die in den Konfigurationsdateien verwendet werden sollen.

    • /etc/httpd/conf.d/variables/weretail_domains_dev.vars:

      code language-none
      Define WERETAIL_DOMAIN dev.weretail.com
          Define WERETAIL_ALT_DOMAIN dev.weretail.net
      
    • /etc/httpd/conf.d/variables/weretail_domains_stage.vars:

      code language-none
      Define WERETAIL_DOMAIN stage.weretail.com
          Define WERETAIL_ALT_DOMAIN stage.weretail.net
      
    • /etc/httpd/conf.d/variables/weretail_domains_prod.vars:

      code language-none
      Define WERETAIL_DOMAIN www.weretail.com
          Define WERETAIL_ALT_DOMAIN www.weretail.net
      
  3. Verwenden von Variablen
    Nachdem Sie Ihre Variablen in Ihren Variablendateien definiert haben, sollten Sie wissen, wie Sie sie in Ihren anderen Konfigurationsdateien ordnungsgemäß verwenden können.

    Wir verwenden die obigen Beispiel-VAR-Dateien, um einen geeigneten Anwendungsfall zu veranschaulichen.

    Wir möchten alle umgebungsbasierten Variablen global einbeziehen. Wir werden die Datei erstellen /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
    

    Wir wissen, dass der HTTPD-Dienst beim Start die von AMS festgelegten Variablen in abruft /etc/sysconfig/httpd und verfügt über den Variablensatz von ENV_TYPE und RUNMODE

    Wenn diese globale .conf-Datei abgerufen wird, wird sie frühzeitig abgerufen, da die Include-Reihenfolge der Dateien in "conf.d"die alphanumerische Ladereihenfolge "000"im Dateinamen ist. Dadurch wird sichergestellt, dass sie vor den anderen Dateien im Verzeichnis geladen wird.

    Die Include-Anweisung verwendet auch eine Variable im Dateinamen. Dadurch kann sich ändern, welche Datei tatsächlich geladen wird, basierend darauf, welcher Wert in der Variablen ENV_TYPE und RUNMODE Variablen.

    Wenn die Variable ENV_TYPE Wert ist dev dann wird die Datei verwendet:

    /etc/httpd/conf.d/variables/weretail_domains_dev.vars

    Wenn die Variable ENV_TYPE Wert ist Schritt dann wird die Datei verwendet:

    /etc/httpd/conf.d/variables/weretail_domains_stage.vars

    Wenn die Variable RUNMODE Wert ist Vorschau dann wird die Datei verwendet:

    /etc/httpd/conf.d/variables/weretail_domains_preview.vars

    Wenn diese Datei eingeschlossen wird, können wir die darin gespeicherten Variablennamen verwenden.

    In unserem /etc/httpd/conf.d/available_vhosts/weretail.vhost -Datei können wir die normale Syntax austauschen, die nur für dev funktioniert hat:

    code language-none
    VirtualHost *:80
    
      ServerName    dev.weretail.com
    
      ServerAlias    dev.weretail.net
    

    Wir ersetzen sie durch eine neuere Syntax, die die Leistungsfähigkeit von Variablen nutzt, um für Entwicklung, Staging und Produktion zu funktionieren:

    code language-none
    VirtualHost *:80
    
      ServerName    ${WERETAIL_DOMAIN}
    
      ServerAlias    ${WERETAIL_ALT_DOMAIN}
    

    In unserem /etc/httpd/conf.dispatcher.d/vhosts/weretail_vhosts.any -Datei können wir die normale Syntax austauschen, die nur für dev funktioniert hat:

    code language-none
    "dev.weretail.com"
    "dev.weretail.net"
    

    Wir ersetzen sie durch eine neuere Syntax, die die Leistungsfähigkeit von Variablen nutzt, um für Entwicklung, Staging und Produktion zu funktionieren:

    code language-none
    "${WERETAIL_DOMAIN}"
    "${WERETAIL_ALT_DOMAIN}"
    

    Diese Variablen können sehr häufig wiederverwendet werden, um laufende Einstellungen zu individualisieren, ohne dass je Umgebung unterschiedliche bereitgestellte Dateien benötigt werden. Im Grunde nehmen Sie Ihre Konfigurationsdateien mit Variablen als Vorlage vor und schließen Dateien ein, die auf Variablen basieren.

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