Multi-Site-Konfiguration
Üblicherweise wird in einem zc.recipe.macro-Abschnitt ein Macro mit den Parametern dieses Abschnitts aufgerufen. Dies läßt sich anschaulich an einer Apache-Konfiguration zeigen.
Apache-Konfiguration
[buildout]
parts =
…
apache
[apache]
recipe = zc.recipe.macro
macro = apache-macro
result-recipe=collective.recipe.template
targets =
my-apache:mysite-parameters
Im folgenden werden dann die Abschnitte [apache-macro] und [mysite-parameters] definiert:
[apache-macro]
domain=$${:domain}
host=$${:host}
port=$${:port}
input = ${buildout:directory}/template/apache-vhost.in
output = ${buildout:parts-directory}/$${:__name__}
[mysite-parameters]
domain=mysite.org
host=83.223.91.163
port=8080
Die Datei templates/apache-vhost.in sieht z.B. so aus:
${host}
${port}
${domain}
Das Ergebnis ist dann:
[apache] recipe = zc.recipe.macro:empty result-sections = my-apache [my-apache] recipe = collective.recipe.template domain = mysite.org host = 83.223.91.163 input = /home/veit/myproject/template/apache-vhost.in output = /home/veit/myproject/parts/my-apache port = 8080
Das Rezept zc.recipe.macro ändert sich zu zc.recipe.macro:empty, hat jedoch keine Wirkung mehr. Dennoch muss der Abschnitt vorhanden sein, da er in [buildout] als Abschnitt angegeben wurde.
Und parts/my-apache sieht schließlich so aus:
83.223.91.163 8080 mysite.org
Jede weitere Site kann dann einfach folgendermaßen eingetragen werden:
[apache]
…
targets =
…
vs-apache:vs-parameters
…
[vs-parameters]
domain=veit-schiele.de
host=83.223.91.163
port=8090
awstats-Konfiguration
Analog kann mit tc.recipe.macro auch awstats konfiguriert werden:
[buildout]
parts =
…
mysite-awstats
[awstats]
recipe = zc.recipe.macro
macro = awstats-macro
result-recipe=collective.recipe.template
targets =
mysite-awstats:mysite-parameters
vs-awstats:vs-parameters
[awstats-macro]
domain=$${:domain}
host=$${:host}
port=$${:port}
input = ${buildout:directory}/template/awstats-conf.in
output = ${buildout:parts-directory}/$${:__name__}
Die Datei templates/awstats-conf.in sieht z.B. so aus:
${host}
${port}
${domain}
Das Ergebnis ist dann:
[buildout]
parts =
…
awstats
mysite-awstats
vs-awstats
…
[awstats]
recipe = zc.recipe.macro:empty
result-sections =
mysite-awstats
vs-awstats
[mysite-awstats]
domain = mysite.org
host = 83.223.91.163
input = /home/veit/myproject/template/awstats-conf.in
output = /home/veit/myproject/parts/mysite-awstats
port = 8080
recipe = collective.recipe.template
[vs-awstats]
domain = veit-schiele.de
host = 83.223.91.163
input = /home/veit/myproject/template/awstats-conf.in
output = /home/veit/myproject/parts/vs-awstats
port = 8090
recipe = collective.recipe.template
Und parts/my-awstats sieht schließlich so aus:
83.223.91.163 8080 mysite.org
