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
RUNMODEundENV_TYPEbeinhaltet. - Abgleichen der DocumentRoot- und VirtualHost-DNS-Namen zwischen Apache-Konfigurationen und Modulkonfigurationen.
Auflösung resolution
-
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.varscode 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 0Beispiel 1: SSL erzwingen
Die oben gezeigten Variablen
AUTHOR_FORCE_SSLoderPUBLISH_FORCE_SSLkö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_LEVELkö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_LEVELauf 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_ENABLEDundPUBLISH_WHITELIST_ENABLEDkö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.rulesdie IP-Beschränkung, aber durch Umschalten der Variable kann sie in diesample.vhostaufgenommen werden -
Wo können die Variablen platziert werden?
Startargumente des WebserversAMS fügt globale Variablen in die Startargumente des Apache-Prozesses in die
/etc/sysconfig/httpdeinDiese 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 seinDiese 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 -
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.confcode language-none Include /etc/httpd/conf.d/variables/*_${ENV_TYPE}.vars Include /etc/httpd/conf.d/variables/*_${RUNMODE}.varsWir wissen, dass der HTTPD-Service beim Start die von AMS in
/etc/sysconfig/httpdfestgelegten Variablen abruft und den Variablensatz vonENV_TYPEundRUNMODEhatWenn 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- undRUNMODE-Variablen liegt.Wenn der
ENV_TYPEWert dev lautet, wird folgende Datei verwendet:/etc/httpd/conf.d/variables/sample-domain_domains_dev.varsWenn der
ENV_TYPEWert "" , wird folgende Datei verwendet:/etc/httpd/conf.d/variables/sample-domain_domains_stage.varsWenn der
RUNMODEWert "" lautet wird folgende Datei verwendet:/etc/httpd/conf.d/variables/sample-domain_domains_preview.varsWenn 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.netMit 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.