Für eilige Leser
Sofern auf Ihrem Rechner eine übliche Python-Umgebung installiert ist, wechseln Sie in das Scripts-Verzeichnis und rufen einfach easy_install auf.Anschliessend können Sie mit mkzopeinstance eine Zope-Instanz erzeugen, welche die Laufzeit-Umgebung für ZMS bereit stellt:
D:\dev\virtpy\Scripts>easy_install ZMS3
D:\dev\virtpy\Scripts>mkzopeinstance
Installation im Detail
WICHTIGER HINWEIS: Beachten Sie auch die Tipps unter "Quickfixes" weiter unten Bei der Zope-Installationen können Inkompatibilitäten bestimmter Modul-Versionen den regelrechten Ablauf stören; achten Sie ggf. auch die unten genannten Versions-Nummern.
ZMS ist eine Python-Software; daher muss zunächst Python installiert werden. Empfohlen werden die Versionen 2.6 oder 2.7. Der Python-Installer existiert für alle gängigen Betriebssysteme. Voraussetzung für die ZMS-Installation ist das Vorhandensein einer typischen Python-Umgebung; diese wird in drei Schritten erzeugt:
- Python installieren
- Setuptools installieren: Das Python Modul setuptools stellt u.a. easy_install bereit, damit man Python Packete direkt aus dem Web installieren
- Virtualenv erzeugen: das Python Modul virtualenv erzeugt eine gespiegelte zusätzliche "virtuelle" Python.Umgebung, welche auf der primären Python-Installation basiert. In dieser virtuelle Umgebung können die eigenen Python Anwendungen laufen. Die virtuelle Umgebung kann jederzeit gelöscht werden, ohne dass die primäre Python-Installation davon betroffen ist.
Dann wird in der virtuellen Umgebung per easy_install Das Python-Package Products.ZMS installiert; das Package zieht aufgrund definierter Abhänigkeiten automatisch alle erforderlichen Python-Resourcen (in erster Linie Zope-Komponenten). Abschliessend kann dann eine Zope-Instanz erzeugt werden, welche den Applications-Server für ZMS bereitstellt.
Im folgenden wird die ZMS-Installation beispielhaft auf einem Windows-System erläutert:
1. Installation Python (am Beispiel Python 2.6 für Win32)
Für Windows (und alle anderen Betriebssysteme) existiert ein ausführbarer Python-Installer, den man sich von der Python-Website herunterladen kann:
Website:
http://www.python.org/download/releases/2.6.6/
Download:
http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi
Python Installation per msi-File
2. Installation Python-Setuptools
Python Setuptools stellt betriebssystem-spezifische Hilfsprogramme für die Installation weiterer Python-Pakete wie z.B. easy_install zur Verfügung. Diese Programme landen im Scripts-Unterordner des Python-Ordners und können von dort gestartet werden.
Website:
http://pypi.python.org/pypi/setuptools/
Donwload:
http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11.win32-py2.6.exe
Weitere Binsaries:
http://www.lfd.uci.edu/~gohlke/pythonlibs/#setuptools
Die Python-Setuptools werden per exe-File installiert. Der Installer erkennt den Python-Path in der Windows-Registry und platziert die ausführbaren-Programmdateien im Scripts-Verzeichnis der Python-Installation
3. Installation virtualenv
Für die Installation zusätzlicher Python-Pakete wie z.B. virtualenv wird das Programm "easy_install" verwendet; dieses ruft man in der Windows-Konsole "cmd" auf.
a. Per Windows-Konsole ins Script-Verzeichnis wechseln:
cd D:\Programme\Python26\Scripts
b. virtualenv istallieren:
D:\Programme\Python26\Scripts\easy_install virtualenv
TIPP: Hinter einem Proxy muss auf der Konsole zunächst die Umgebungsvariable http_proxy gesetzt werden, z.B.:
set http_proxy=http://proxy:8080/
4. Erzeugen einer virtuellen Python-Umgebung
Das virtualenv-Paket kann eine Kopie der oben installierten Python-Umgebung erzeugen. Es empfiehlt sich prinzipiell die eigenen Python-Anwendungen in einer solchen virtuellen Umgebung laufen zu lassen. Auf diese Weise kann ZMS (samt eventuell erforderlicher Zusatzpakete wie z.B. Datenbank-Adapter) wieder sehr leicht vom Rechner entfernt werden, ohne dass die primäre Python-Installation davon betroffen ist. Die Python-Installation steht nach Löschen der virtuellen Umgebung weiterhin für andere Nutzungsszenarien bzw. andere virtuelle Umgebungen zur Verfügung.
virtualenv.exe ausführen und virtuelle Umgebung in einem frei gewählten Zielverzeichnis (hier D:\dev\virtpy) erzeugen:
D:\Programme\Python26\Scripts\virtualenv --no-site-packages D:\dev\virtpy
Erzeugung einer virtuellen Python-Umgebung
5. ZMS-Installation und Erzeugung einer Zope-Instanz
Der ZMS-Installer wird nun in der neuen virtuellen Umgebung augeführt; dazu wird das Scripts-Verzeichnis der soeben angelegten Umgebung gewechselt:
cd D:\dev\virtpy\Scripts\
und schliesslich per easy_install das ZMS-Paket installiert
easy_install ZMS3
Das ZMS-Paket installiert automatisch alle erforderlichen Zusatzpakete (insbesondere Zope). Da ZMS den Zope-Application-Server verwendet, muss anschliessend eine Zope-Instance erzeugt werden. Das dafür erforderliche Script mkzopeinstance befindet sich nun ebenfalls im Scripts-Verzeichnis:
mkzopeinstance.exe
Nachdem das Script auf der Konsole aufgerufen wird, gibt man das Zielverzeichnis für die Zope-Instanz an und die Angaben für den Root-User: mkzopeinstance erzeugt alle Ressourcen für eine Zope-Umgebung samt start-Script.
Die Installation von ZMS zieht automatisch alle erforderlichen Python-Pakete aus dem Web-Verzeichnis PyPI: easy_install ZMS3
Erzeugung einer Zope-Instanz (hier "myzms") in einem beliebigen Zielverzeichnis (hier D:\data\zope\instance\)
6. ZMS im Web-GUI von Zope initialisieren
Nach dem Starten von Zope durch Aufruf des start-Scripts auf dem bin-Folder der Zope-Instanz (1), kann man über den Webbrowser (2) Port 8080 die Web-Masken betrachten und ZMS als "Product" initialisieren (3). Damit steht die webbasierte Publishing-Umgebung bereit zur Content-Produktion.
7. Links
Products.ZMS 2.13.4
Aktuelle ZMS-Version als installierbares Python Egg
Dokumentation
This book is designed to introduce you to Zope2, an open-source web application server.
Dokumentation
Easy Install is a python module (easy_install) bundled with setuptools that lets you automatically download, build, install, and manage Python packages.
8. Bekannte Probleme und deren Korrektur
Unter Windows fehlt in der Regel eine deartigen Entwicklungsumgebung bzw. ein Compiler für das automatische Erstellen von Binär-Code. Daher ist die Zope-Installation unter Windows angewiesen auf das vollständige Vorhandensein vorproduzierter Binaries. Da Python- Entwickler gerne mit Linux arbeiten, kommen die Windows-Binaries leider erst immer mit einiger Verzögerung heraus. Also muss man bei der Installation unter Windows zuerst genau diejenigen Zope-Komponenten installieren, bei denen die aktuellste Version noch keine Binaries hat bzw. diejenige Version, welche sicher die Windows-Binaries enthält. Bei Zope 2.13.22 sind neben den oben genannten Programmpaketen also noch folgende Komponenten betroffen:
- ExtensionClass==2.13.2
- Record==2.13.0
- Missing==2.13.1
- Acquisition==2.13.8
- AccessControl==3.0.6
- zope.publisher==3.13.4
- zope.site==3.9.2
- zope.publisher==3.13.4
- zope.browserresource==3.10.3
Vorausgesetzt man hat Python 2.7.3+. installiert (Bsp. C:\Programme\Python27
) und die Setuptools entsprechend https://pypi.python.org/pypi/setuptools#windows installiert , so kann man sich mit einem Windows-Batchfile behelfen, das automatisch ein virtuelles Python (C:\dev\zope
) erzeugt und dort die Installation passend sequenziert:
# Windows-Batchfile zur automatischen Installation von ZMS/Zope in einem virtuellen Python #
REM ###################################
REM ### PLEASE CUSTOMIZE PATH NAMES ###
REM ###################################
REM ### GENERATE VIRTUAL PYTHON ###
"C:\Program Files (x86)\Python27\Scripts\virtualenv.exe" C:\dev\ZMS3
cd C:\dev\ZMS3\Scripts\
REM ### REQUIRED FOR ZOPE ON WIN32/XP ###
easy_install.exe ZMS3
REM ### PATCHES ###
copy /Y C:\dev\zms_installer\configure.zcml C:\dev\ZMS3\Lib\site-packages\zope2-2.13.22-py2.7.egg\Products\Five\
copy /Y C:\dev\zms_installer\PageTemplate.py C:\dev\ZMS3\Lib\site-packages\zope2-2.13.22-py2.7.egg\Products\PageTemplates\PageTemplate.py
copy /Y C:\dev\zms_installer\win32file.pyd C:\dev\ZMS3\Lib\site-packages\
copy /Y C:\dev\zms_installer\__init__.py C:\dev\ZMS3\Lib\site-packages\zms3-3.0.0-py2.7.egg\Products\
REM ### GENERATE ZOPE INSTANCE ###
mkzopeinstance -d C:\dev\ZMS3\zopeinstance\live -u admin:*****
REM ### START ZOPE INSTANCE ###
C:\dev\ZMS3\zopeinstance\live\bin\runzope
Windows Batch Script und Zope Patches
HINWEISE:
1. Die Pfadangaben im Batchfile sind beispielhaft und sollten durch die eigenen Pfade ersetzt werden.
2. Das Ersetzen der Five-configure.zcml und der PageTemplates.py verhindern einen Fehler beim Zope-Start.
3. win32file.pyd/pwintypes27.dll sind Kompilate aus dem win32-Konvolut; zope.sendmail erfordert dieses Module (ggf. zu ergänzen im Python-DLL-Folder C:\Programme\Python27\DLLs)
4. Das Batch-File startet die erzeugte Zope-Instanz automatisch, die sich dann per http://localhost:8080/ im Browser aufrufen lässt.
Quickfixes für Zope
# ZOPE INSTALLATION 2.13.22 QUICK FIXES #
[1] QUICKFIX _ERROR_START
+++++++++++++++++++++++++++++++
\site-packages\Products\PageTemplates\PageTemplate.py
Zeile 19
- from zope.pagetemplate.pagetemplate import _error_start, PTRuntimeError
+ from zope.pagetemplate.pagetemplate import PTRuntimeError
+++++++++++++++++++++++++++++++
[2] QUICKFIX FIVE INCLUDES AUSKOMMENTIEREN
+++++++++++++++++++++++++++++++
\site-packages\Products\Five\configure.zcml
<!--
<include package=".component" />
<include package=".browser" />
<include package=".skin" />
<include package=".utilities" />
<include package=".viewlet" />
-->
+++++++++++++++++++++++++++++++
[3] QUICKFIX START_TIMEOUT-ERROR
+++++++++++++++++++++++++++++++
\site-packages\zdaemon\zdctl.py
Zeile 284
- if (n > self.options.start_timeout):
+ if (n > 300):
+++++++++++++++++++++++++++++++
SOURCES: https://zmslabs.org/download/zope_quickfixes/zope21322/
[4] QUICKFIX zope.browserresource 4.0+
+++++++++++++++++++++++++++++++
Typische Fehlermeldung:
+++++++++++++++++++++++++++++++
2014-06-20T19:14:37 ERROR Zope.SiteErrorLog 1403284477.360.440634856213 http://localhost:8080/++resource++zms_/bootstrap/bootstrap-all.min.js
Traceback (innermost last):
Module ZPublisher.Publish, line 138, in publish
Module ZPublisher.mapply, line 77, in mapply
Module ZPublisher.Publish, line 48, in call_object
Module zope.browserresource.file, line 201, in GET
Module zope.component._api, line 112, in getMultiAdapter
ComponentLookupError: ((<Products.Five.browser.resource.FileResource object at 0x060037F0>, <HTTPRequest, URL=http://localhost:8080/++resource++zms_/bootstrap/bootstrap-all.min.js>),
<InterfaceClass zope.browserresource.interfaces.IETag>, u'')
+++++++++++++++++++++++++++++++
\site-packages\zope\browserresource\file.py
Zeile 200
+ # QUICKFIX
+ try:
etag = getMultiAdapter((self, request), IETag)(file.lmt,file.data)
+ except:
+ etag = ''
+++++++++++++++++++++++++++++++
vgl.https://groups.yahoo.com/neo/groups/zms-developers/conversations/topics/3665
Erstellt von: Dr. F. Hoffmann
, SNTL Publishing , erstellt am: 19.01.2012
,
zuletzt geändert: 09.07.2014