Schreibgeschützte bzw. unveränderliche Dateien in AMS
<- Zurück: Allgemeine Protokolle
Beschreibung
In diesem Dokument wird beschrieben, welche Dateien gesperrt sind und nicht geändert werden können und wie Sie die gewünschten Konfigurationseinstellungen vornehmen können.
Wenn AMS ein System bereitstellt, wird eine Basiskonfiguration eingeführt, die alle Bestandteile funktionsfähig und sicher macht. AMS möchte sicherstellen, dass diese Dinge als Grundlage für Funktionalität und Sicherheit erhalten bleiben. Dazu werden einige Dateien als schreibgeschützt und unveränderlich markiert, sodass sie nicht verändert werden können.
Das Layout hindert Sie jedoch nicht daran, ihr Verhalten zu ändern und erforderliche Änderungen zu überschreiben. Anstatt diese Dateien zu ändern, überlagern Sie dann Ihre eigene Datei, die das Original ersetzt.
So können Sie auch sicher sein, dass die Dispatcher bei Patches von AMS mit den neuesten Fehlerbehebungen und Sicherheitsverbesserungen Ihre Dateien nicht verändern. Dann können Sie weiterhin von den Verbesserungen profitieren und nur die gewünschten Änderungen übernehmen.
Wie im obigen Bild gezeigt, bedeuten unveränderliche Dateien nicht, dass Sie das Spiel nicht spielen können. Sie verhindern nur, dass Ihre Leistung beeinträchtigt wird, und halten Sie in der Spur. Diese Methode unterstützt die wichtigsten Funktionen:
- Anpassungen werden in ihren eigenen sicheren Bereichen vorgenommen
- Die Überlagerung benutzerdefinierter Änderungen entspricht den Überlagerungsmethoden in AEM
- Das Patchen von AMS-Konfigurationen kann ohne Ändern von Anpassungen durchgeführt werden
- Das Testen der Basisinstallation gegenüber angepassten Konfigurationen kann gleichzeitig durchgeführt werden, sodass sich feststellen lässt, ob die Probleme durch Anpassungen verursacht werden oder etwas Anderes. Welche Dateien?
Es folgt eine Liste von Dateien, die meist mit einem Dispatcher bereitgestellt werden:
/etc/httpd/
├── conf
│ ├── httpd.conf
│ └── magic
├── conf.d
│ ├── 000_init_ootb_vars.conf
│ ├── 001_init_ams_vars.conf
│ ├── README
│ ├── autoindex.conf
│ ├── available_vhosts
│ │ ├── 000_unhealthy_author.vhost
│ │ ├── 000_unhealthy_publish.vhost
│ │ ├── aem_author.vhost
│ │ ├── aem_flush.vhost
│ │ ├── aem_flush_author.vhost
│ │ ├── aem_health.vhost
│ │ ├── aem_publish.vhost
│ │ └── ams_lc.vhost
│ ├── dispatcher_vhost.conf
│ ├── enabled_vhosts
│ │ ├── aem_author.vhost -> ../available_vhosts/aem_author.vhost
│ │ ├── aem_flush.vhost -> ../available_vhosts/aem_flush.vhost
│ │ ├── aem_health.vhost -> /etc/httpd/conf.d/available_vhosts/aem_health.vhost
│ │ └── aem_publish.vhost -> ../available_vhosts/aem_publish.vhost
│ ├── logformat.conf
│ ├── mimetypes3d.conf
│ ├── remoteip.conf
│ ├── rewrites
│ │ ├── base_rewrite.rules
│ │ └── xforwarded_forcessl_rewrite.rules
│ ├── security.conf
│ ├── userdir.conf
│ ├── variables
│ │ ├── ams_default.vars
│ │ └── ootb.vars
│ ├── welcome.conf
│ └── 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 -> ../available_farms/000_ams_catchall_farm.any
│ │ ├── 001_ams_author_flush_farm.any -> ../available_farms/001_ams_author_flush_farm.any
│ │ ├── 001_ams_publish_flush_farm.any -> ../available_farms/001_ams_publish_flush_farm.any
│ │ ├── 002_ams_author_farm.any -> ../available_farms/002_ams_author_farm.any
│ │ └── 002_ams_publish_farm.any -> ../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
Im Folgenden finden Sie eine Beispielantwort mit unveränderlichen Dateien:
/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_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/available_vhosts/aem_flush_author.vhost Immutable
/etc/httpd/conf.d/available_vhosts/ams_lc.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/variables/ootb.vars 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.d/mimetypes3d.conf Immutable
/etc/httpd/conf.d/remoteip.conf Immutable
/etc/httpd/conf.d/000_init_ootb_vars.conf Immutable
/etc/httpd/conf.d/001_init_ams_vars.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_lc_renders.any Immutable
/etc/httpd/conf.dispatcher.d/renders/ams_publish_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
Vornehmen von Änderungen
Variablen
Variablen ermöglichen es Ihnen, funktionale Änderungen vorzunehmen, ohne die Konfigurationsdateien selbst zu ändern. Bestimmte Elemente der Konfiguration können durch Verändern der Variablenwerte angepasst werden. Hier ein Beispiel aus der Datei /etc/httpd/conf.d/dispatcher_vhost.conf
:
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
Sie sehen die Anweisung „DispatcherLogLevel“ mit einer Variablen von DISP_LOG_LEVEL
anstelle des normalen Werts. Oberhalb dieses Code-Abschnitts wird auch eine include-Anweisung für eine Variablendatei angezeigt. Als Nächstes schauen wir uns die Variablendatei /etc/httpd/conf.d/variables/ams_default.vars
an. Hier der Inhalt dieser Variablendatei:
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
Sie sehen oben, dass der aktuelle Wert der DISP_LOG_LEVEL
-Variablen info
ist. Dies kann angepasst werden, um den gewünschten number-Wert bzw. die gewünschte Ebene zu verfolgen oder zu debuggen. Die Steuerung der Protokollebene wird nun automatisch angepasst.
Überlagerungsmethode
Ein Verständnis der include-Dateien der obersten Ebene ist wichtig, da Sie für jegliche Anpassung bei diesen ansetzen. Zunächst ein einfaches Beispiel: Wir haben ein Szenario, in dem wir einen neuen Domain-Namen hinzufügen möchten, der auf diesen Dispatcher verweisen soll. Die Beispiel-Domain ist hierbei we-retail.adobe.com. Kopieren Sie zunächst eine vorhandene Konfigurationsdatei in eine neue, in der Änderungen hingefügt werden können:
$ cp /etc/httpd/conf.d/available_vhosts/aem_publish.vhost /etc/httpd/conf.d/available_vhosts/weretail_publish.vhost
Wir haben die vorhandene Datei „aem_publish.vhost“ kopiert, da sie bereits alles enthält, was wir für den Anfang brauchen. 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 sind ServerName
und ServerAlias
entsprechend der neuen Domain-Namen aktualisiert, ebenso andere Breadcrumb-Header. Lassen Sie uns nun unsere neue Datei aktivieren, sodass Apache sie entsprechend verwendet:
$ cd /etc/httpd/conf.d/enabled_vhosts/; ln -s ../available_vhosts/weretail_publish.vhost .
Der Apache-Webserver weiß nun, dass für die Domain Traffic bereitgestellt werden soll. Allerdings müssen wir das Dispatcher-Modul darüber informieren, dass ein neuer Domain-Name vorhanden ist, der berücksichtigt werden muss. Wir beginnen mit der Erstellung einer neuen *_vhost.any
-Datei /etc/httpd/conf.dispatcher.d/vhosts/weretail_vhosts.any
und fügen in dieser Datei den zu berücksichtigenden Domain-Namen ein:
"we-retail.adobe.com"
Nun müssen wir eine neue Farm-Datei erstellen, die unsere neue vhost-Eintragsdatei verwendet. Als Erstes kopieren wir dazu eine solide Startdatei in unsere eigene 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
Sehen wir uns jetzt 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.........
}
Nun haben wir den Farm-Namen und das darin verwendete include-Element 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 .
Nun laden wir einfach den Webserver-Dienst neu und nutzen unsere neue Domain.
Weiter -> Dispatcher-Konsistenzprüfung