Schreibgeschützte Dateien

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.

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.

Zeigt eine Bowling-Bahn mit einer Kugel, die die Bahn entlang rollt.  Auf den Ball zeigt ein Pfeil mit dem Wort „Sie“.  Die Bumper werden hochgefahren und haben die Wörter „unveränderliche Dateien“ darüber stehen.

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 &quot;publish&quot; 
   Header merge X-Frame-Options SAMEORIGIN &quot;expr=%{resp:X-Frame-Options}!='SAMEORIGIN'&quot; 
   Header merge X-Content-Type-Options nosniff &quot;expr=%{resp:X-Content-Type-Options}!='nosniff'&quot; 
  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 &quot;werteail-publish&quot; 
   Header merge X-Frame-Options SAMEORIGIN &quot;expr=%{resp:X-Frame-Options}!='SAMEORIGIN'&quot; 
   Header merge X-Content-Type-Options nosniff &quot;expr=%{resp:X-Content-Type-Options}!='nosniff'&quot; 
  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:

&quot;we-retail.adobe.com&quot;

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 &quot;/etc/httpd/conf.dispatcher.d/vhosts/ams_publish_vhosts.any&quot; 
 } 
........SNIP.........  
}

Nachher:

/weretailpublishfarm {   
 /virtualhosts { 
  $include &quot;/etc/httpd/conf.dispatcher.d/vhosts/weretail_publish_vhosts.any&quot; 
 } 
........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!

Hinweis:

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

 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