Uitleg van configuratiebestanden | AEM
Beschrijving description
Omgeving
Experience Manager
Probleem/symptomen
Dit document wordt uitgesplitst en legt alle configuratiebestanden uit die zijn geïmplementeerd in een standaard ingebouwde Dispatcher-server die is ingericht in Adobe Managed Services. Het gebruik ervan, de naamgevingsconventie, enz.
noemend Overeenkomst
Apache Webserver geeft eigenlijk niet om wat de bestandsextensie van een bestand is wanneer de bestandsextensie wordt toegewezen aan een include-instructie of een optionele instructie wordt opgenomen. U kunt de namen van de bestanden correct benoemen, zodat conflicten en verwarring worden voorkomen. De namen die worden gebruikt, beschrijven het bereik van waar het bestand wordt toegepast, waardoor het leven eenvoudiger wordt. Als alles .conf wordt genoemd wordt dit echt verwarrend. Gebruik geen bestanden en extensies met een slechte naam.
Hieronder volgt een lijst met de verschillende aangepaste bestandsextensies en naamgevingsconventies die worden gebruikt in een standaard Dispatcher met AMS-configuratie.
Dossiers bevat in conf.d/
<
FILENAME >
.conf<
FILENAME >
.vhostStaged: /etc/httpd/conf.d/available_vhosts/
Actief:
/etc/httpd/conf.d/enabled_vhosts/
*Nota: .vhost de dossiers moeten niet in de enabled_vhosts omslag maar gebruiksmunts aan een relatieve weg aan het available_vhosts/.vhost- dossier
worden gekopieerd
<
VirtualHosts >
vermeldingen die overeenkomen met hostnamen en toestaan dat Apache elk domeinverkeer met verschillende regels behandelt. Van het .vhost-bestand, andere bestanden, zoals herschrijven, whitelisting, enz. is opgenomen.<
FILENAME >
_rewrite.rules*_rewrite.rules
bestanden slaan mod_rewrite
-regels op die expliciet door een hostbestand moeten worden opgenomen en verbruikt<
FILENAME >
_whitelist.rulesDossiers bevat in conf.modules.d/
<
BESTANDSNAAM >
.any<
FILENAME >
_farm.anyStaged
:
/etc/httpd/conf.dispatcher.d/available_farm/
Actief
:
/etc/httpd/conf.dispatcher.d/enabled_farm/
*Nota: deze landbouwbedrijfdossiers moeten niet in de enabled_farm omslag maar gebruiks symlinks aan een relatieve weg aan beschikbaar_farm/ _farm.any- dossier
worden gekopieerd
het auto-omvat hen door naam van het dispatcher.any- dossier.
de landbouwbedrijfdossiers van de Basislijn beginnen met 000 om ervoor te zorgen zij eerst worden geladen.
de landbouwbedrijfdossiers van de Douane zouden na door hun aantalregeling bij 100_ moeten worden geladen om behoorlijk te verzekeren omvatten gedrag.
<
FILENAME >
_filters.any<
FILENAME >
_vhosts.any<
FILENAME >
_cache.any<
FILENAME >
_invalidate_allowed.any<
FILENAME >
_clientheaders.any<
FILENAME >
_renders.anyVermijden Problemen
Wanneer u de naamgevingsconventie volgt, vermijdt u enkele tamelijk eenvoudige fouten die rampzalige resultaten kunnen opleveren. Laten we een paar voorbeelden noemen.
Voorbeeld van het Probleem
Als plaatsvoorbeeld voor ExampleCo worden twee configuratiedossiers gecreeerd door de ontwikkelaars van de configuraties van Dispatcher.
/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]
POTENTIËLE GEVAAR
A. De bestandsnamen zijn gelijk.
Als het vhost-bestand per ongeluk in de map rewrites wordt geplaatst, wordt het herschreven-bestand in de map vhosts geplaatst. Het lijkt erop dat het bestand correct is geïmplementeerd, maar Apache geeft een fout weer en het probleem is niet direct zichtbaar.
hoe wordt dit typisch een kwestie?
Als de twee bestanden naar dezelfde locatie worden gedownload, kunnen ze zichzelf overschrijven of ze van elkaar onderscheiden, waardoor het implementatieproces een nachtmerrie wordt.
B. De bestandsextensies zijn hetzelfde en worden automatisch ingesloten
De bestandsextensies zijn gelijk en gebruiken een automatisch opgenomen extensie die in Apache automatisch .conf-bestanden bevat in veel van de standaardmappen.
hoe dit typisch een kwestie wordt?
Als het hostbestand met de extensie .conf in de map /etc/httpd/conf.d/ wordt geplaatst, wordt het in Apache geladen in het geheugen. Dit is normaal gesproken OK, maar als het bestand met herschrijfregels met de extensie .conf in de map /etc/httpd/conf.d/
wordt geplaatst, wordt het automatisch opgenomen en wordt het globaal toegepast, wat leidt tot verwarring en ongewenste resultaten.
Resolutie resolution
Geef de bestanden een naam die is gebaseerd op wat ze doen en veilig buiten de naamruimte van regels voor automatisch opnemen.
- Als het een virtueel hostbestand is, geeft dit de naam
.vhost
als extensie. - Als het een rewrite-regelbestand is, geeft u dit bestand de naam
<site>_rewrite.rules
als achtervoegsel en extensie. Deze naamgevingsconventie maakt duidelijk voor welke site de conventie is bedoeld en of het een set herschrijfregels is. - Als het een IP-bestand met whitelist-regels betreft, geeft u dit bestand de naam
<description>_whitelist.rules
als achtervoegsel en extensie. Deze naamgevingsconventie geeft een beschrijving van wat het is en of het een set IP-overeenkomende regels is.
Als u deze naamgevingsconventies gebruikt, ontstaan er geen problemen als een bestand wordt verplaatst naar een map voor automatisch opnemen die er niet bij hoort.
Als u bijvoorbeeld een bestand met de naam .rules, .any of .vhost in de map auto-include van /etc/httpd/conf.d/
plaatst, heeft dat geen effect.
Als een verzoek van de plaatsingsverandering please deploy exampleco_rewrite.rules to production dispatchers
zegt kan de persoon die de veranderingen opstelt reeds weten dat zij geen nieuwe plaats toevoegen; zij werken enkel herschrijven regels bij zoals vermeld door filename.
omvat Orde
Wanneer het uitbreiden van functionaliteit en configuraties in Apache Webserver die op Onderneming Linux wordt geïnstalleerd, hebt u sommige belangrijke orden omvatten u zult willen begrijpen.
A. inbegrepen Basislijn Apache
Het binaire bestand Apache begint met httpd.conf
, dat een includeoptional
naar de mappen conf.d/*.conf
en conf.modules.d/*.conf
uitvoert.
Zoals in het diagram boven het httpd binaire getal wordt getoond, zoekt het httpd.conf
dossier slechts als het configuratiedossier. Dat bestand bevat de volgende instructies:
Include conf.modules.d/*.conf
IncludeOptional conf.d/*.conf
B. Hoogste Niveau van AMS omvat
Toen wij onze norm toepasten, voegden wij enkele extra dossiertypes en van onze toe.
Hier zijn de basislijnmappen van AMS en de bovenste include-bestanden op het niveau
Aan de hand van de basislijn van Apache laten we zien hoe AMS aanvullende mappen en include-bestanden op hoofdniveau heeft gemaakt voor conf.d
-mappen en specifieke mappen die zijn genest onder /etc/httpd/conf.dispatcher.d/
Wanneer Apache wordt geladen, wordt het in /etc/httpd/conf.modules.d/02-dispatcher.conf
geschoven en wordt het binaire bestand /etc/httpd/modules/mod_dispatcher.so
in de actieve staat opgenomen.
LoadModule dispatcher_module modules/mod_dispatcher.so
Als u de module wilt gebruiken in onze </VirtualHost>
, zet u een configuratiebestand neer in /etc/httpd/conf.d/
named dispatcher_vhost.conf
en in dit bestand ziet u hoe u de basisparameters die nodig zijn om de module te laten werken, instelt:
<IfModule disp_apache2.c>
DispatcherConfig conf.dispatcher.d /dispatcher .any
...SNIP...
</IfModule>
Zoals u hierboven kunt zien, bevat dit ook de dispatcher op hoofdniveau. Elk bestand dat in onze Dispatcher-module wordt gebruikt om de configuratiebestanden van de module op te halen uit /etc/httpd/conf.dispatcher.d/dispatcher.any
Let op de inhoud van dit bestand:
/farms {
$include "enabled_farms/*_farm.any"
}
Dispatcher.any-bestanden op hoofdniveau bevatten alle ingeschakelde landbouwhuisbestanden die in /etc/httpd/conf.dispatcher.d/enabled_farms/
met de bestandsnaam <FILENAME>_farm.any
leven, die onze standaardnaamgevingsconventie volgt.
Later in het eerder vermelde dispatcher_vhost.conf
bestand voeren we ook een include-instructie uit om elk ingeschakeld virtueel hostbestand in te schakelen dat in /etc/httpd/conf.d/enabled_vhosts/
met de bestandsnaam van <FILENAME>.vhost
woont. Deze instructie volgt de standaardnaamgevingsconventie.
IncludeOptional /etc/httpd/conf.d/enabled_vhosts/*.vhost
In elk van onze .vhost-bestanden ziet u dat de verzendermodule is geïnitialiseerd als een standaardbestandshandler voor een map. Hier volgt een voorbeeld van een .vhost-bestand met de syntaxis:
<VirtualHost *:80>
ServerName "weretail"
ServerAlias www.weretail.com weretail.com
<Directory />
<IfModule disp_apache2.c>
....SNIP....
SetHandler dispatcher-handler
</IfModule>
....SNIP....
</Directory>
....SNIP....
</VirtualHost>
Nadat het hoogste niveau omvat oplossen hebben zij andere sub omvat die het vermelden waard zijn. Hier is een diagram op hoog niveau op hoe de landbouwbedrijven en de gastheren dossiers andere subelementen omvatten
C. de Virtuele Gastheer van AMS omvat
Wanneer .vhost-bestanden uit de map /etc/httpd/conf.d/availabled_vhosts/
worden gesymkoppeld in de map /etc/httpd/conf.d/enabled_vhosts/
, worden deze gebruikt in de actieve configuratie.
De .vhost-bestanden hebben subinclude-bestanden op basis van gemeenschappelijke items die we hebben gevonden. Dingen als variabelen, whitelisten en herschrijven van regels.
Het .vhost-bestand bevat instructies voor elk bestand op basis van de locatie waar deze in het .vhost-bestand moeten worden opgenomen. Hier volgt een voorbeeld van een syntaxis van een .vhost-bestand als een goede referentie:
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
Zoals u in het bovenstaande voorbeeld kunt zien, is er een include-bestand voor de variabelen die nodig zijn in dit configuratiebestand die later worden gebruikt.
In het bestand /etc/httpd/conf.d/variables/weretail.vars
kunnen we zien welke variabelen zijn gedefinieerd:
Define MAIN_DOMAIN dev.weretail.com
U kunt ook een regel zien die een lijst bevat met whitelist.rules-bestanden die bepalen wie deze inhoud kan bekijken op basis van verschillende whitelistcriteria. Hiermee kunt u de inhoud van een van de bestanden in de witte lijst bekijken /etc/httpd/conf.d/whitelists/weretail_mainoffice_whitelist.rules
:
<RequireAny>
Require ip 192.150.16.0/23
</RequireAny>
U kunt ook een regel zien die een set herschrijfregels bevat. Bekijk de inhoud van het bestand weretail_rewrite.rules
:
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. het Farm van AMS omvat
Wanneer een <FILENAME>_farm.any
-bestand uit de map /etc/httpd/conf.dispatcher.d/available_farms/
wordt gesymboliseerd in de map /etc/httpd/conf.dispatcher.d/enabled_farms/
, wordt het gebruikt in de actieve configuratie.
De landbouwbedrijfdossiers hebben sub omvat gebaseerd op hoogste niveausecties van het landbouwbedrijfals geheime voorgeheugen, klantheaders, filters, teruggeeft, en gastheren.
De <FILENAME>_farm.any
-bestanden bevatten instructies voor elk bestand op basis van de locatie waar de bestanden in het landbouwbedrijfsbestand moeten worden opgenomen. Hier volgt een voorbeeld van de syntaxis van een <FILENAME>_farm.any
-bestand als een goede referentie:
/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....
}
}
Aangezien u elke sectie voor het weretail landbouwbedrijf in plaats van het hebben van alle syntaxis nodig kunt zien het in plaats daarvan het gebruiken omvat verklaring.
Bekijk de syntaxis van een aantal van deze voorbeelden om te zien hoe elke subinclude eruit zou zien /etc/httpd/conf.dispatcher.d/vhosts/weretail_publish_vhosts.any
:
"brand1.weretail.com"
"brand2.weretail.com"
"www.weretail.comf"
Aangezien u kunt zien is het een nieuwe lijn gescheiden lijst van domeinnamen die van dit landbouwbedrijf over anderen zou moeten teruggeven.
Kijk nu naar de /etc/httpd/conf.dispatcher.d/filters/weretail_search_filters.any
:
/400 { /type "allow" /method "GET" /path "/bin/weretail/lists/*" /extension "json" }
/401 { /type "allow" /method "POST" /path "/bin/weretail/search/" /extension "html" }