FastNetMon

Saturday, 6 March 2010

Установка Zope 2.12.3 на Debian 5 Lenny из исходников

Официальный сайт Zope2: http://zope2.zope.org/ а вот инструкция по установке http://docs.zope.org/zope2/releases/2.12/INSTALL.html Обращаю внимание, что 2.12 релиз Zope поддерживает как Python 2.5 так и 2.4 http://docs.zope.org/zope2/releases/2.12/WHATSNEW.html так что никаких извращений с установкой в /opt старого Python не требуется.

Ставим easy_install:
apt-get install -y python-setuptools python-virtualenv


Создаем и переходим в виртуальную среду для установки Zope (чтобы не повредить существующую систему, а также не повредить библиотекам самого Zope):
virtualenv /opt/zope212
cd /opt/zope212
source bin/activate


Ставим зависимости:

apt-get install -y gcc python-dev


Запускаем установку:
bin/easy_install zope2


Создаем instance Zope приложения:

bin/mkzopeinstance
Please choose a directory in which you'd like to install
Zope "instance home" files such as database files, configuration
files, etc.

Directory: /opt/zopeinstance
Please choose a username and password for the initial user.
These will be the credentials you use to initially manage
your new Zope instance.

Username: admin
Password:
Verify password:


Переходим в папку инстанса Zope:
cd /opt/zopeinstance/


Создаем юзера для Zope:
useradd zope


Открываем конфиг инстанса:

vi etc/zope.conf


И добавляем в самый низ имя юзера:
effective-user zope


А теперь делаем владельцем всех файлов юзера Zope:

chown zope:zope -R /opt/zopeinstance


Запускаем во отладочном режиме:
bin/zopectl fg
.
daemon process started, pid=1831


Либо запускаем в продакшен-режиме:

bin/zopectl start


Открываем веб-консоль администрирования и логинимся в нее с ранее заданными логином и паролем:
http://xx.xx.xx.xx:8080/manage


Если же Вы хотите поставить Zeo инстанс (распределенная версия хранилища с возможностью конкурентного доступа к ней), то используйте следующий мануал: http://docs.zope.org/zope2/zope2book/ZEO.html

Создаем Zeo инстанс:

bin/mkzeoinstance /opt/zeoinstance


Переходим в соотвествующую папку:

cd /opt/zeoinstance


Пробуем запустить:
bin/zeoctl start


Если в ответ получаем:

Error: /opt/zope212/lib/python2.5/site-packages/ZODB3-3.10.0a1-py2.5-linux-x86_64.egg/zdaemon/zdrun.py is not an existing path
(line 41 in file:///opt/zeoinstance/etc/zeo.conf)
For help, use /opt/zope212/lib/python2.5/site-packages/ZODB3-3.10.0a1-py2.5-linux-x86_64.egg/ZEO/zeoctl.py -h


То надо скорректировать путь:
vi etc/zeo.conf


И корректируем строку zdrun следующим образом:

zdrun /opt/zope212/lib/python2.5/site-packages/zdaemon-2.0.4-py2.5.egg/zdaemon/zdrun.py


И после этого повторяем попытку запустить Zeo. В итоге он должен заработать примерно так:

lsof | grep zeo
python 15416 root cwd DIR 0,202 4096 28034842 /opt/zeoinstance
python 15416 root 3w REG 0,202 656 28034853 /opt/zeoinstance/log/zeo.log
python 15416 root 4u unix 0xffff81011d31a080 425909697 /opt/zeoinstance/etc/zeo.zdsock.15415
python 15418 root cwd DIR 0,202 4096 28034842 /opt/zeoinstance
python 15418 root 3w REG 0,202 656 28034853 /opt/zeoinstance/log/zeo.log
python 15418 root 4u REG 0,202 7 28034859 /opt/zeoinstance/var/Data.fs.lock
python 15418 root 5u REG 0,202 0 28034860 /opt/zeoinstance/var/Data.fs.tmp
python 15418 root 6u REG 0,202 4 28034861 /opt/zeoinstance/var/Data.fs
lsof 15455 root cwd DIR 0,202 4096 28034842 /opt/zeoinstance
grep 15456 root cwd DIR 0,202 4096 28034842 /opt/zeoinstance
lsof 15457 root cwd DIR 0,202 4096 28034842 /opt/zeoinstance
bash 19864 root cwd DIR 0,202 4096 28034842 /opt/zeoinstance


Теперь проверим, какое хранилище использует наш Zope инстанс, это файловое хранилище:

lsof | grep zope -i | grep Data.fs
runzope 21553 zope 7u REG 0,202 7 28034847 /opt/zopeinstance/var/Data.fs.lock
runzope 21553 zope 10u REG 0,202 0 28034848 /opt/zopeinstance/var/Data.fs.tmp
runzope 21553 zope 11u REG 0,202 1040426 28034849 /opt/zopeinstance/var/Data.fs
runzope 21553 zope 12r REG 0,202 1040426 28034849 /opt/zopeinstance/var/Data.fs


Теперь необходимо Zope инстанс переключить на Zeo:

cd /opt/zopeinstance/
vi etc/zope.conf


Находим и комментируем диезами (#) там блок:

<zodb_db main>
# Main FileStorage database
</zodb_db>


Чуть ниже находим аналогичный закомментированый блок zodb_db main со вложенным блоком zeoclient и раскомментируем его.

Перезапускаем инстанс:
bin/zopectl restart


Убаеждаемся, что законнектились на Zeo инстанс:

bin/zopectl logtail
------
2010-03-16T02:13:06 INFO ZEO.zrpc.Connection(C) (localhost:8100) received handshake 'Z310'
------
2010-03-16T02:13:06 INFO ZEO.ClientStorage zeostorage Server authentication protocol None
------
2010-03-16T02:13:06 INFO ZEO.ClientStorage zeostorage Connected to storage: ('localhost.localdomain', 8100)
------
2010-03-16T02:13:06 INFO ZEO.ClientStorage zeostorage No verification necessary -- empty cache
------
2010-03-16T02:13:17 INFO Zope Ready to handle requests


Ну и все, теперь у нас есть сторадж Zeo инстанс с поддержкой множественных Zope инстансов :) Также, как вариант, мы можем подключаться к Zeo из своих пользовательских многопоточных приложений.

Выходим из virtualenv:
deactivate

No comments :

Post a Comment

Note: only a member of this blog may post a comment.