Erläuterung und Verwendung von Variablen

In diesem Dokument erfahren Sie, wie Sie im Apache-Webserver und in den Konfigurationsdateien des Dispatcher-Moduls die Vorteile von Variablen nutzen können.

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 &quot;${PUBLISH_FORCE_SSL} == 1&quot;> 
   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:

Protokolllevel

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 &quot;${AUTHOR_WHITELIST_ENABLED} == 1&quot;> 
   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 &quot;${DEFAULT_STAT_LEVEL}&quot;
	}
}

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=&quot;10.43.0.59&quot;
AUTHOR_PORT=&quot;4502&quot;
AUTHOR_DOCROOT='/mnt/var/www/author'
PUBLISH_IP=&quot;10.43.0.20&quot;
PUBLISH_PORT=&quot;4503&quot;
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.

Hinweis:

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:

&quot;dev.weretail.com&quot; &quot;dev.weretail.net&quot;

Wir ersetzen sie durch eine neue Syntax, die die Vorteile von Variablen nutzt und so für „dev“, „stage“ und „prod“ verwendet werden kann:

&quot;${WERETAIL_DOMAIN}&quot; &quot;${WERETAIL_ALT_DOMAIN}&quot;

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

 Adobe

Schneller und einfacher Hilfe erhalten

Neuer Benutzer?

Adobe MAX 2024

Adobe MAX
Die Konferenz für Kreative

14. bis 16. Oktober in Miami Beach und online

Adobe MAX

Die Konferenz für Kreative

14. bis 16. Oktober in Miami Beach und online

Adobe MAX 2024

Adobe MAX
Die Konferenz für Kreative

14. bis 16. Oktober in Miami Beach und online

Adobe MAX

Die Konferenz für Kreative

14. bis 16. Oktober in Miami Beach und online