Erläuterung der Konfigurationsdateien | AEM
Beschreibung description
Umgebung
Experience Manager
Problem/Symptome
In diesem Dokument werden die einzelnen Konfigurationsdateien aufgeschlüsselt und erläutert, die in einem standardmäßigen, in Adobe Managed Services bereitgestellten Dispatcher-Server bereitgestellt werden. Ihre Verwendung, Namenskonvention usw.
Namenskonvention
Apache Webserver kümmert sich nicht darum, was die Dateierweiterung einer Datei ist, wenn sie sie mit einer Include- oder Include-optionalen Anweisung anvisiert. Wenn Sie sie richtig mit Namen benennen, die Konflikte und Verwirrung vermeiden, hilft Ihnen das. Die verwendeten Namen beschreiben den Anwendungsbereich, auf den die Datei angewendet wird, und erleichtern das Leben. Wenn alles ".conf“ heißt, ist das sehr verwirrend. Vermeiden Sie schlecht benannte Dateien und Erweiterungen.
Nachstehend finden Sie eine Liste der verschiedenen benutzerdefinierten Dateierweiterungen und Benennungskonventionen, die in einer typischen AMS-konfigurierten Dispatcher verwendet werden.
In conf.d/ enthaltene Dateien
< DATEINAME> .conf< DATEINAME> .vhostBereitgestellt: /etc/httpd/conf.d/available_vhosts/
Active:
/etc/httpd/conf.d/enabled_vhosts/
*Hinweis: .vhost-Dateien dürfen nicht in den Ordner enabled_vhosts kopiert werden, sondern müssen Symlinks zu einem relativen Pfad zur Datei available_vhosts/ .vhost verwenden
< VirtualHosts-> Einträge, die Hostnamen entsprechen und es Apache ermöglichen, den Traffic jeder Domain mit unterschiedlichen Regeln zu verarbeiten. Aus der .vhost-Datei werden andere Dateien wie Neuschreibungen, Whitelists usw. ist enthalten.< FILENAME> _rewrite.rules*_rewrite.rules speichern mod_rewrite Regeln, die explizit von einer vhost-Datei eingeschlossen und genutzt werden sollen< FILENAME> _whitelist.rulesIn conf.modules.d/ enthaltene Dateien
< DATEINAME> .any< DATEINAME> _farm.anyGestaffelt
:
/etc/httpd/conf.dispatcher.d/available_fields/
Active
:
/etc/httpd/conf.dispatcher.d/enabled_arms/
*Hinweis: Diese Farm-Dateien dürfen nicht in den Ordner enabled_arms kopiert werden, sondern müssen Symlinks zu einem relativen Pfad zur Datei available_fields/ _farm.any verwenden
Es fügt sie automatisch nach Namen aus der Datei dispatcher.any ein.
Grundlegende Farm-Dateien beginnen mit 000, um sicherzustellen, dass sie zuerst geladen werden.
Benutzerdefinierte Farm-Dateien sollten nach dem Laden geladen werden, indem ihr Nummernschema bei 100_ gestartet wird, um das richtige Include-Verhalten sicherzustellen.
< FILENAME> _filters.any< DATEINAME> _vhosts.any< FILENAME> _cache.any< FILENAME> _invalidate_allowed.any< FILENAME> _clientheaders.any< FILENAME> _renders.anyVermeidete Probleme
Wenn Sie der Namenskonvention folgen, vermeiden Sie einige ziemlich leicht zu machende Fehler, die katastrophale Folgen haben können. Sehen wir uns einige Beispiele an.
Problembeispiel
Als Site-Beispiel werden für ExampleCo zwei Konfigurationsdateien von den Entwicklern der Dispatcher-Konfigurationen erstellt.
/etc/httpd/conf.d/exampleco.conf
<VirtualHost *:80>
ServerName "exampleco"
ServerAlias "www.exampleco.com"
.......... SNIP ...............
<IfModule mod_rewrite.c>
ReWriteEngine on
LogLevel warn rewrite:trace1
Include /etc/httpd/conf.d/rewrites/exampleco.conf
</IfModule>
</VirtualHost>
/etc/httpd/conf.d/rewrites/exampleco.conf
RewriteRule /$ /content/exampleco/en.html [ PT,L]
RewriteRule /robots.txt$ /content/dam/exampleco/robots.txt [ PT,L]
POTENZIELLE GEFAHR
a. Die Dateinamen sind identisch.
Wenn die vhost-Datei versehentlich im Ordner rewrites abgelegt wird und die rewrites-Datei im Ordner vhosts abgelegt wird. Es scheint, als würde es von Dateinamen richtig bereitgestellt werden, aber Apache gibt einen Fehler aus und das Problem ist nicht sofort sichtbar.
Wie wird dies normalerweise zu einem Problem?
Wenn die beiden Dateien an denselben Speicherort heruntergeladen werden, können sie sich entweder selbst überschreiben oder sie ununterscheidbar machen, was den Bereitstellungsprozess zu einem Albtraum macht.
b. Die Dateierweiterungen sind identisch und neigen automatisch zum Einschließen
Die Dateierweiterungen sind dieselben und verwenden automatisch eingeschlossene Erweiterungen, die Apache automatisch alle .conf-Dateien in vielen seiner Standardordner einbezieht.
Wie wird dies normalerweise zu einem Problem?
Wenn die vhost-Datei mit der Erweiterung .conf im Ordner /etc/httpd/conf.d/ abgelegt wird, wird versucht, sie in den Speicher von Apache zu laden, was normalerweise in Ordnung ist, aber wenn die Rewrite-Regeldatei mit der Erweiterung .conf im Ordner /etc/httpd/conf.d/ platziert wird, wird sie automatisch eingeschlossen und global angewendet, was verwirrende und unerwünschte Ergebnisse verursacht.
Auflösung resolution
Benennen Sie die Dateien basierend auf ihren Aufgaben und sicher aus dem Namespace der automatisch einzuschließenden Regeln heraus.
- Wenn es sich um eine Virtual-Host-Datei handelt, wird sie mit
.vhostals Erweiterung benannt. - Wenn es sich um eine Rewrite-Regeldatei handelt, benennen Sie sie mit
<site>_rewrite.rulesals Suffix und Erweiterung. Diese Namenskonvention verdeutlicht, für welche Site sie sich befindet und dass es sich um eine Reihe von Neuschreibungsregeln handelt. - Wenn es sich um eine Regeldatei der IP-Zulassungsliste handelt, benennen Sie sie
<description>_whitelist.rulesals Suffix und Erweiterung. Diese Namenskonvention gibt eine Beschreibung dessen, wozu sie gut ist und dass es sich um einen Satz von Regeln zum Abgleichen von IP-Adressen handelt.
Durch die Verwendung dieser Namenskonventionen werden Probleme vermieden, wenn eine Datei in ein automatisch eingebundenes Verzeichnis verschoben wird, zu dem sie nicht gehört.
Wenn Sie beispielsweise eine Datei mit dem Namen ".rules“, ".any“ oder ".vhost“ in den Ordner „auto-include“ von /etc/httpd/conf.d/ einfügen, hat dies keine Auswirkungen.
Wenn eine Anfrage zur Änderung der Bereitstellung besagt, please deploy exampleco_rewrite.rules to production dispatchers die Person, die die Änderungen bereitstellt, bereits wissen kann, dass sie keine neue Site hinzufügt. Sie aktualisiert nur die Neuschreibungsregeln, wie im Dateinamen angegeben.
Bestellung einschließen
Bei der Erweiterung der Funktionalität und Konfigurationen in Apache Webserver, der unter Enterprise Linux installiert ist, müssen Sie einige wichtige Include-" beachten.
A. Apache Baseline umfasst
Die Apache-Binärdatei beginnt mit httpd.conf, das eine includeoptional zu den conf.d/*.conf- und conf.modules.d/*.conf-Verzeichnissen durchführt.
Wie im Diagramm oben gezeigt, sieht die httpd-Binärdatei nur auf die httpd.conf-Datei als Konfigurationsdatei aus. Diese Datei enthält die folgenden Anweisungen:
Include conf.modules.d/*.conf
IncludeOptional conf.d/*.conf
B. AMS-Top-Level umfasst
Als wir unseren Standard angewendet haben, haben wir einige zusätzliche Dateitypen und eigene Includes hinzugefügt.
Hier finden Sie die Grundlinien-Verzeichnisse von AMS und die Includes der obersten Ebene
Aufbauend auf der Apache-Grundlinie zeigen wir, wie AMS einige zusätzliche Ordner und Includes der obersten Ebene für conf.d Ordner sowie modulspezifische Ordner erstellt hat, die unter /etc/httpd/conf.dispatcher.d/ verschachtelt sind
Wenn Apache geladen wird, ruft es die /etc/httpd/conf.modules.d/02-dispatcher.conf ab und diese Datei enthält die Binärdatei /etc/httpd/modules/mod_dispatcher.so in den Ausführungsstatus.
LoadModule dispatcher_module modules/mod_dispatcher.so
Um das Modul in unserem </VirtualHost> zu verwenden, legen wir eine Konfigurationsdatei in /etc/httpd/conf.d/ namens dispatcher_vhost.conf ab und in dieser Datei sehen Sie Verwenden der grundlegenden Parameter, die für das Modul benötigt werden, um zu funktionieren:
<IfModule disp_apache2.c>
DispatcherConfig conf.dispatcher.d /dispatcher .any
...SNIP...
</IfModule>
Wie Sie oben sehen können, enthält dies die Datei dispatcher.any auf oberster Ebene für unser Dispatcher-Modul, um seine Konfigurationsdateien von /etc/httpd/conf.dispatcher.d/dispatcher.any abzurufen
Achten Sie auf den Inhalt dieser Datei:
/farms {
$include "enabled_farms/*_farm.any"
}
Die Datei dispatcher.any auf oberster Ebene enthält alle aktivierten Farm-Dateien, die in /etc/httpd/conf.dispatcher.d/enabled_farms/ mit dem Dateinamen <FILENAME>_farm.any leben, der unserer standardmäßigen Namenskonvention entspricht.
Später in der zuvor erwähnten dispatcher_vhost.conf-Datei wird auch eine Include-Anweisung ausgeführt, um jede aktivierte virtuelle Host-Datei, die in /etc/httpd/conf.d/enabled_vhosts/ mit dem Dateinamen von <FILENAME>.vhost lebt, zu aktivieren, der unserer Standard-Namenskonvention folgt.
IncludeOptional /etc/httpd/conf.d/enabled_vhosts/*.vhost
In jeder unserer .vhost-Dateien werden Sie feststellen, dass das Dispatcher-Modul als Standard-Datei-Handler für ein Verzeichnis initialisiert wird. Im Folgenden finden Sie eine beispielhafte vhost-Datei mit der Syntax:
<VirtualHost *:80>
ServerName "weretail"
ServerAlias www.weretail.com weretail.com
<Directory />
<IfModule disp_apache2.c>
....SNIP....
SetHandler dispatcher-handler
</IfModule>
....SNIP....
</Directory>
....SNIP....
</VirtualHost>
Nachdem die oberste Ebene Includes aufgelöst hat, verfügen sie über weitere Untereinschlüsse, die erwähnt werden sollten. Im Folgenden finden Sie ein allgemeines Diagramm dazu, wie die Dateien „Farmen“ und „vhosts“ andere Unterelemente enthalten
c. AMS Virtual Host umfasst
Wenn alle .vhost-Dateien aus /etc/httpd/conf.d/availabled_vhosts/ Verzeichnis mit dem /etc/httpd/conf.d/enabled_vhosts/ Verzeichnis verknüpft werden, werden sie in der laufenden Konfiguration verwendet.
Die vhost-Dateien enthalten Unterelemente, die auf den von uns gefundenen allgemeinen Elementen basieren. Dinge wie Variablen, Whitelists und Neuschreibungsregeln.
Die .vhost-Datei enthält Include-Anweisungen für jede Datei, je nachdem, wo sie in die .vhost-Datei aufgenommen werden müssen. Im Folgenden finden Sie eine Beispielsyntax für eine .vhost-Datei als Referenz:
Include /etc/httpd/conf .d /variables/weretail .vars VirtualHost *:80
ServerName "${MAIN_DOMAIN}"
Directory / Include /etc/httpd/conf .d /whitelists/weretail *_whitelist.rules
IfModule disp_apache2.c
....SNIP....
SetHandler dispatcher-handler
/IfModule
....SNIP....
/Directory
....SNIP....
IfModule mod_rewrite.c
ReWriteEngine on
LogLevel warn rewrite:trace1
Include /etc/httpd/conf .d /rewrites/weretail_rewrite .rules
/IfModule /VirtualHost
Wie Sie im obigen Beispiel sehen können, gibt es ein Include für die Variablen, die in dieser Konfigurationsdatei benötigt werden und später verwendet werden.
In der Datei /etc/httpd/conf.d/variables/weretail.vars können wir sehen, welche Variablen definiert sind:
Define MAIN_DOMAIN dev.weretail.com
Sie können auch eine Zeile sehen, die eine Liste von Dateien der Whitelist.rules enthält, die einschränken, wer diese Inhalte anzeigen kann, basierend auf verschiedenen Kriterien der Whitelist. Sehen wir uns nun den Inhalt einer der Dateien der Zulassungsliste /etc/httpd/conf.d/whitelists/weretail_mainoffice_whitelist.rules:
<RequireAny>
Require ip 192.150.16.0/23
</RequireAny>
Sie können auch eine Zeile sehen, die einen Satz von Neuschreibungsregeln enthält. Sehen wir uns den Inhalt der weretail_rewrite.rules-Datei an:
RewriteRule /robots.txt$ /content/dam/weretail/robots.txt [ NC,PT]
RewriteCond %{SERVER_NAME} brand1.weretail.net [ NC]
RewriteRule /favicon.ico$ /content/dam/weretail/favicon.ico [ NC,PT]
RewriteCond %{SERVER_NAME} brand2.weretail.com [ NC]
RewriteRule /sitemap.xml$ /content/weretail/general/sitemap.xml [ NC,PT]
RewriteRule /logo.jpg$ /content/dam/weretail/general/logo.jpg [ NC,PT]
D. AMS-Farm umfasst
Wenn <FILENAME>_farm.any Dateien aus /etc/httpd/conf.dispatcher.d/available_farms/ Verzeichnis mit dem /etc/httpd/conf.dispatcher.d/enabled_farms/ Verzeichnis verknüpft werden, werden sie in der laufenden Konfiguration verwendet.
Die Farm-Dateien enthalten Untereinschlüsse, die auf obersten Abschnitten der Farm basieren wie Cache, ClientHeaders, Filter, Renderings und virtuellen Hosts.
Die <FILENAME>_farm.any-Dateien haben für jede Datei Include-Anweisungen, je nachdem, wo sie in die Farm-Datei aufgenommen werden müssen. Im Folgenden finden Sie eine Beispielsyntax für eine <FILENAME>_farm.any-Datei als Referenz:
/weretailfarm {
/clientheaders {
$include "/etc/httpd/conf.dispatcher.d/clientheaders/ams_publish_clientheaders.any"
$include "/etc/httpd/conf.dispatcher.d/clientheaders/ams_common_clientheaders.any"
}
/virtualhosts {
$include "/etc/httpd/conf.dispatcher.d/vhosts/weretail_vhosts.any"
}
/renders {
$include "/etc/httpd/conf.dispatcher.d/renders/ams_publish_renders.any"
}
/filter {
$include "/etc/httpd/conf.dispatcher.d/filters/ams_publish_filters.any"
$include "/etc/httpd/conf.dispatcher.d/filters/weretail_search_filters.any"
}
....SNIP....
/cache {
....SNIP....
/rules {
$include "/etc/httpd/conf.dispatcher.d/cache/ams_publish_cache.any"
}
....SNIP....
/allowedClients {
/0000 {
/glob "*.*.*.*"
/type "deny"
}
$include "/etc/httpd/conf.dispatcher.d/cache/ams_publish_invalidate_allowed.any"
}
....SNIP....
}
}
Wie Sie jeden Abschnitt für die WeRetail-Farm sehen können, verwenden Sie anstelle der gesamten erforderlichen Syntax eine include-Anweisung.
Sehen wir uns die Syntax einiger dieser Includes an, um eine Vorstellung davon zu erhalten, wie jedes eingeschlossene Teil /etc/httpd/conf.dispatcher.d/vhosts/weretail_publish_vhosts.any würde:
"brand1.weretail.com"
"brand2.weretail.com"
"www.weretail.comf"
Wie Sie sehen können, handelt es sich um eine neue, zeilengetrennte Liste von Domain-Namen, die von dieser Farm aus über die anderen gerendert werden sollen.
Als Nächstes sehen wir uns die /etc/httpd/conf.dispatcher.d/filters/weretail_search_filters.any an:
/400 { /type "allow" /method "GET" /path "/bin/weretail/lists/*" /extension "json" }
/401 { /type "allow" /method "POST" /path "/bin/weretail/search/" /extension "html" }