Zope auf Debian installieren
Installation von ZOPE auf Debian GNU/Linux
Es besteht die Möglichkeit, ZOPE über den Debian Paketmanager zu installieren oder ZOPE direkt aus den Sourcen von zope.org zu bauen. Beides soll hier kurz beschrieben werden.
A) Vorüberlegungen
Vorab sollte man vorsichtshalber mit "apt-get update" und einem anschliessenden "apt-get upgrade" sein Debian System auf den neuesten Stand bringen.
Für beide Installationsmöglichkeiten nehmen wir Python 2.1. Mit einem schnellen:
vm-debian:~# apt-get install python
installieren wir uns die aktuelle Python-Version (2.1.3).
Wer seine locales noch nicht installiert hat sollte dies unbedingt mit "apt-get install locales" nachholen und dann als Standard locale zumindest "de_DE" während der Installation auswählen.
B) Installation von ZOPE über den Debian Paketmanager
-
Zope Server
In der Debian woody wird ZOPE in der Version 2.5.1 gleich mitgeliefert. Ein Zope 2.6.1 woody backport kann über den DZUG Download Bereich heruntergeladen werden. Wer sich seinen ZOPE dennoch lieber aus den Sourcen bauen möchte, kann gleich zu Punkt C) übergehen.
Wir installieren ZOPE mit:
vm-debian:~# apt-get install zope
Wir werden aufgefordert, einen ZOPE Administrator User anzulegen. Als Verschlüsselungsmechanismus können wir zwischen SHA, CRYPT und CLEARTEXT wählen. Ich nehme hier CRYPT (UNIX-style crypt Passwort).
Haben wir das erledigt, wartet ZOPE auf Port 9673 auf Anfragen. Standardmässig horcht ZOPE auf Port 8080. Um Konflikte mir Proxy Ports zu vermeiden, wird der "Debian ZOPE" auf Port 9673 gesetzt. Das soll uns nicht weiter stören. Zur Not kann man den Port noch später ändern, z.B. auf Port 80.
Folgende Prozesse sollten nun aktiv sein:
vm-debian:~# ps ax | grep zope 3156 ? S 0:00 /usr/bin/python /usr/sbin/zope-z2 3157 ? S 0:11 /usr/bin/python /usr/sbin/zope-z2 3193 ? S 0:00 /usr/bin/python /usr/sbin/zope-z2
In unserem Browser können wir ZOPE z.B. über http://localhost:9673 erreichen bzw. von einem entfernten Rechner über die IP des Servers.
Mit dem eben eingerichteten Administrations User loggen wir uns in das ZOPE Managment Interface (ZMI) über http://localhost:9673/manage/ ein.
Das ZOPE ZMI begrüsst uns so:
Das Passwort des Administrations User kann man folgendermassen ändern:
vm-debian:~# python /usr/lib/zope/zpasswd.py -u admin -p test /var/lib/zope/access
oder über das ZMI im acl_users Folder.
Der Paketmanager installiert ZOPE unter "/usr/lib/zope" und "/var/lib/zope". Das ZOPE Produktverzeichnis befindet sich unter "/usr/lib/zope/lib/python/Products".
Mit "/etc/init.d/zope stop|start" können wir den ZOPE Server herunterfahren oder starten.
Weitere Debian spezifische Dokumentation findet man unter "/usr/share/doc/zope".
-
Postgres Unterstützung
Wer noch keine lokale Postgres installiert hat, kann dies mit "apt-get install postgres" jetzt nachholen (default encoding ist LATIN1). Danach sollte auf dem System ein postmaster Prozess laufen. Wer auf eine Postgres zugreifen möchte, die auf einem anderen Server installiert ist, braucht natürlich keine lokale Datenbank und kann diesen Schritt überspringen.
Wir installieren das Debian Paket zope-popyda. Es enthält das ZPoPyDA Prokukt und installiet gleich die richtige Python Postgres API mit:
vm-debian:~# apt-get install zope-popyda
War die Installtion erfolgreich, sollte sich im ZMI unter "/Control_Panel/Products" das Produkt "ZPoPyDA" befinden.
Wir können jetzt über das ZMI eine "Z PoPy Database Connection" erstellen und eine Verbindung zu einer beliebigen Postgres-Datenbank herstellen. Schön!
-
Sonstiges
Weitere ZOPE Debian Pakete lassen sich mit "apt-cache search zope" ermitteln, so z.B. CMF (Zope Content Management Framework), WikiWikiWeb, ein Zope Buch und vieles mehr.
C) Installtion von ZOPE aus den Sourcen
-
Zope Server
Wer ZOPE aus den Source installiert sollte vorher mal einen Blick in die README.txt, sowie ins "doc" Verzeichnis werfern. Hier finden sich nützliche Informationen zu vielen Fragen.
Wir erstellen einen neuen System User zope, der der Gruppe zope angehört und sein home Verzeichnis unter /var/lib/zope hat. Unter diesem User soll unser Zope Server später laufen:
vm-debian:~# groupadd zope vm-debian:~# useradd -g zope -d /var/lib/zope zope vm-debian:~# mkdir /var/lib/zope vm-debian:~# chown -R zope:zope /var/lib/zope
Um Zope selbst bauen zu können, benötigen wir noch die python libraries, den gcc und die libc6. Wir installieren den ganzen Kram mit:
vm-debian:~# apt-get install python-dev gcc libc6-dev make
Als user zope (su - zope) holen wir uns z.B. mit lynx von zope.org den neuesten ZOPE tar ball (derzeit Zope-2.5.1-src.tgz):
lynx http://www.zope.org/Products/Zope/2.5.1/Zope-2.5.1-src.tgz/view
entpacken ihn unter /var/lib/zope mit:
zope:/var/lib/zope$ tar xvzf Zope-2.5.1-src.tgz
und setzen einen symbolischen Link auf den aktuellen Zope-2.5.1-src:
zope:/var/lib/zope$ ln -s Zope-2.5.1-src Zope
Jetzt können wir die ZOPE Python Module kompilieren. Als User zope geben wir unter /var/lib/zope/Zope folgenden Befehlt ein (without_pcgi):
zope:/var/lib/zope/Zope$ python wo_pcgi.py
ZOPE ist so freundlich und generiert uns direkt einen ZOPE Administrationsuser mit Passwort. Alternative Installtionsmodi befinden sich in der Datei doc/INSTALL.txt.
Wir starten den ZOPE mit "./start &" im ZOPE Sourcen Verzeichnis. ZOPE sollte sich so melden:
zope:/var/lib/zope/Zope$ ./start & zope:~/Zope$ ------ 2002-06-15T22:31:03 INFO(0) ZODB Opening database for mounting: '142206320_1024180188.675469' ------ 2002-06-15T22:31:03 INFO(0) ZODB Mounted database '142206320_1024180188.675469' at /temp_folder ------ 2002-06-15T22:31:03 INFO(0) ZServer HTTP server started at Sun Jun 16 00:31:03 2002 Hostname: vm-debian.localguru.de Port: 8080 ------ 2002-06-15T22:31:03 INFO(0) ZServer FTP server started at Sun Jun 16 00:31:03 2002 Hostname: vm-debian Port: 8021
Über http://localhost:8080/manage/ können wir auf ZOPEs Managment Interface zugreifen.
Wer innerhalb des ZOPEs Probleme mit der Darstellung deutscher Umlaute hat, sollte am Ende des "start" Skripts noch die Zeile:
-L "de_DE"
hinzufügen (und nicht den Backslash nach Zeile -D "$@" \ vergessen).
-
Postgres Unterstützung
Wer noch keine lokale Postgres installiert hat, kann dies mit "apt-get install postgres" jetzt nachholen (default encoding ist LATIN1). Danach sollte auf dem System ein postmaster Prozess laufen. Wer auf eine Postgres zugreifen möchte, die auf einem anderen Server installiert ist, braucht natürlich keine lokale Datenbank und kann diesen Schritt überspringen.
Wir installieren die Python Postgres API:
vm-debian:~# apt-get install python2.1-popy
Wir holen uns von der zope.org das ZPoPyDA Produkt, um ZOPE an eine Postgres anbinden zu können:
http://www.zope.org/Members/tm/ZPoPyDA
und entpacken es mit "tar xvzf ZPoPyDA-2.0.8.tar.gz" direkt im Zope Sourcen Verzeichnis. Danach sollte sich im Product Verzeichnis unter "/var/lib/zope/Zope/lib/python/Products/" der Ordner "ZPoPyDA" befinden.
Wir stoppen ZOPE mit "./stop" und starten ihn erneut mit "./start &". Danach sollte sich im Product Management unter "/Control_Panel/Products" im ZMI das Produkt ZPoPyDA befinden.
-
/etc/init.d/-Startscript
Ein Beispiel für ein Startscript findet sich hier: http://www.zope.org/Members/howardhansen/debianstartupscript
-
Init Manager und Emergency User
Wer sich das Passwort des Initial Managers nicht notiert hat, kann mit python2.1 zpasswd.py inituser einen neuen Initial Manager definieren. Wenn im User-Ordner /acl_users nur höchstens ein User existiert, wird der User aus dieser Datei angelegt und überschreibt den alten User, sobald Zope neu gestartet wird.
Wer sich einmal aus Versehen komplett ausgesperrt haben sollte, kann mit sich mit python2.1 zpasswd.py access einen sog. Emergency User namens superuser anlegen. Der Emergency User ist sehr mächtig und gleichzeitig sehr schwach. Er wird durch die meisten Sicherheitskontrollen nicht eingeschränkt, kann allerdings nur eine Objektart erzeugen, nämlich User.
C) MySQL Datenbankanbindung
Alternativ kann statt der Postgres natürlich auch eine MySQL Datenbank angebunden werden. Ein Zope MySQL Datenbank Adapter befindet sich im Debian Paket "zope-mysqlda" (Installation über den Packetmanager).
Das Python Interface für die Installationsmethode aus den Sourcen befindet sich im Debian Paket "python2.1-mysqldb". Der ZOPE MySQL Database Adapter befindet sich unter http://www.zope.org/Members/adustman/Products/ZMySQLDA
Fragen und freundliche Kritik an: schopen at medienlabor dot de
Have fun!