In diesem Dokument wird beschrieben, welche Dateien gesperrt sind und nicht verändert werden können und wie man die gewünschten Konfigurationseinstellungen richtig vornimmt.
??Inhalt
??Zurück Allgemeine Protokolle
Warum?
Wenn AMS ein System bereitstellt, wird eine Basiskonfiguration erstellt, die alles funktional und sicher macht.AMS möchte damit sicherstellen, dass dadurch eine solide Basis an Funktionalität und Sicherheit vorhanden ist.Zu diesem Zweck werden einige Dateien als schreibgeschützt und unveränderlich markiert, damit sie nicht von Ihnen geändert werden können.
Das Layout hindert Sie nicht daran, das Verhalten dieser Dateien zu ändern und die von Ihnen benötigten Änderungen zu überschreiben.Anstatt diese Dateien zu ändern, erstellen Sie eine Überlagerung durch Ihre eigene Datei, die das Original ersetzt.
Dadurch können Sie sicherstellen, dass Ihre Dateien nicht verändert werden, wenn AMS die Dispatcher mit den neuesten Patches und Sicherheitsverbesserungen aktualisiert.So können Sie weiterhin von den Verbesserungen profitieren und nur die gewünschten Änderungen übernehmen.
Wie im obigen Bild gezeigt, halten unveränderliche Dateien Sie nicht vom Spiel ab.Sie verhindern lediglich, dass Sie sich selbst schaden, und halten Sie in der Spur. Diese Methode ermöglicht uns ein paar sehr wichtige Schlüsselfunktionen:
- Anpassungen werden in ihren eigenen sicheren Bereichen vorgenommen
- Die Überlagerung benutzerdefinierter Änderungen entspricht den Überlagerungsmethoden in AEM
- Patches für AMS-Konfigurationen können durchgeführt werden, ohne dass die Anpassungen geändert werden
- Das Testen der Basisinstallation im Vergleich zu benutzerdefinierten Konfigurationen kann gleichzeitig durchgeführt werden, um festzustellen, ob die Probleme durch die Anpassungen oder durch etwas anderes verursacht werden
Welche Dateien?
Dies ist eine typische Liste von Dateien, die mit einem Dispatcher bereitgestellt werden:
/etc/httpd/ ├── conf │ └── httpd.conf ├── conf.d │ ├── available_vhosts │ │ ├── 000_unhealthy_author.vhost │ │ ├── 000_unhealthy_publish.vhost │ │ ├── aem_author.vhost │ │ ├── aem_flush.vhost │ │ ├── aem_health.vhost │ │ ├── ams_lc.vhost │ │ └── aem_publish.vhost │ ├── dispatcher_vhost.conf │ ├── enabled_vhosts │ │ ├── aem_author.vhost -> /etc/httpd/conf.d/available_vhosts/aem_author.vhost │ │ ├── aem_flush.vhost -> /etc/httpd/conf.d/available_vhosts/aem_flush.vhost │ │ ├── aem_health.vhost -> /etc/httpd/conf.d/available_vhosts/aem_health.vhost │ │ └── aem_publish.vhost -> /etc/httpd/conf.d/available_vhosts/aem_publish.vhost │ ├── logformat.conf │ ├── remoteip.conf │ ├── rewrites │ │ ├── base_rewrite.rules │ │ └── xforwarded_forcessl_rewrite.rules │ ├── security.conf │ ├── variables │ │ ├── ootb.vars │ │ └── ams_default.vars │ └── whitelists │ └── 000_base_whitelist.rules ├── conf.dispatcher.d │ ├── available_farms │ │ ├── 000_ams_catchall_farm.any │ │ ├── 001_ams_author_flush_farm.any │ │ ├── 001_ams_publish_flush_farm.any │ │ ├── 002_ams_author_farm.any │ │ ├── 002_ams_lc_farm.any │ │ └── 002_ams_publish_farm.any │ ├── cache │ │ ├── ams_author_cache.any │ │ ├── ams_author_invalidate_allowed.any │ │ ├── ams_publish_cache.any │ │ └── ams_publish_invalidate_allowed.any │ ├── clientheaders │ │ ├── ams_author_clientheaders.any │ │ ├── ams_common_clientheaders.any │ │ ├── ams_lc_clientheaders.any │ │ └── ams_publish_clientheaders.any │ ├── dispatcher.any │ ├── enabled_farms │ │ ├── 000_ams_catchall_farm.any -> /etc/httpd/conf.dispatcher.d/available_farms/000_ams_catchall_farm.any │ │ ├── 001_ams_author_flush_farm.any -> /etc/httpd/conf.dispatcher.d/available_farms/001_ams_author_flush_farm.any │ │ ├── 001_ams_publish_flush_farm.any -> /etc/httpd/conf.dispatcher.d/available_farms/001_ams_publish_flush_farm.any │ │ ├── 002_ams_author_farm.any -> /etc/httpd/conf.dispatcher.d/available_farms/002_ams_author_farm.any │ │ └── 002_ams_publish_farm.any -> /etc/httpd/conf.dispatcher.d/available_farms/002_ams_publish_farm.any │ ├── filters │ │ ├── ams_author_filters.any │ │ ├── ams_lc_filters.any │ │ └── ams_publish_filters.any │ ├── renders │ │ ├── ams_author_renders.any │ │ ├── ams_lc_renders.any │ │ └── ams_publish_renders.any │ └── vhosts │ ├── ams_author_vhosts.any │ ├── ams_lc_vhosts.any │ └── ams_publish_vhosts.any ├── conf.modules.d │ ├── 01-cgi.conf │ └── 02-dispatcher.conf └── modules -> ../../usr/lib64/httpd/modules └── mod_dispatcher.so
Um festzustellen, welche Dateien unveränderlich sind, können Sie den folgenden Befehl auf einem Dispatcher ausführen:
$ lsattr -Rl /etc/httpd 2>/dev/null | grep Immutable
Hier eine Beispielantwort, die angibt, welche Dateien unveränderlich sind:
/etc/httpd/conf/httpd.conf Immutable /etc/httpd/conf.d/available_vhosts/aem_author.vhost Immutable /etc/httpd/conf.d/available_vhosts/aem_publish.vhost Immutable /etc/httpd/conf.d/available_vhosts/aem_lc.vhost Immutable /etc/httpd/conf.d/available_vhosts/aem_flush.vhost Immutable /etc/httpd/conf.d/available_vhosts/aem_health.vhost Immutable /etc/httpd/conf.d/available_vhosts/000_unhealthy_author.vhost Immutable /etc/httpd/conf.d/available_vhosts/000_unhealthy_publish.vhost Immutable /etc/httpd/conf.d/rewrites/base_rewrite.rules Immutable /etc/httpd/conf.d/rewrites/xforwarded_forcessl_rewrite.rules Immutable /etc/httpd/conf.d/whitelists/000_base_whitelist.rules Immutable /etc/httpd/conf.d/dispatcher_vhost.conf Immutable /etc/httpd/conf.d/logformat.conf Immutable /etc/httpd/conf.d/security.conf Immutable /etc/httpd/conf.modules.d/02-dispatcher.conf Immutable /etc/httpd/conf.dispatcher.d/available_farms/000_ams_catchall_farm.any Immutable /etc/httpd/conf.dispatcher.d/available_farms/001_ams_author_flush_farm.any Immutable /etc/httpd/conf.dispatcher.d/available_farms/001_ams_publish_flush_farm.any Immutable /etc/httpd/conf.dispatcher.d/available_farms/002_ams_author_farm.any Immutable /etc/httpd/conf.dispatcher.d/available_farms/002_ams_lc_farm.any Immutable /etc/httpd/conf.dispatcher.d/available_farms/002_ams_publish_farm.any Immutable /etc/httpd/conf.dispatcher.d/cache/ams_author_cache.any Immutable /etc/httpd/conf.dispatcher.d/cache/ams_author_invalidate_allowed.any Immutable /etc/httpd/conf.dispatcher.d/cache/ams_publish_cache.any Immutable /etc/httpd/conf.dispatcher.d/cache/ams_publish_invalidate_allowed.any Immutable /etc/httpd/conf.dispatcher.d/clientheaders/ams_author_clientheaders.any Immutable /etc/httpd/conf.dispatcher.d/clientheaders/ams_publish_clientheaders.any Immutable /etc/httpd/conf.dispatcher.d/clientheaders/ams_common_clientheaders.any Immutable /etc/httpd/conf.dispatcher.d/clientheaders/ams_lc_clientheaders.any Immutable /etc/httpd/conf.dispatcher.d/filters/ams_author_filters.any Immutable /etc/httpd/conf.dispatcher.d/filters/ams_publish_filters.any Immutable /etc/httpd/conf.dispatcher.d/filters/ams_lc_filters.any Immutable /etc/httpd/conf.dispatcher.d/renders/ams_author_renders.any Immutable /etc/httpd/conf.dispatcher.d/renders/ams_publish_renders.any Immutable /etc/httpd/conf.dispatcher.d/renders/ams_lc_renders.any Immutable /etc/httpd/conf.dispatcher.d/vhosts/ams_author_vhosts.any Immutable /etc/httpd/conf.dispatcher.d/vhosts/ams_publish_vhosts.any Immutable /etc/httpd/conf.dispatcher.d/vhosts/ams_lc_vhosts.any Immutable /etc/httpd/conf.dispatcher.d/dispatcher.any Immutable
So nehmen Sie Änderungen vor
Variablen
Mit Variablen können Sie funktionale Änderungen vornehmen, ohne die Konfigurationsdateien selbst zu verändern. Bestimmte Elemente der Konfiguration können durch die Anpassung von Variablenwerten eingestellt werden. Ein Beispiel dafür von der Datei /etc/httpd/conf.d/dispatcher_vhost.conf ist hier zu sehen:
Include /etc/httpd/conf.d/variables/ams_default.vars <IfModule disp_apache2.c> DispatcherConfig conf.dispatcher.d/dispatcher.any DispatcherLog logs/dispatcher.log DispatcherLogLevel ${DISP_LOG_LEVEL} DispatcherDeclineRoot 0 DispatcherUseProcessedURL 1 </IfModule>
Beachten Sie, dass die Direktive DispatcherLogLevel die Variable DISP_LOG_LEVEL anstelle des normalen Werts enthält, den Sie sonst dort sehen würden. Oberhalb dieses Code-Abschnitts sehen Sie auch eine Include-Anweisung für eine Variablen-Datei. Als Nächstes sehen wir uns die Variablendatei /etc/httpd/conf.d/variables/ams_default.vars an. Dies ist der Inhalt dieser Variablen-Datei:
Define DISP_LOG_LEVEL info Define AUTHOR_WHITELIST_ENABLED 0 Define PUBLISH_WHITELIST_ENABLED 0 Define LIVECYCLE_WHITELIST_ENABLED 0 Define AUTHOR_FORCE_SSL 1 Define PUBLISH_FORCE_SSL 0 Define LIVECYCLE_FORCE_SSL 1
Wie Sie sehen, ist der aktuelle Wert der Variable DISP_LOG_LEVEL „info“. Wir können diesen Wert auf „trace“ oder „debug“ oder auf einen Zahlenwert / ein Level Ihrer Wahl einstellen. Nun werden alle Stellen, die das Protokoll-Level kontrollieren, automatisch angepasst.
Überlagerungsmethode
Bitte machen Sie sich mit Include-Dateien der obersten Ebene vertraut, da diese Ihr Ausgangspunkt für alle Anpassungen sind. Um mit einem einfachen Beispiel zu beginnen, ziehen wir ein Szenario heran, in dem wir einen neuen Domain-Namen hinzufügen möchten, der auf diesen Dispatcher verweisen soll. Das Domain-Beispiel, das wir verwenden werden, ist we-retail.adobe.com. Kopieren Sie zunächst eine vorhandene Konfigurationsdatei in eine neue, in die wir unsere Änderungen einfügen können:
$ cp /etc/httpd/conf.d/available_vhosts/aem_publish.vhost /etc/httpd/conf.d/available_vhosts/weretail_publish.vhost
Wir haben die bestehende Datei aem_publish.vhost kopiert, weil sie bereits alles enthält, was wir brauchen, und wir einen guten Ansatz nicht neu erfinden wollen. Jetzt bearbeiten wir die neue Datei weretail.vhost und nehmen die erforderlichen Änderungen vor.
Vorher:
<VirtualHost *:80> ServerName publish ServerAlias ${PUBLISH_DEFAULT_HOSTNAME} DocumentRoot ${PUBLISH_DOCROOT} <IfModule mod_headers.c> Header always add X-Dispatcher ${DISP_ID} Header always add X-Vhost "publish" Header merge X-Frame-Options SAMEORIGIN "expr=%{resp:X-Frame-Options}!='SAMEORIGIN'" Header merge X-Content-Type-Options nosniff "expr=%{resp:X-Content-Type-Options}!='nosniff'" Header append Vary User-Agent env=!dont-vary </IfModule> ....... SNIP....... </VirtualHost>
Nachher:
<VirtualHost *:80> ServerName weretail-publish ServerAlias we-retail.adobe.com DocumentRoot ${PUBLISH_DOCROOT} <IfModule mod_headers.c> Header always add X-Dispatcher ${DISP_ID} Header always add X-Vhost "werteail-publish" Header merge X-Frame-Options SAMEORIGIN "expr=%{resp:X-Frame-Options}!='SAMEORIGIN'" Header merge X-Content-Type-Options nosniff "expr=%{resp:X-Content-Type-Options}!='nosniff'" Header append Vary User-Agent env=!dont-vary </IfModule> ....... SNIP....... </VirtualHost>
Jetzt haben wir unseren ServerName und ServerAlias aktualisiert, damit dies den neuen Domain-Namen entspricht, und auch andere Breadcrumb-Header sind aktualisiert. Lassen Sie uns nun unsere neue Datei aktivieren, damit Apache weiß, dass unsere neue Datei verwendet werden soll:
$ cd /etc/httpd/conf.d/enabled_vhosts/; ln -s ../available_vhosts/weretail_publish.vhost .
Jetzt weiß der Apache-Webserver, dass die Domain etwas ist, für das er Traffic liefern soll, aber wir müssen dem Dispatcher-Modul noch mitteilen, dass es einen neuen Domain-Namen zu beachten hat. Zunächst erstellen wir eine neue Datei *_vhost.any /etc/httpd/conf.dispatcher.d/vhosts/weretail_vhosts.any und fügen in diese Datei den Domain-Namen ein, der berücksichtigt werden soll:
"we-retail.adobe.com"
Jetzt müssen wir eine neue Farm-Datei erstellen, die unsere neue vhost-Eintragsdatei verwendet. Als Erstes kopieren wir eine starke Startdatei in unsere neue Datei.
$ cp /etc/httpd/conf.dispatcher.d/available_farms/999_ams_publish_farm.any /etc/httpd/conf.dispatcher.d/available_farms/400_weretail_publish_farm.any
Zeigen wir die Änderungen an, die wir an dieser Farm-Datei vornehmen müssen
Vorher:
/publishfarm { /virtualhosts { $include "/etc/httpd/conf.dispatcher.d/vhosts/ams_publish_vhosts.any" } ........SNIP......... }
Nachher:
/weretailpublishfarm { /virtualhosts { $include "/etc/httpd/conf.dispatcher.d/vhosts/weretail_publish_vhosts.any" } ........SNIP......... }
Jetzt haben wir den Farm-Namen und das von ihm verwendete Include im Abschnitt /virtualhosts der Farm-Konfiguration aktualisiert. Wir müssen diese neue Farm-Datei aktivieren, damit sie in der laufenden Konfiguration verwendet werden kann:
$ cd /etc/httpd/conf.dispatcher.d/enabled_farms/; ln -s ../available_farms/400_weretail_publish_farm.any .
Jetzt müssen wir nur noch den Webserver-Service neu laden und unsere neue Domain verwenden!
Beachten Sie, dass wir nur die Teile geändert haben, die wir ändern mussten, und die vorhandenen Includes und den Code, der in den Basiskonfigurationsdateien vorhanden war, genutzt haben. Wir müssen nur auf das Element eingehen, das wir ändern müssen. Das erleichtert die Sache sehr und ermöglicht uns, weniger Code zu pflegen