![]() ![]() |
Sie sind hier: TeilnehmerInnen > Dieter's Home > Mehrere Zope Instances auf einer Maschine hinter Apache Mehrere Zope Instances auf einer Maschine hinter ApacheEs gibt zwar einige Artikel zu diesem Thema, aber (noch) nichts, was im Detail beschreibt, wie man die Instances installiert und hinter Apache setzt, bis zum Aufsetzen der Start/Stop-Scripts. Einiges stammt aus anderen (englischen) Artikeln, ein Teil aus der Mailinglist, ein Teil von mir (der ist mir Vorsicht zu geniessen ;-) ). Also wir m�chten also folgende Tasks ausf�hren:
Also, als erster setzen wir ein normales Zope auf, was ich hier aber nicht beschreiben m�chte. Der Artikel geht davon aus, dass Zope im Directory /usr/local/Zope (=ZOPE_HOME) installiert ist. In ZOPE_HOME erstellen wir ein Verzeichnis "zope-sites" und darin pro Instance ein Directory, also:
Man kann auch ein Template-Directory erstellen, von dem man dann immer eine Minimal-Installation kopieren kann. In projekt1 erstellen wir also nun folgende Verzeichnisse:
Das Directory var muss nun noch die richtigen Berechtigungen bekommen, sonst gibt's Fehler: chown root.zope var chmod g+w var chmod o+t var Vom ZOPE_HOME kopieren wir uns noch die Files "start" und "stop" in das projekt1-Verzeichnis. Diese passen wir an (alle �nderungen mit ### markiert) start: ---------------------------------------------------------------------- #!/bin/sh umask 077 reldir=`dirname $0` INSTANCE_HOME=`cd $reldir; pwd`; export INSTANCE_HOME ### neu ZOPEHOME=/usr/local/Zope; export ZOPEHOME ### neu cwd=`cd $reldir; pwd` # Zope's event logger is controlled by the "EVENT_LOG_FILE" environment # variable. If you don't have a "EVENT_LOG_FILE" environment variable # (or its older alias "STUPID_LOG_FILE") set, Zope will log to the standard # output. For more information on EVENT_LOG_FILE, see doc/ENVIRONMENT.txt. ZLOGFILE=$EVENT_LOG_FILE if [ -z "$ZLOGFILE" ]; then ZLOGFILE=$STUPID_LOG_FILE fi if [ -z "$ZLOGFILE" ]; then EVENT_LOG_FILE="" export EVENT_LOG_FILE fi # exec /usr/local/ActivePython-2.1/bin/python $cwd/z2.py -D "$@" ### makieren ### folgende Zeile neu exec /usr/local/ActivePython-2.1/bin/python \ $ZOPEHOME/z2.py \ -w 8080 \ -L '' \ -f - \ -m - \ -u zope \ -a 192.168.0.1 "$@" ---------------------------------------------------------------------- evtl. noch das Python Directory anpassen und nat�rlich die anderen Switches nach Gusto. Achtung: das start File in "projekt2" muss dann einen anderen Port haben, z.B. -w 9080 nun stop: ---------------------------------------------------------------------- #! /bin/sh # kill `cat /usr/local/Zope-2.6.1b2-src/var/Z2.pid` ### kommentieren # 01.02.2003/df Grid reldir=`dirname $0` ### neu pidhome=`cd $reldir/var; pwd` ### neu kill `cat $pidhome/Z2.pid` ### neu ---------------------------------------------------------------------- So, nun m�chten wir diesen Script auch beim booten aut. starten lassen. Dazu erstelllen wir in /etc/inti.d: Zope-projekt1: ---------------------------------------------------------------------- #! /bin/sh ### BEGIN INIT INFO # Provides: zope # Required-Start: oracle apache # Required-Stop: # Default-Start: 3 5 # Default-Stop: 0 1 2 6 # Description: Zope-Daemon/E-FIMS ### END INIT INFO export ORACLE_HOME=/opt/oracle/product/o9i export ORACLE_SID=GRID ORA_NLS33=/opt/oracle/product/oracle/ocommon/nls/admin/data export NLS_NUMERIC_CHARACTERS=".,"; export NLS_LANG=GERMAN_SWITZERLAND.WE8ISO8859P1 export PATH=/usr/local/ActivePython-2.1/bin:$PATH zopedir=/usr/local/Zope/zope-sites/EFIMS PATH=.:$PATH case "$1" in start) echo -n "Starting zope daemon: zope" cd $zopedir $zopedir/start -u zope>var/error.log 2>&1 & echo "." ;; stop) echo -n "Stopping zope daemon: zope" cd $zopedir ./stop rm -f var/*.pid var/pcgi.soc echo "." ;; restart) $0 stop sleep 3 $0 start ;; reload) $0 restart ;; force-reload) $0 restart ;; *) echo "Usage: /etc/init.d/zope {start|stop|restart|reload|force-reload}" exit 1 ;; esac exit 0 ---------------------------------------------------------------------- Nun noch in /etc/init.d/rc5.d ein link auf diese File::
(Ich mache das allerdings alles mit Webmin) Die Zeile # Required-Start: oracle apache solltest du noch �ndern, wenn du kein Oracle hast. Sie sorgt daf�r, dass vor Zope Oracle und Apache gestartet werden. Dies ist der Name des Start-Scripts, welcher in /etc/init.d ist. Kl�re ab, ob dein Apache-Startscript auch "apache" heisst, sonst gibt's Fehler. Nun noch alles nochmals f�r projekt2. So, wenn nun die Maschine gebootet wird, sollte unser Zope gestartet werden. Allerdings k�nnen wir nur via http://ip:8080 darauf zugreifen. Wir m�chten allerdings http://projekt1.firma eingeben. Also nehmen wir uns nun Apache vor. Wir suchen das File httpd.conf (sollte in /etc/httpd sein), und passen es an. Im File hat es eine Stelle, wo ein Beispiel f�r einen VirtualHost ist (suche nach VirtualHost). Dort f�gen wir etwas �hnliches wie folgt ein: ---------------------------------------------------------------------- NameVirtualHost 192.168.0.1:80 # Virtual Host 192.168.0.1 auf Zope Port 8080 So, nun noch Apache neu starten, und der Zugriff im Browser sollte via http://projekt2.firma funktionieren. Wenn du dort auf das Control_Panel klickst siehst du auch je nachdem ob du als "projekt1" oder "projekt2" eingeloggt bist, ein INSTANCE_HOME und CLIENT_HOME, welche auf dein Projekt zeigen. Viel Spass Dieter Geschrieben von Dieter . Letzte �nderung 01.04.2003 22:10. |