Introdução
Como já deve ser de conhecimento de todos, o plone.org, descontinuou o Plone 2.5.5, e recomenda, se possível, a atualização para uma versão mais recente.Mas como em muitos casos, não é possível a atualização, e faz-se necessário uma nova instância. Isto por vários motivos, pode ser para aplicar uma modificação pontual no ambiente, ou apenas um produto conflitante zope, ou plone, ou algo estrutural como produtos python, ou simplesmente para manter o legado.
O virtualenv possibilita a utilização de um encapsulamento, do tipo instancia python, que permite a total personalização e independência, sem dano ou modificação da instalação principal. Permitindo assim a criação de um envolucro hermético isolado, sem comprometimento ou conflito, inclusive entre os componentes compartilhados da estrutura.
descrição
Sera criado 2 clusters com 3 instancias cada, sendo 1 zope-server e 2 zope-cliente; com o objetivo de balancear o processamento.O primeiro cluster (env001) rodará com as porta 8100(server), 8101(client1) e 8102(client2);
O segundo cluster (env002) rodará com as porta 8200(server), 8201(client1) e 8202(client2);
ESCOPO
O escopo de customização está limitado ao seguinte Ambiente:Sistema Operacional Linux
http://distrowatch.com/
Plone-2.5.5-UnifiedInstaller
https://launchpad.net/plone/2.5/2.5.5/+download/Plone-2.5.5-UnifiedInstaller.tgz
Virtualenv
http://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.7.1.2.tar.gz
- O sistema Operacional poderá ser qualquer um Linux, não será abordado instalação em outro sistema operacional neste artigo;
- O Plone 2.5.5 é a ultima revisão estável da versão 2, e possui os seguintes pacotes incorporados e respectivas versões:
Plone-2.5.5-UnifiedInstaller/packages/elementtree-1.2.6-20050316.tar.gz
Plone-2.5.5-UnifiedInstaller/packages/HelperScripts.tgz
Plone-2.5.5-UnifiedInstaller/packages/Imaging-1.1.6.tar.bz2
Plone-2.5.5-UnifiedInstaller/packages/jpeg-6b.tar.bz2
Plone-2.5.5-UnifiedInstaller/packages/libxml2-2.6.30.tar.bz2
Plone-2.5.5-UnifiedInstaller/packages/libxml2-python-2.6.21.tar.bz2
Plone-2.5.5-UnifiedInstaller/packages/libxslt-1.1.22.tar.bz2
Plone-2.5.5-UnifiedInstaller/packages/Plone-2.5.5.tar.bz2
Plone-2.5.5-UnifiedInstaller/packages/Python-2.4.4.tar.bz2
Plone-2.5.5-UnifiedInstaller/packages/python-openid-2.0.1.tar.bz2
Plone-2.5.5-UnifiedInstaller/packages/PyXML-0.8.4.tar.bz2
Plone-2.5.5-UnifiedInstaller/packages/reportlab_2_0.tar.bz2
Plone-2.5.5-UnifiedInstaller/packages/setuptools-0.6c7-py2.4.tgz
Plone-2.5.5-UnifiedInstaller/packages/TextIndexNG-3.1.16.tar.bz2
Plone-2.5.5-UnifiedInstaller/packages/zlib-1.2.3.tar.bz2
Plone-2.5.5-UnifiedInstaller/packages/Zope-2.9.8-final.tar.bz2
Pré-requisitos
Considerando que o sistema operacional esteja instalado e configurado corretamente, execute:Debian Like sudo aptitude install build-essential;
RedHat Like sudo yum install gcc gcc-c++ cpp make;
INSTALAÇÃO DO PZP
Baixe e descompacte primeiramente o Plone-2.5.5-UnifiedInstaller.Em seguida edite o contendo do arquivo
- wget https://launchpad.net/plone/2.5/2.5.5/+download/Plone-2.5.5-UnifiedInstaller.tgz
- tar xvzf Plone-2.5.5-UnifiedInstaller.tgz -C /tmp
- cd /tmp/Plone-2.5.5-UnifiedInstaller
install.sh
, PLONE_HOME, com o local de instalação desejado. Salve e feche o arquivo ([esc] :qw); vim install.shAgora execute o script de instalação:#!/bin/sh # # Unified Plone installer build script # Author: Kamal Gill (kamalgill at mac.com) # # Note: this script must be run as root # # Configure Plone installation options PLONE_HOME=/opt/Plone-2.5.5 LOCAL_HOME=$PLONE_HOME #
./install.sh; ou su ; ./install.shNesta fase, será compilado um ambiente isolado do sistema operacional, no diretório escolhido para ser instalado, onde todos os componentes necessários para o ambiente, estarão contidos.
INSTALAÇÃO DO Virtualenv
Nesta etapa utilize o python do ambiente criado, não utilize o python do sistema operacional; isto implica na impossibilidade de instalação via apt, yum, aptitude ou outro gerenciador de pacotes.Se está usando os fontes do virtualenv:
- $wget http://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.7.1.2.tar.gz
- $tar xvzf virtualenv-1.6.4.tar.gz -C /tmp/
- $/opt/p255/Python-2.4/bin/python setup.py install
Se está usando o modulo python easy_install: $/opt/p335/Python-2.4/bin/easy_install virtualenv
Preparação do ambiente compartilhado
Nesta etapa, será preparado todos os elementos de compartilhamento do ambiente, os quais são comuns entre as instancias. Estas etapas compreendem o isolamento dos produtos do CMS Plone versão 2.5.5 dos outros produtos, para facilitação de manutenção; a criação do diretório de produtos compartilhados; criação dos ambientes através do virtualenv para isolamento das instancias; criação das instancias zope-client/zope-server; criação de links para sincronia de ambientes; e permissões necessárias. Para proceder basta executar os comandos abaixo, no diretório de instalação do plone, neste caso /opt/p255:# cd /opt/p255
- Isolar os produtos do CMS Plone versão 2.5.5
# mv ./zeocluster/Products/ ./plone_2.5.5
- Criar diretório de produtos compartilhados
# mkdir ./Products
- Criar o ambiente através do virtualenv
# ./Python-2.4.4/bin/virtualenv _app/env001
Se houver a necessidade de isolamento total, ou seja não herdar o site-packages global, acrescente a opção--no-site-packages
# ./Python-2.4.4/bin/virtualenv --no-site-packages ./_app/env001
- Criar os arquivos para o novo ambiente:
Pode ser individual para cada arquivo:
sed 's;#!/opt/p255/Python-2.4.4/bin/python;#!/opt/p255/_app/env001/bin/python;' bin/mkzeoinstance.py >> _app/env001/bin/mkzeoinstance.py
sed 's;#!/opt/p255/Python-2.4.4/bin/python;#!/opt/p255/_app/env002/bin/python;' bin/mkzeoinstance.py >> _app/env002/bin/mkzeoinstance.py
sed 's;#!/opt/p255/Python-2.4.4/bin/python;#!/opt/p255/_app/env001/bin/python;' bin/mkzopeinstance.py >> _app/env001/bin/mkzopeinstance.py
sed 's;#!/opt/p255/Python-2.4.4/bin/python;#!/opt/p255/_app/env002/bin/python;' bin/mkzopeinstance.py >> _app/env002/bin/mkzopeinstance.py
ou em lote:
find /opt/plone255/bin/*.py -printf '%p %h %f\n'|while read p h f; do echo $p $h $f; sed 's#//Python-2.4.4/#/app/env001/#' $p > ./bin/$f; chmod +x ./bin/$f; done
- Tornar os novos scripts criados executáveis
Se foi executado o script em lote a linhachmod +x ./bin/$f;
, já realizou esta tarefa, se não execute o comando abaixo:
find _app/env00?/bin/mkz*.py -exec chmod -v +x {} \;
- Instalar o easy_install nos ambientes virtuias:
cd /tmp/Plone-2.5.5-UnifiedInstaller/packages/
tar xvzf setuptools-0.6c7-py2.4.tgz
/opt/p255/_app/env001/bin/python ez_setup.py -U setuptools
/opt/p255/_app/env002/bin/python ez_setup.py -U setuptools
- Copiar as bibliotecas python já instaladas para o ambiente virtual:
cp -vap /opt/p255/Python-2.4.4/lib/python2.4/site-packages/ /opt/p255/_app/env001/lib/python2.4/
cp /opt/p255/bin/copyzopeskel.py /opt/p255/_app/env001/bin/
cp -vap /opt/p255/Python-2.4.4/lib/python2.4/site-packages/ /opt/p255/_app/env002/lib/python2.4/
cp /opt/p255/bin/copyzopeskel.py /opt/p255/_app/env002/bin/
- Criar as instancias zope-server;
# ./bin/mkzeoinstance.py /opt/p255/_app/env001/server 8110
# ./bin/mkzeoinstance.py /opt/p255/_app/env001/server 8120
- Criar as instancias zope-client;
# for ((i=1;i<=2;i++)); do ./bin/mkzopeinstance.py -d ./_app/env001/client${j} -u admin:admin -s ./skel/ done # for ((i=1;i<=2;i++)); do ./bin/mkzopeinstance.py -d ./_app/env002/client${j} -u admin:admin -s ./skel/ done
Este comando cria as duas instancias zope-client necessárias para este artigo. Para criar apenas umas instancia execute
Onde o -d diretório de instalação, -u usuário e senha e -s estrutura inicial (esqueleto).
/opt/p255/_app/env001/bin/mkzopeinstance.py -d /opt/p255/_app/env001/client1 -u admin:admin -s /opt/p255/skel/
- Criar links de sincronia
# find _app/env00?/client? -maxdepth 2 -mindepth 1 -type d -name Products -printf '%h %f\n'|while read p f; do a="./"$p"/"$f; rm -frv $a; ln -sv `pwd`/Products $p;done
Se houver a necessidade de isolamento total, não execute esta etapa.
- Conceder permissões necessárias
# chown plone -Rv ./*
for ((i=1;i<=2;i++)); do ./bin/mkzeoinstance.py zeocluster${i}/server 8${i}00; for ((j=0;j<=1;j++)); do ./bin/mkzopeinstance.py -d ./zeocluster${i}/client${j} -u admin:123456 -s ./skel/; done; done
Configuração
Agora vem a ultima parte antes de ativar e começar a utilizar o ambiente. Habilitar CMS O ambientes criados ainda não possuem o CMS ativado, pois estão apontando para oProducts
vazio e o plone se encontra no diretório plone_2.5.5
, então proceda da seguinte forma:
# ln -sv `pwd`/plone_2.5.5/* ./Products/Definições no zope-server Cada instancia funcionará em uma porta especifica. O zope-server entretanto já foi definida sua porta na instalação, necessitando o minimo de configuração neste momento. Apenas defina o usuário autorizado a gerenciar os processos do ZODB, que no caso será o
usuário plone
.
sed -i 's; # user zope; user plone;g' zeocluster?/server/etc/zeo.confO comando acima edita os arquivos
./zeocluster1/server/etc/zeo.conf
e ./zeocluster2/server/etc/zeo.conf
Definições no zope-server
Defina o usuário autorizado a gerenciar os processos do zope-client, que no caso também será o usuário plone
.
sed -i 's;# effective-user chrism; effective-user plone;g' ./zeocluster?/client?/etc/zope.conf
zeocluster?/client?/etc/zope.confpara cada instancia há uma configuração específica.903 <http-server> 904 # valid keys are "address" and "force-connection-close" 905 address 8080 906 # force-connection-close on 907 </http-server> .. 938 # <icp-server> 939 # # valid key is "address" 940 # address 888 941 # </icp-server>
- Em
./zeocluster1/client0/etc/zope.conf
: Altere a linha 905 para 8101, e se o servidor cache for um squid, descomente as linhas 938 a 941 e altere a linha 940 para 8101;
- Em
./zeocluster1/client1/etc/zope.conf
: Altere a linha 905 para 8102, e se o servidor cache for um squid, descomente as linhas 938 a 941 e altere a linha 940 para 8102;
- Em
./zeocluster2/client0/etc/zope.conf
: Altere a linha 905 para 8201, e se o servidor cache for um squid, descomente as linhas 938 a 941 e altere a linha 940 para 8201;
- Em
./zeocluster2/client0/etc/zope.conf
: Altere a linha 905 para 8202, e se o servidor cache for um squid, descomente as linhas 938 a 941 e altere a linha 940 para 8202;
Obs: O Servidor cache livre pode ser um squid ou um varnish, sendo que no varnish não é necessário habilitar (descomentar) o icp-server
do zope.
Scripts de controle O cluster criado na compilação, já vem o scripts de controle para as instancias, o que permite de forma ágil e fácil, o start, stop e restart de todas as instancias, do cluster. - Para facilitar apenas copie-os para os locais devidos;
cp -fv ./zeocluster/bin/*.sh ./zeocluster1/bin/
cp -fv ./zeocluster/bin/*.sh ./zeocluster2/bin/
- e altere-os conforme a necessidade.
$sed -i 's#/opt/p255/zeocluster#/opt/p255/zeocluster1#; s#client1#client0#; s#client2#client1#;' zeocluster2/bin/*.sh
$sed -i 's#/opt/p255/zeocluster#/opt/p255/zeocluster2#; s#client1#client0#; s#client2#client1#;' zeocluster2/bin/*.sh
Links Relacionados
Brito: Instalação Plone 2.5.5 com módulos customizadosBrito: Virtualenv Python - Encapsulamento de mudanças
Brito: Criando instancias zope via buildout
Veja também: Brito:PLONE 2.5.5 + VIRTUALENV (Simplificado)
Comentários