PLONE 2.5.5 + VIRTUALENV (Simplificado)

Introdução

Como já apresentado no artigo AMBIENTE PLONE 2.5.5 + VIRTUALENV, o plone.org, descontinuou o Plone 2.5.5, e recomenda, se possível, a atualização para uma versão mais recente, que atualmente é a versão 4.2.1.

E no artigo citado acima, trata de casos, onde não é possível a atualização, e faz-se necessário uma nova instância para plone 2.5.5.

O ambiente em plone 2.5.5, faz-se necessário 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.

Escopo

O escopo de customização está limitado ao seguinte Ambiente:

  1. O sistema Operacional poderá ser qualquer um Linux, não será abordado instalação em outro sistema operacional neste artigo;
  2. Será tratado apenas o Plone 2.5.5, não será abordado instalação neste artigo, apenas a configuração do ambiente virtual python, se houver duvidas podem ser sanadas no artigo citado, ou outros artigos neste blog;

Pré Requisitos

Verifique se há os pré-requisitos abaixo, se não instale-os.

redhat like (epel):
yum install cpp gcc gcc-c++ gcc libc-devel libc6-devel make openssl-devel libxml2-devel libxslt-devel libjpeg libjpeg-devel zlib-devel freetype-devel lcms wv


debian like:
aptitude install build-essential openssl-dev libxml2-dev libxslt1-dev libjpeg8 libjpeg8-dev libghc6-zlib-dev libfreetype6-dev liblcms-utils wv


INSTALAR DO VIRTUALENV

Considere que o ambiente plone tenha sido instalado em /opt/p255, pelo script de instalação nativo.

através dos fontes:
$wget http://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.6.4.tar.gz
$tar xvzf virtualenv-1.6.4.tar.gz -C /tmp/
$cd /tmp/virtualenv-1.6.4
$/opt/p255/Python-2.4/bin/python setup.py install

através do easy_install:
$/opt/p255/Python-2.4/bin/easy_install virtualenv==1.6.4


Confirgurar o ambiente virtual

  1. Criar o diretório com o virtualenv:
    /opt/p255/Python-2.4.4/bin/virtualenv prod/env001
  2. Copiar os scripts para o novo ambiente:
    rsync -vaHEz /opt/p255/bin/*.py prod/env001/bin/
  3. Atualizar os scritps para trabalharem com a nova configuração:
    sed -ir 's#/opt/p255/Python-2.4.4/bin/python#/opt/p255/prod/env001/bin/python#g' /opt/p255/prod/env001/bin/*.py
  4. Copiar as bibliotecas Python de /opt/p255 com o novo ambiente:
    rsync -varHEz /opt/p255/lib/python /opt/p255/prod/env001/lib/
  5. Acesse o diretório para o novo ambiente de instâncias:
    $cd /opt/p255/prod/env001
  6. Criar a instância para o ZEO:
    $./bin/mkzeoinstance.py zeoserver 8050
    Created directory /opt/p255_1351168740/prod/fccr_mercosul-8050-1355317402/zeoserver
    Created directory /opt/p255_1351168740/prod/fccr_mercosul-8050-1355317402/zeoserver/etc
    Created directory /opt/p255_1351168740/prod/fccr_mercosul-8050-1355317402/zeoserver/var
    Created directory /opt/p255_1351168740/prod/fccr_mercosul-8050-1355317402/zeoserver/log
    Created directory /opt/p255_1351168740/prod/fccr_mercosul-8050-1355317402/zeoserver/bin
    Wrote file /opt/p255_1351168740/prod/fccr_mercosul-8050-1355317402/zeoserver/etc/zeo.conf
    Wrote file /opt/p255_1351168740/prod/fccr_mercosul-8050-1355317402/zeoserver/bin/zeoctl
    Changed mode for /opt/p255_1351168740/prod/fccr_mercosul-8050-1355317402/zeoserver/bin/zeoctl to 755
    Wrote file /opt/p255_1351168740/prod/fccr_mercosul-8050-1355317402/zeoserver/bin/runzeo
    Changed mode for /opt/p255_1351168740/prod/fccr_mercosul-8050-1355317402/zeoserver/bin/runzeo to 755
  7. Configure o user e as customizações necessárias, como mount-point na instância ZEO;
  8. Criar as instâncias para o ZSERVER:
    $./bin/mkzopeinstance.py -u admin:admin -s /opt/p255/skel/ -d client1
    $./bin/mkzopeinstance.py -u admin:admin -s /opt/p255/skel/ -d client2
  9. Configure as portas, o effective-user e as customizações necessárias (mount-point, FSS, unicode e outras) nas instâncias ZSERVER;
  10. Permissões: Altere o proprietário dos arquivos para o referido em effective-user;
    $chown -Rv plone client1 client2 zeoserver
  11. Inicie as instâncias:
    $ find -type f -name "*ctl" -print -exec {} start \;
  12. Verfique se as portas configuradas subiram:
    $ LANG=C netstat -naltp |grep LISTEN|grep python
    Se as portas não tiverem subido, execute novamente o comando de permissões, inicio da instancia e verificação.
  13. Pare o ambiente para instalação do plone.
    $ find -type f -name "*ctl" -print -exec {} stop \;
  14. Crie o diretório que conterá os produtos plone 2.5.5:
    $ mkdir Products
  15. Link os produtos do Plone 2.5.5 ao diretório Products criado:
    $ ln -sv /opt/p255/Plone-2.5.5/* Products/
    Aqui coloquei o Plone 2.5.5, na raiz do ambiente, para facilitar a criação de ambientes virtuais e outras instâncias; pode ser realizada com a descompactação direta para Products, que ocupará um espaço desnecessário.
  16. Link a instancia do cliente1 ao Product do ambiente virtual:
    $ cd /opt/p255/prod/env001/client1/

    $ rm -fr Products/

    $ ln ../Products/
  17. Link a instancia do cliente2 ao Product do ambiente virtual:
    $ cd /opt/p255/prod/env001/client2/

    $ rm -fr Products/

    $ ln ../Products/
  18. Neste ponto é para o ambiente estar totalmente funcional, reinicie o ambiente virtual e comece a desfrutar os beneficios.
    $ find -type f -name "*ctl" -print -exec {} restart \;

Comentários