CMS Plone 4.1.6 com invólucro Virtualenv + Buildout + Mount Point + BLOB Storage + Unicode UTF-8

O Plone está entre os CMS com menor índice de falhas de segurança, possui várias funcionalidades e técnicas que podem ser comparadas com outros CMS.

[ Hits: 19.019 ]

Por: Ricardo Brito do Nascimento em 06/08/2012 | Blog: http://brito.blog.incolume.com.br


BLOB Storage



O Binary Large OBject, identificado por seu acrônimo, BLOB, são tipicamente identificados por imagens, áudio ou outros objetos multimídia de grande volume.

Usualmente, as Base de Dados não suportam BLOBs. Este pacote é um complemento para o Plone, a partir da release Plone 3.0.4, que permite a integração de BLOB com ZODB 3,8; possibilitando que os dados binários sejam geridos pelo ZODB, mas separadamente do seu habitual FileStorage (Data.fs) de armazenamento para o banco de dados.

Isto tem várias vantagens, sobretudo, uma redução real do FileStorage (Data.fs) e melhor desempenho tanto das CPU's, quanto em otimização de memória RAM.

O Zope trabalha com BLOB's, através do pacote plone.app.blob, este pacote substitui a função executada pelo FileSystemStorage (FSS), configurado pelo buildout em plone 3, através do "recipe=iw.recipe.fss", descontinuado na versão 4 do Plone.

Instalação

A instalação através do buildout, é bem simples, basta acrescentar o pacote plone.app.blob, nas sessões "eggs" e "zcml" da diretiva buildout, como abaixo:

[buildout]
[..]
eggs =
     Plone      plone.app.blob [..]
zcml = plone.app.blob


Este procedimento não é necessário a partir do Plone 4.1.4, que já vem com o plone.app.blob-1.5.1, instalado e necessitando apenas a sua configuração pertinente.

Configuração

O BLOB Storage, também possui duas modalidades de configuração, Stand Alone(Single) e ZEO.

Seguindo o Escopo, abaixo a configuração para o modo ZEO. No arquivo base.cfg, localize o trecho abaixo:
   [chown-zeo]
   # This recipe is used to set permissions for root mode installs
   # For options see http://pypi.python.org/pypi/plone.recipe.command
   recipe = plone.recipe.command
   command =
       echo Dummy references to force this to execute after referenced parts
       echo ${backup:location} ${unifiedinstaller:sudo-command}
       chmod 600 .installed.cfg
       touch ${buildout:directory}/var/zeoserver/zeoserver.log
       find ${buildout:directory}/var -type d -exec chmod 700 {} \;
       chmod 744 ${buildout:directory}/bin/*
       chmod 755 ${buildout:directory}/bin/python
       mkdir -pm 755 ${buildout:directory}/{products,src}
       chown -R ${buildout:effective-user} ${buildout:directory}/var
   update-command = ${chown-zeo:command}

Altere o trecho, acrescentando as linhas 116 e 117, como abaixo:

[chown-zeo]
[..]
    chmod 744 ${buildout:directory}/bin/*     chmod 755 ${buildout:directory}/bin/python     mkdir -pm 755 ${buildout:directory}/{products,src}

    mkdir -pm 755 ${buildout:directory}/var/blobstorage/mp00{1,2,3}bd/tmp     chown -R ${buildout:effective-user} ${buildout:directory}/var update-command = ${chown-zeo:command}


Esta modificação neste trecho, tem a finalidade de gerar os diretórios ao executar o buildout.cfg, criando os respectivos diretórios, para os 3 Mount Points que serão criados:
  • /opt/p416/app/env001/var/blobstorage/mp001bd
  • /opt/p416/app/env001/var/blobstorage/mp002bd
  • /opt/p416/app/env001/var/blobstorage/mp003bd

Agora, para configurar o blobstorage, é necessário alterar tanto a configuração do Zope Server, quanto do Zope Client.

Na sessão zeo-conf-additional, localize o trecho:
  zeo-conf-additional =
      <filestorage mp001bd>
         path ${buildout:directory}/var/filestorage/mp001BD.fs
      </filestorage>

Acrescente a linha 100, conforme abaixo, referenciando o diretório do blobstorage acrescentado na sessão [chown-zeo].

zeo-conf-additional =
   
      path ${buildout:directory}/var/filestorage/mp001BD.fs
      blob-dir ${buildout:directory}/var/blobstorage/mp001bd
   


Na sessão zope-conf-additional, localize o trecho:
[client1]
[...]
   zope-conf-additional =
        <zodb_db mp001bd>
          mount-point /mp001bd
          cache-size 5000
         <zeoclient>
             name mp001bd
             server ${buildout:zeo-address}
             storage mp001bd
             var ${buildout:directory}/var
         </zeoclient>      
        </zodb_db>

Altere o trecho para:

zope-conf-additional =
        
         mount-point /mp001bd
         cache-size 5000
         
              blob-dir ${buildout:directory}/var/blobstorage/mp001bd
             shared-blob-dir on
              name mp001bd
             server ${buildout:zeo-address}
             storage mp001bd
             var ${buildout:directory}/var
         
        


Salve, feche e execute novamente os comandos abaixo novamente.

# ./bin/buildout -v -t 30
# ./bin/buildout -v -t 30
# ./bin/plonectl stop
# ./bin/plonectl start


Unicode UTF-8

O Unicode UTF-8 serve para evitar erros de codificação na língua portuguesa.

Para implementá-lo, basta adicionar o trecho abaixo no base.cfg.

[unicode]
recipe = plone.recipe.command
update-command = ${unicode:command}
command =
    cat > ${buildout:directory}/lib/python2.6/site-packages/sitecustomize.py << EOF
    import sys
    sys.setdefaultencoding('utf-8')
    EOF


Salve, feche e execute novamente o buildout.

# ./bin/buildout -v -t 30

Página anterior     Próxima página

Páginas do artigo
   1. Introdução - Escopo - Dependências
   2. PZP - Virtualenv - Buildout
   3. Mount point
   4. BLOB Storage
   5. Desfecho, arquivos fontes e referências
Outros artigos deste autor

Encapsulamento de Apache com chroot

Configurando Subversion

Conexão com chaves assimétricas sem uso de senha em servidor sshd

Instalação Plone 2.5.5 com módulos customizados

Vim com corretor ortográfico em pt_BR/es_ES/en_US

Leitura recomendada

Python - Brincando com arquivos

Escreva poemas com a sua linguagem de programação

Utilizando o Python como calculadora

FreeBSD + Zope/Plone, uma idéia frustrante?

Instalação Plone 2.5.5 com módulos customizados

  
Comentários
[1] Comentário enviado por rony_souza em 08/08/2012 - 15:56h

Muito bom o artigo, parece ser uma ótima ferramenta.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts