Verwenden und Verstehen von Variablen

Erfahren Sie, wie Sie die Leistungsfähigkeit von Variablen in den Konfigurationsdateien des Apache-Webservers und des Dispatcher-Moduls nutzen können.

Beschreibung description

Umgebung

Adobe Experience Manager (AEM)

Problem

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 Variablen und Versionen ab 4.1.9 des Dispatcher-Moduls. Wir können diese nutzen, um Folgendes durchzuführen:

  • Stellen Sie sicher, dass umgebungsspezifische Elemente nicht in den Konfigurationen inline vorhanden sind, sondern extrahiert werden, um sicherzustellen, dass die Konfigurationsdateien aus der Entwicklungsumgebung mit derselben Funktionsausgabe in der Produktionsumgebung funktionieren.
  • Schalten Sie Funktionen um und ändern Sie die Protokollierungsstufen unveränderlicher Dateien, die AMS bereitstellt und nicht ändern lässt.
  • Ändern Sie , was die Verwendung von basierend auf Variablen wie RUNMODE und ENV_TYPE beinhaltet.
  • Abgleichen der DocumentRoot- und VirtualHost-DNS-Namen zwischen Apache-Konfigurationen und Modulkonfigurationen.

Auflösung resolution

  1. Verwenden von Baseline-Variablen
    Da die AMS-Baseline-Dateien schreibgeschützt und unveränderlich sind, gibt es Funktionen, die ein- und ausgeschaltet sowie durch Bearbeiten der von ihnen verwendeten Variablen konfiguriert werden können.

    Baseline-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 gezeigten Variablen AUTHOR_FORCE_SSL oder PUBLISH_FORCE_SSL können auf 1 gesetzt werden, um Neuschreibungsregeln zu erzwingen, die Endbenutzende bei der Eingabe über eine HTTP-Anfrage zwingen, zu https umgeleitet zu werden.

    Im Folgenden finden Sie die Syntax in der Konfigurationsdatei, die es diesem Umschalter ermöglicht zu funktionieren:

    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 können, ist das, was den Code hat, um den Endbenutzer-Browser umzuleiten, die Variable, die auf 1 gesetzt wird, ist das, was die Verwendung der Datei erlaubt oder nicht.

    Beispiel 2 - Protokollierungsebene

    Mit den Variablen DISP_LOG_LEVEL können Sie festlegen, was Sie für die Protokollebene haben möchten, die in der laufenden Konfiguration tatsächlich verwendet wird.

    Im Folgenden finden Sie das Syntaxbeispiel, das in den AMS-Basiskonfigurationsdateien vorhanden ist:

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

    Wenn Sie die Dispatcher-Protokollierungsebene erhöhen müssen, aktualisieren Sie einfach die ams_default.vars-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 Ganzzahl Wortwert
    Spur 4 Spur
    Debugging 3 Debug
    Info 2 INFO
    Warnung 1 WARN
    Fehler 0 error

    Beispiel 3 - Whitelists

    Die Variablen AUTHOR_WHITELIST_ENABLED und PUBLISH_WHITELIST_ENABLED können auf 1 gesetzt werden, um Neuschreibungsregeln einzubinden, die Regeln enthalten, mit denen Endbenutzer-Traffic basierend auf der IP-Adresse zugelassen oder untersagt wird. Das Umschalten dieser Funktion EIN muss mit dem Erstellen einer Regeldatei für die Zulassungsliste kombiniert werden, damit sie Folgendes enthält.

    Im Folgenden finden Sie einige Syntaxbeispiele dafür, wie die Variable das Einschließen der Dateien der Zulassungsliste und ein Beispiel für eine Datei der Zulassungsliste ermöglicht:

    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>
    

    Wie zu sehen ist, erzwingt der sample_whitelist.rules die IP-Beschränkung, aber durch Umschalten der Variable kann sie in die sample.vhost aufgenommen werden

  2. Wo können die Variablen platziert werden?
    Startargumente des Webservers

    AMS fügt globale Variablen in die Startargumente des Apache-Prozesses in die /etc/sysconfig/httpd ein

    Diese Datei enthält vordefinierte Variablen, wie hier 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 ist nichts, was Sie ändern können, aber es ist gut, dies in Ihren Konfigurationsdateien zu nutzen.

    Hinweis - Da diese Datei nur beim Start des Services eingeschlossen wird. Ein Neustart des Dienstes ist erforderlich, um Änderungen aufzunehmen. Das bedeutet, dass ein erneutes Laden nicht ausreicht, sondern stattdessen ein Neustart erforderlich ist.

    Variablendateien (.vars)

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

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

    Benennen Sie Ihre eigenen Variablendateien nach ihrem Inhalt und folgen Sie den Benennungsstandards, die im Handbuch (hier​ angegeben ​. Im obigen Beispiel können Sie sehen, dass die Variablendatei die verschiedenen DNS-Einträge als Variablen hostet, die in den Konfigurationsdateien verwendet werden.

    /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. Verwenden von Variablen
    Nachdem Sie nun Ihre Variablen in Ihren Variablendateien definiert haben, sollten Sie wissen, wie Sie sie in Ihren anderen Konfigurationsdateien ordnungsgemäß verwenden können.

    Zur Veranschaulichung eines ordnungsgemäßen Anwendungsfalls verwenden wir die obigen beispielhaften .vars-Dateien.

    Wir möchten alle umgebungsbasierten Variablen global einbeziehen. Wir erstellen die Datei /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-Service beim Start die von AMS in /etc/sysconfig/httpd festgelegten Variablen abruft und den Variablensatz von ENV_TYPE und RUNMODE hat

    Wenn diese globale .conf-Datei eingezogen wird, wird sie frühzeitig eingezogen, da die Reihenfolge der Dateien in conf.d alphanumerisch ist. 000 bedeutet im Dateinamen, dass sie vor den anderen Dateien im Verzeichnis geladen wird.

    Die Include-Anweisung verwendet außerdem eine Variable im Dateinamen. Dadurch kann geändert werden, welche Datei tatsächlich geladen wird, je nachdem, welcher Wert in den ENV_TYPE- und RUNMODE-Variablen liegt.

    Wenn der ENV_TYPE Wert dev lautet, wird folgende Datei verwendet:

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

    Wenn der ENV_TYPE Wert "" , wird folgende Datei verwendet:

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

    Wenn der RUNMODE Wert "" lautet wird folgende Datei verwendet:

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

    Wenn diese Datei aufgenommen wird, können wir die Variablennamen verwenden, die darin gespeichert waren.

    In unserer /etc/httpd/conf.d/available_vhosts/sample-domain.vhost-Datei können wir die normale Syntax austauschen, die nur für „dev“ funktionierte:

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

    Mit einer neueren Syntax, die die Leistungsfähigkeit von Variablen für die Entwicklung, Staging und Produktion nutzt:

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

    In unserer /etc/httpd/conf.dispatcher.d/vhosts/sample-domain_vhosts.any-Datei können wir die normale Syntax austauschen, die nur für „dev“ funktionierte:

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

    Mit einer neueren Syntax, die die Leistungsfähigkeit von Variablen für die Entwicklung, Staging und Produktion nutzt:

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

    Diese Variablen können in großem Umfang wiederverwendet werden, um laufende Einstellungen zu individualisieren, ohne dass dafür unterschiedliche Dateien pro Umgebung bereitgestellt werden müssen. Sie erstellen im Wesentlichen eine Vorlage für Ihre Konfigurationsdateien, indem Sie Variablen verwenden und Dateien basierend auf Variablen einschließen.

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