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:

  1. Python installieren
  2. Setuptools installieren: Das Python Modul setuptools stellt u.a. easy_install bereit, damit man Python Packete direkt aus dem Web installieren
  3. 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

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
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

screenshot

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

screenshot

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

 
screenshot

Erzeugung einer Zope-Instanz (hier "myzms") in einem beliebigen Zielverzeichnis (hier D:\data\zope\instance\)

 

6. ZMS im Web-GUI von Zope initialisieren

screenshot

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
Icon zms_installer (86KB)
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