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
undENV_TYPE
verwendet werden sollen - Passen Sie die DNS-Namen von DocumentRoot und VirtualHost zwischen Apache-Konfigurationen und Modulkonfigurationen an.
Auflösung resolution
-
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_SSL
oderPUBLISH_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
VariableDISP_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
undPUBLISH_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 Variablesample.vhost
-
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
-
-
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 vonENV_TYPE
undRUNMODE
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
undRUNMODE
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.