|
Wie man die Hauptkonfigurationsdatei von Buildout verwaltet
buildout.cfg ist die wichtigste Datei in Ihrer neuen Buildout-Umgebung. Hier ist, wie es aussieht: [buildout] parts = plone zope2 productdistros instance zopepy # Add additional egg download sources here. dist.plone.org contains archives # of Plone packages. find-links = http://dist.plone.org http://download.zope.org/ppix/ http://download.zope.org/distribution/ http://effbot.org/downloads # Add additional eggs here # elementtree is required by Plone eggs = elementtree # Reference any eggs you are developing here, one per line # e.g.: develop = src/my.package develop = [plone] recipe = plone.recipe.plone [zope2] recipe = plone.recipe.zope2install url = ${plone:zope2-url} # Use this section to download additional old-style products. # List any number of URLs for product tarballs under URLs (separate # with whitespace, or break over several lines, with subsequent lines # indented). If any archives contain several products inside a top-level # directory, list the archive file name (i.e. the last part of the URL, # normally with a .tar.gz suffix or similar) under 'nested-packages'. # If any archives extract to a product directory with a version suffix, list # the archive name under 'version-suffix-packages'. [productdistros] recipe = plone.recipe.distros urls = nested-packages = version-suffix-packages = [instance] recipe = plone.recipe.zope2instance zope2-location = ${zope2:location} user = admin:admin http-address = 8080 debug-mode = on verbose-security = on # If you want Zope to know about any additional eggs, list them here. # This should include any development eggs you listed in develop-eggs above, # e.g. eggs = ${buildout:eggs} ${plone:eggs} my.package eggs = ${buildout:eggs} ${plone:eggs} # If you want to register ZCML slugs for any packages, list them here. # e.g. zcml = my.package my.other.package zcml = products = ${buildout:directory}/products ${productdistros:location} ${plone:products} [zopepy] recipe = zc.recipe.egg eggs = ${instance:eggs} interpreter = zopepy extra-paths = ${zope2:location}/lib/python scripts = zopepy Lassen Sie uns durch diese Datei Schritt für Schritt durchgehen: Der Hauptabschnitt [buildout] Der Abschnitt [buildout] ist der Startpunkt für die Datei. Er listet eine Anzahl von "Teilen (parts)" auf, die in separaten Abschnitten später in der Datei konfiguriert werden. Jeder Teil (part) hat eine zugehörige recipe (Rezeptur), die der Name eines Eies ist, das weiß, wie die bestimmte Aufgabe zu erledigen ist, z.B. Zope bilden oder eine Zope-Instanz erstellen. Ein recipe benötigt normalerweise ein paar Konfigurationsoptionen. Unsere globalen Einstellungen sind wie folgt: [buildout] parts = plone zope2 productdistros instance zopepy find-links = http://dist.plone.org http://download.zope.org/ppix/ http://download.zope.org/distribution/ http://effbot.org/downloads eggs = elementtree develop = Dies bestimmt, dass damit die Teile (parts) plone, zope2, productdistros, instance und zopepy laufen werden. Dann teilen wir Buildout mit, dass es eine Anzahl von URLs durchsuchen kann, wenn es nach Eiern (eggs) sucht, um sie herunterzuladen. Außerdem wird es immer den Chees Shop durchsuchen. Als nächstes können wir jegliche Eier (eggs) auflisten, die Buildout für uns herunterladen und installieren soll. Die mag Versionsvorgaben einschließen. Zum Beispiel, wenn Sie sqlalchemy 0.3, wollen, aber nicht 0.4, können Sie auflisten; eggs = elementtree sqlalchemy>=0.3,<0.4dev Schließlich können wir Entwicklungs-Eier (development eggs) auflisten durch Bestimmen eines Verzeichnisses, in dem das Ei (egg) im Quellformat extrahiert ist. Zum Beispiel: eggs = elementtree my.package develop = src/my.package Dies nimmt an, dass es ein Ei (egg) mit dem Name my.package in dem Verzeichnis src/ gibt. Wir werden etwas später in diesem Tuturial lernen, wie solche Eier (eggs) erstellt werden. Beachten Sie, wie wir auch my.package als eine aktuelle Ei-Abhängigkeit (egg dependency) auflisten müssen: Entwicklungs-Eier werden nicht automatisch zum "working set" von Eiern hinzugefügt, die für Zope installiert sind. Der Abschnitt [plone] Dies ist sehr einfach - es benutzt einfach plone.recipe.plone, um Plone's Produkte und Eier (eggs) herunterzuladen. [plone] recipe = plone.recipe.plone Es wird das neueste verfügbare Release verwenden. Versionsnummern für plone.recipe.plone korrespondieren mit den Nummern für Plone selbst. Deshalb können Sie, um sicherzugehen, dass Sie immer ein 3.0.x-Release und nicht ein 3.1 bekommen, folgendes tun: [plone] recipe = plone.recipe.plone>=3.0,<3.1dev Wenn die Rezeptur (Recipe) läuft, werden Plones Produte in parts/plone installiert. Die Eier (eggs) sind nun über die Buildout-Variable ${plone:eggs}, verfügbar gemacht, die wir später in dem Abschnitt [instance] referenzieren werden und die URL einer "bekannt guten" Version von Zope ist in der Variable ${plone:zope2-url} verfügbar. Der Abschnitt [zope2] Dieser Teil bildet Zope 2 unter Verwendung von plone.recipe.zope2install. Falls Sie eine existierende Zope-Installation bestimmen, werden Sie diesen Teil nicht haben. Andernfalls wird er wie dies aussehen: [zope2] recipe = plone.recipe.zope2install url = ${plone:zope2-url} Hier referenzieren wir den Download-Ort für Zope, wie ausgesendet von dem Teil [plone]. Dies gewährleistet, dass wir immer die empfohlene Version von Zope bekommen. Sie können stattdessen eine Download-URL manuell bestimmen, falls Sie eine andere Version von Zope benutzen wollen. Wenn das Recipe läuft, wird Zope 2 in parts/zope2 installiert. Das Zope-Software-Heimatverzeichnis wird parts/zope2/lib/python. Der Abschnitt [productdistros] Dies verwendet die Rezeptur plone.recipe.distros , die in der Lage ist, Distributionen (Archive) von Zope-2-Stil-Produkten herunterzuladen und sie für Zope verfügbar zu machen. Es ist zu Beginn leer mit: [productdistros] recipe = plone.recipe.distros urls = nested-packages = version-suffix-packages = Allerdings können Sie jede Anzahl von Downloads auflisten. Die Rezeptur (recipe) ist auch in der Lage, Archive, die ein einzelnes Verzeichnis auf der obersten Ebene enthalten, das ein Bündel von aktuellen Produktverzeichnissen enthält (nested-packages), oder Pakete, die eine Versionsnummer im Verzeichnisnamen haben und deshalb umbenannt werden müssen, um das aktuelle Produktverzeichnis zu erhalten (version-suffix-packages), zu behandeln. Als Beispiel steht hier, wie Sie CacheFu 1.1 herunterladen können: [productdistros] recipe = plone.recipe.distros urls = http://plone.org/products/cachefu/releases/1.1/CacheFu-1.1.tgz nested-packages = CacheFu-1.1.tgz version-suffix-packages = Sie können mehrere Downloads auf separaten Zeilen bestimmen. Wenn das Recipe läuft, befinden sich die Produktverzeichnisse für die heruntergeladenen Produkte in parts/productdistros. Der Abschnitt [instance] Der Instanzabschnitt bringt sie alle zusammen: Er konfiguriert eine Zope-Instanz unter Verwenden des Skripts plone.recipe.zope2instance . Hier ist, wie er ausschaut: [instance] recipe = plone.recipe.zope2instance zope2-location = ${zope2:location} user = admin:admin http-address = 8080 debug-mode = on verbose-security = on eggs = ${buildout:eggs} ${plone:eggs} zcml = products = ${buildout:directory}/products ${productdistros:location} ${plone:products} Hier referenzieren wir die Zope-2-Installation von dem Teil [zope2] - falls Sie eine Speicherstelle selbst bestimmten, als Sie den Buildout erstellen, werden Sie denjenigen hier sehen. Dann bestimmten wir den anfänglichen Administrator-Benutzernamen und sein Passwort sowie den Port, an den Zope gebunden wird. Wir aktivieren auch den Debugmodus und wortreiche Sicherheit. Diese Optionen werden verwendet, um eine passende Datei zope.conf für diese Instanz zu erstellen. Schauen Sie auf die Rezepturseite im Cheese Shop für weitere Details bezüglich der verfügbaren Optionen. Als nächstes bestimmen wir, welche Eier (eggs) für Zope verfügbar gemacht werden. Dies referenziert die "globalen" Eier (eggs) aus der Sektion [buildout] sowie die von Plone bestimmten Eier (eggs). Sie können zusätzliche Eier (eggs) hier hinzufügen, obwohl es im allgemeinen einfacher ist, diese oben in der Datei zu bestimmen, so dass in das Working set ${buildout:eggs} eingebunden werden. Wie vorher erläutert, werden Zope-3-configure.zcml-Dateien nicht automatisch für Eier (eggs) oder Pakete geladen, die nicht im Products-Namensraum sind. Um ZCML-Dateien für reguläre Pakete zu laden, können wir Buildout dazu veranlassen, einen ZCML-Slug durch Auflisten des Paketes unter der zcml -Option zu erstellen: zcml = my.package my.package-overrides Dies nimmt an, dass my.package zuvor im Buildout referenziert wurde. Dies wird sowohl die Hauptdatei configure.zcml als auch die Datei overrides.zcml aus diesem Paket laden. Schließlich listen wir die verschiedenen Verzeichnisse auf, die Zope-2-Stil-Produkte - ähnlich dem Verzeichnis Products/ in einer traditionellen Instanz - enthalten. Beachten Sie, dass das Verzeichnis products/ in dem Haup-Buildout-Verzeichnis zuerst genannt wird, gefolgt von den Produkten, die mit dem Teil [productdistros] heruntergeladen wurden, gefolgt wieder von den Produkten, die vom Teil [plone] heruntergeladen wurden. Dies bedeutet, dass, auch wenn Plone mit einem Produkt ausgeliefert wird, Sie es überschreiben können (z.B. mit einem neueren Produkt), indem Sie ein Produkt mit demselben Namen in das Verzeichnis products/ auf der obersten Ebene packen. Wenn die Rezeptur (recipe) läuft, wird das Heimatverzeichnis der Zope-Instanz parts/instance sein und ein Kontrollskript in ./bin/instance erstellt. Der Abschnitt [zopepy] Der letzte Abschnitt erstellt einen Python-Interpreter, der alle Eier (eggs) und Pakete hat (aber nicht die Zope-2-Stil-Produkte), die Zope während der Inbetriebsetzung haben würde. Dies kann für Testzwecke nützlich sein. [zopepy] recipe = zc.recipe.egg eggs = ${instance:eggs} interpreter = zopepy extra-paths = ${zope2:location}/lib/python scripts = zopepy Hier kopieren wir die Eier (eggs) von der Sektion [instance] und schließen das Heimatverzeichnis der Zope-Instanz in den Pythonpfad ein. Wenn die Rezeptur (recipe) läuft, wird das Skript in ./bin/zopepy erstellt.
|