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.031 ]

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


Mount point



O Moint Point não necessita de instalação, pois é apenas um recurso de configuração do ZODB (Zope Object Data Base), em modo ZEO (Zope Enterprise Objects), que permite utilização de múltiplos arquivos ".fs", na mesma instância.

O ZEO com Mount Point ativado, funciona como um SGBD (Sistema Gerenciador de Banco de Dados), que gerencia acessos concorrentes, a múltiplas bases de dados em um SGBD relacional, tais como PostgreSQL, Oracle, MySQL e MSSQL Server.

No artigo: Brito: Plone 3.3.5 + buildout + mount point, destaquei onde deve ser modificado no arquivo buildout.cfg, e algumas premissas que deve ser contempladas, ou melhor tomadas por regras.

Entre as premissas, destaca-se usar algo que identifique a aplicação adequadamente, e nomes com as regras abaixo, que funcionam com louvor.
  • Letras minúsculas (caixa baixa);
  • Não utilizar caracteres especiais;
  • Não utilizar traço(-).

Vantagens

Como toda solução, há vantagens e desvantagens. A vantagem em relação à configuração sem Mount Point, está na hora de recuperar o backup de apenas uma das aplicações, que neste caso, é pontual, e bastante facilitada com o repozo, aplicação que já compõe a estrutura.

Minimiza o tempo de ociosidade dos processos PZP, pois uma instancia serve vários Plone sites.

Desvantagens

Realizar o backup individual em cada arquivo.

Configuração

Diferentemente do Plone 3, o Plone 4 possui uma gama de novos arquivos, e uma nova estrutura de configuração, e as alterações para Mount Point ZEO, deverão ser realizadas no arquivo "base.cfg".

# vim base.cfg

No trecho do [zeoserver], aproximadamente na linha 81, como segue abaixo:

[zeoserver]
# Use this section to install and configure a Zope
# Enterprise Objects server.
# For options see http://pypi.python.org/pypi/plone.recipe.zeoserver

recipe = plone.recipe.zeoserver
zeo-address = ${buildout:zeo-address}
# if we try to start as root, Zope will switch to the user below
effective-user = ${buildout:effective-user}
# Put the log, pid and socket files in var/zeoserver
zeo-log = ${buildout:directory}/var/zeoserver/zeoserver.log
pid-file = ${buildout:directory}/var/zeoserver/zeoserver.pid
socket-name = ${buildout:directory}/var/zeoserver/zeo.zdsock
blob-storage = ${buildout:directory}/var/blobstorage
# You may also control the environment variables for the zeoserver.
environment-vars = ${buildout:environment-vars}


Acrescenta-se a diretiva "zeo-conf-additional" ao final da sessão, para incrementar o filestorage do ZEO, como abaixo.

[zeoserver]

eggs = tempstorage

zeo-conf-additional =

path ${buildout:directory}/var/filestorage/mp001BD.fs



path ${buildout:directory}/var/filestorage/mp002BD.fs



path ${buildout:directory}/var/filestorage/mp003BD.fs


%import tempstorage

name temporary storage for sessioning


No trecho do [client1], aproximadamente na linha 129, como segue abaixo:

[client1]
# Use this section to install and configure a Zope
# client instance.
# For options see http://pypi.python.org/pypi/plone.recipe.zope2instance
# Additional clients are a

recipe = plone.recipe.zope2instance
zeo-client = true
zeo-address = ${zeoserver:zeo-address}
# The line below sets only the initial password. It will not change an
# existing password.

user = ${buildout:user}
# if we try to start as root, Zope will switch to the user below
effective-user = ${buildout:effective-user}
\ http-address = ${buildout:http-address}
blob-storage = ${zeoserver:blob-storage}
shared-blob = on
# change debug-mode to "on" to run in development mode
debug-mode = ${buildout:debug-mode}
# change verbose-security to "on" for detailed security
# errors while developing

verbose-security = ${buildout:verbose-security}
deprecation-warnings = ${buildout:deprecation-warnings}
# Put the log, pid, lock files in var/client1
event-log = ${buildout:directory}/var/client1/event.log
z2-log = ${buildout:directory}/var/client1/Z2.log
pid-file = ${buildout:directory}/var/client1/client1.pid
lock-file = ${buildout:directory}/var/client1/client1.lock

# If you want Zope to know about any additional eggs, list them here.
# e.g. eggs = ${buildout:eggs} my.package

eggs = ${buildout:eggs}

# If you want to register ZCML slugs for any packages, list them here.
# e.g. zcml = my.package my.other.package

zcml = ${buildout:zcml}

products = ${buildout:directory}/products

# You may also control the environment variables for the instance.
environment-vars = ${buildout:environment-vars}


Acrescenta-se a diretiva "zope-conf-additional" ao final da sessão, para incrementar o filestorage do ZEO, como abaixo.

[client1]

zope-conf-additional =
           
          mount-point /mp001bd
          cache-size 5000
          
              name mp001bd
              server ${buildout:zeo-address}
              storage mp001bd
              var ${buildout:directory}/var
                 
         
          
         
          mount-point /mp002bd
          cache-size 5000
           
              name mp002bd
              server ${buildout:zeo-address}
              storage mp001bd
              var ${buildout:directory}/var
                 
         
          
         
          mount-point /mp003bd
          cache-size 5000
           
              name mp003bd
              server ${buildout:zeo-address}
              storage mp003bd
              var ${buildout:directory}/var
                 
         
          
 zodb-temporary-storage =
         
             
               server ${buildout:zeo-address}
               storage temp
               name zeostorage
               var ${buildout:directory}/var
             
             mount-point /temp_folder
             container-class Products.TemporaryFolder.TemporaryContainer
         


Salve feche o arquivo, e execute o buildout novamente, e a sequência seguinte:

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


Agora, no navegador:
  1. Acesse: http://ip.do.serv:8101/manage
  2. Entre com o usuário e senha (admin e admin);
  3. Localize a combobox com o texto ATContentTipes tool;
  4. Nesta combobox, selecione ZODB Mount Point;
  5. Na página seguinte: Add ZODB Mount Points, selecione os Mount Points desejados e clique no botão: Create selected mount points;
  6. Com esta ação será criado um diretório na raiz do ambiente, o qual mapeia a estrutura configurada anteriormente.

Obs.: A opção restart, pode não funcionar adequadamente, por esta razão, recomendo executar o stop e start, nos passos 3 e 4.

Se por ventura não aplicar a mudança, ou demorar demasiadamente, suba uma das instancias em modo foreground:

./bin/client1 fg

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

Gerenciando certificados A1 fornecidos pelo ICB-Brasil no navegador Chrome sobre Linux

Formatando exibição de datas no Linux

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

Instalação Plone 2.5.5 com módulos customizados

Leitura recomendada

Instalação Plone 2.5.5 com módulos customizados

Python - Brincando com arquivos

Instalando um servidor Zope/Plone

Utilizando o Python como calculadora

Gerenciando registros em banco de dados com Zope

  
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