Protokolllevel
In diesem Dokument erfahren Sie, wie Sie im Apache-Webserver und in den Konfigurationsdateien des Dispatcher-Moduls die Vorteile von Variablen nutzen können.
??Inhalt
??Zurück Erläuterung des Caches
Variablen
Apache unterstützt Variablen – und seit Version 4.1.9 werden sie auch vom Dispatcher-Modul unterstützt.
Variablen sind in vielen Bereichen nützlich:
- Stellen Sie sicher, dass sich sämtliche umgebungsspezifische Elemente nicht intern in den Konfigurationen befinden, sondern extrahiert werden, damit die Konfigurationsdateien aus der Entwicklung auch in der Produktion funktionieren – mit der gleichen funktionierenden Ausgabe.
- (De-)Aktivieren Sie Funktionen und ändern Sie Protokollebenen der unveränderbaren Dateien, die von AMS bereitgestellt werden.
- Passen Sie über Variablen wie RUNMODE und ENV_TYPE an, welche Includes verwendet werden sollen.
- Gleichen Sie die DocumentRoot- und VirtualHost-DNS-Namen zwischen den Apache- und den Modulkonfigurationen ab.
Verwendung grundlegender Variablen
Da die grundlegenden AMS-Dateien schreibgeschützt und somit unveränderbar sind, gibt es Funktionen, die Sie (de-)aktivieren und durch Bearbeitung der von ihnen verwendeten Variablen konfigurieren können.
Standardmäßige und konfigurierbare Baseline-Variablen
Alle vordefinierten Variablen sind in /etc/httpd/conf.d/variables/ootb.vars definiert. Stellen Sie sicher, dass für alle Baseline-Variablen ein Standardwert festgelegt ist. Nachdem die Standardwerte geladen wurden, überschreiben die anderen .vars-Dateien die in der Datei ootb.vars definierten Werte.
Alle Variablen aus der Datei ootb.vars, die Sie ändern möchten, können in der bearbeitbaren Datei /etc/httpd/conf.d/variables/ams_default.vars angepasst werden
Hier ein Beispiel für einige Variablen:
Define DISP_LOG_LEVEL info Define AUTHOR_WHITELIST_ENABLED 0 Define PUBLISH_WHITELIST_ENABLED 0 Define AUTHOR_FORCE_SSL 1 Define PUBLISH_FORCE_SSL 1
Beispiel 1 – SSL erzwingen
Die oben gezeigte Variable AUTHOR_FORCE_SSL bzw. PUBLISH_FORCE_SSL kann auf 1 festgelegt werden, um Rewrite-Regeln zu aktivieren. Durch diese Regeln werden Endbenutzer, deren Anfragen über HTTP eingehen, an HTTPS umgeleitet.
Im Folgenden finden Sie die Syntax der Konfigurationsdatei, mit der diese (De-)Aktivierung funktioniert:
</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 der Code für die Umleitung des Endbenutzers im Include der Rewrite-Regel enthalten. Der Wert der Variable (hier auf 1 festgelegt) gibt hierbei an, ob die Datei verwendet werden darf oder nicht
Beispiel 2 – Protokollebene
Über die Variable DISP_LOG_LEVEL können Sie festlegen, welche Protokollebene Sie in der laufenden Konfiguration verwenden möchten.
Die folgende Beispielsyntax ist in den grundlegenden AMS-Konfigurationsdateien enthalten:
<IfModule disp_apache2.c> DispatcherLog logs/dispatcher.log DispatcherLogLevel ${DISP_LOG_LEVEL} </IfModule>
Wenn Sie die Protokollebene des Dispatchers erhöhen möchten, ändern Sie einfach die „ams_default.vars“-Variable DISP_LOG_LEVEL zu der gewünschten Ebene.
Werte können als Ganzzahl oder Wort eingegeben werden:
|
Ganzzahlwert |
Wortwert |
---|---|---|
Verfolgen |
4 |
trace |
Fehler beheben |
3 |
debug |
Information |
2 |
info |
Warnung |
1 |
warn |
Fehler |
0 |
error |
Beispiel 3 – Whitelists
Die Variablen AUTHOR_WHITELIST_ENABLED und PUBLISH_WHITELIST_ENABLED können auf 1 festgelegt werden, um Rewrite-Regeln zu aktivieren, die den Endbenutzer-Traffic basierend auf der IP-Adresse zulassen oder blockieren. Wenn Sie diese Funktion aktivieren, müssen Sie auch eine Datei mit Whitelisting-Regeln erstellen, die hierfür einbezogen werden kann.
Im Folgenden finden Sie einige Syntaxbeispiele dazu, wie Variablen die Includes der Whitelist-Dateien ermöglichen, sowie ein Beispiel für eine Whitelist-Datei
sample.vhost:
<VirtualHost *:80> <Directory /> <If "${AUTHOR_WHITELIST_ENABLED} == 1"> Include /etc/httpd/conf.d/whitelists/*_whitelist.rules </If> </Directory> </VirtualHost>
sample_whitelist.rules:
<RequireAny> Require ip 10.43.0.10/24 </RequireAny>
Wie Sie sehen können, erzwingt sample_whitelist.rules die IP-Beschränkung. Durch Umschalten der Variable kann sie jedoch in sample.vhost einbezogen werden
Beispiel 4: Stat-Dateiebene
Die Variable DEFAULT_STAT_LEVEL kann auf eine Zahl gesetzt werden, die es jeder Farm, die diese Variable benutzt, ermöglicht, zu wissen, wie viele Verzeichnisse tief zu erstellen sind.stat Dateien, wenn der Cache geleert wird
ams_defaults.vars:
Define DEFAULT_STAT_LEVEL 7
Jede Farm, die diese Variable verwendet, setzt nun ihr stat-Datei-Level auf 7. Es ist wirklich schön, dass diese globale Konfigurationseinstellung auf vielen Farmen problemlos angewendet werden kann. Im Folgenden finden Sie einen Abschnitt einer Farm-Datei, in dem die Variable verwendet wird
002_ams_publish_farm.any:
/publishfarm { /cache { /statfileslevel "${DEFAULT_STAT_LEVEL}" } }
Richtige Position für Variablen
Webserver-Startargumente
AMS legt globale Variablen in den Startargumenten des Apache-Prozesses in der Datei /etc/sysconfig/httpd ab.
Diese Datei verfügt über folgende vordefinierte Variablen:
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'
Diese Variablen können Sie nicht ändern, doch sie sind nützlich für Ihre Konfigurationsdateien.
Da die Datei nur einbezogen wird, wenn der Service startet, ist ein Neustart des Service erforderlich, um Änderungen zu übernehmen. Das bloße Neuladen reicht also nicht aus
Variablendateien (*.vars)
Die in Ihrem Code angegebenen benutzerdefinierten Variablen sollten sich in *.vars-Dateien im Verzeichnis /etc/httpd/conf.d/variables/ befinden.
Diese Dateien können beliebige benutzerdefinierte Variablen aufweisen. Syntaxbeispiele finden Sie in den folgenden Beispieldateien
/etc/httpd/conf.d/variables/weretail_domains_dev.vars:
Define WERETAIL_DOMAIN dev.weretail.com Define WERETAIL_ALT_DOMAIN dev.weretail.net
/etc/httpd/conf.d/variables/weretail_domains_stage.vars:
Define WERETAIL_DOMAIN stage.weretail.com Define WERETAIL_ALT_DOMAIN stage.weretail.net
/etc/httpd/conf.d/variables/weretail_domains_prod.vars:
Define WERETAIL_DOMAIN www.weretail.com Define WERETAIL_ALT_DOMAIN www..weretail.net
Wenn Sie eigene Variablendateien erstellen, benennen Sie sie basierend auf ihrem Inhalt und befolgen Sie die Benennungsstandards im Benutzerhandbuch. Im obigen Beispiel hostet die Variablendatei die verschiedenen DNS-Einträge als Variablen, die in den Konfigurationsdateien verwendet werden sollen.
Verwendung von Variablen
Nachdem Sie nun Ihre Variablen innerhalb der Variablendateien definiert haben, lernen Sie die richtige Verwendung der Variablen in Ihren anderen Konfigurationsdateien kennen.
Hierzu verwenden wir die obigen *.vars-Beispieldateien, um einen geeigneten Anwendungsfall zu veranschaulichen.
Wir möchten alle umgebungsbasierten Variablen global einbeziehen. Hierzu erstellen wir die Datei /etc/httpd/conf.d/000_load_env_vars.conf.
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 die Variable ENV_TYPE und RUNMODE verwendet.
Diese globale *.conf-Datei wird früh abgerufen, da die Include-Reihenfolge der Dateien in „conf.d/ alphanumerischen Werten folgt. Dateien mit „000“ im Dateinamen werden also vor anderen Dateien im Verzeichnis geladen.
Auch die Include-Anweisung verwendet eine Variable im Dateinamen. Hierdurch kann sich ändern, welche Datei tatsächlich geladen wird, basierend auf dem Wert der Variablen „ENV_TYPE“ und „RUNMODE“.
Wenn ENV_TYPE den Wert dev aufweist, wird folgende Datei verwendet:
/etc/httpd/conf.d/variables/weretail_domains_dev.vars
Wenn ENV_TYPE den Wert stage aufweist, wird folgende Datei verwendet:
/etc/httpd/conf.d/variables/weretail_domains_stage.vars
Wenn RUNMODE den Wert preview (Vorschau) aufweist, wird folgende Datei verwendet:
/etc/httpd/conf.d/variables/weretail_domains_preview.vars
Wenn diese Datei einbezogen wird, können wir die darin gespeicherten Variablennamen verwenden.
In unserer Datei /etc/httpd/conf.d/available_vhosts/weretail.vhost können wir die normale Syntax austauschen, die nur für „dev“ funktioniert:
<VirtualHost *:80> ServerName dev.weretail.com ServerAlias dev.weretail.net
Wir ersetzen sie durch eine neue Syntax, die die Vorteile von Variablen nutzt und so für „dev“, „stage“ und „prod“ verwendet werden kann:
<VirtualHost *:80> ServerName ${WERETAIL_DOMAIN} ServerAlias ${WERETAIL_ALT_DOMAIN}
In unserer Datei /etc/httpd/conf.dispatcher.d/vhosts/weretail_vhosts.any können wir die normale Syntax austauschen, die nur für „dev“ funktionierte:
"dev.weretail.com" "dev.weretail.net"
Wir ersetzen sie durch eine neue Syntax, die die Vorteile von Variablen nutzt und so für „dev“, „stage“ und „prod“ verwendet werden kann:
"${WERETAIL_DOMAIN}" "${WERETAIL_ALT_DOMAIN}"
Diese Variablen lassen sich gut wiederverwenden, um Ausführungseinstellungen zu individualisieren, ohne in den einzelnen Umgebungen unterschiedliche Dateien bereitstellen zu müssen. Im Grunde wandeln Sie Ihre Konfigurationsdateien in Vorlagen um, die die Dateien anhand von Variablen einbeziehen.
Weiter ➡ Leerung