quinta-feira, 14 de janeiro de 2010

Como separar um data.fs para cada site no Zope

Muita gente que começa a trabalhar com Plone e Zope tem problemas com o banco de dados unificado e quer saber como separar um banco de dados para cada site que está no servidor por exemplo. Veja abaixo como se faz. É bem simples.

   A separação do arquivo de banco de dados do Zope (data.fs) em um arquivo por site é interessante. Primeiro, você consegue saber quanto espaço cada site ocupa com muita facilidade. Você pode fazer um pack e limpar os objetos do historico sem a necessidade de apagar o histórico dos outros sites. Em caso de restauração de backup, você não perde informações de todos os sites. Apenas de um.

    O conceito envolvido na separação é o de ponto de montagem, como no linux. Você vai dizer para o zope que tudo que for colocado naquele ponto de montagem será armazenado dentro de um certo arquivo.

    A primeira coisa a fazer é abrir o arquivo zope.conf que está dentro de INSTANCE_HOME/etc. Dentro dele, procure pelo texto "". Deve estar próximo ao final do arquivo. Em seguida, logo abaixo, adicione o código como o exemplo abaixo

<zodb_db NOME_SITE1>
# Armazenamento do NOME_SITE2
<filestorage>
      path $INSTANCE/var/NOME_SITE3.fs    
</filestorage>    
mount-point /NOME_SITE4
</zodb_db>

Repare que eu coloquei NOME_SITE1 até 4. Normalmente, coloco o mesmo nome em todos os lugares, mas isso não é obrigatório. Apenas facilita a vida na hora de identificar as coisas.

NOME_SITE1 é o que vai aparecer no ZOPE. O nome do armazenamento na hora de criar o ponto de montagem.

NOME_SITE2 é apenas um comentário

NOME_SITE3 é o nome do arquivo que vai armazenar seus dados

NOME_SITE4 é o ponto de montagem em sí. A pasta onde você terá que gardar seu site e tudo referente a ele. Deste ponto em diante.

Altere seu arquivo de configuração, envie para o servidor e reinicie o zope. Como exemplo, vou criar um data.fs para um site chamado WICS.

Acesse a ZMI e escolha a opção de adicionar novo Mount Point, conforme a imagem a seguir:


Depois disso você será enviado para uma outra tela que mostrará quais são os data.fs que estão prontos para serem criados. Você seleciona os que desejar e clica em "Create Selected Mount Points". Veja a imagem abaixo para maiores detalhes.


No meu caso, foi criada uma pasta WICS na raiz do meu servidor zope. Tudo que for criado dentro desta pasta ou eu seus sub-diretórios também será armazenado dentro do data.fs exclusívo do ponto de montagem.

Se você tentar mover um site que esteja fora desta pasta para dentro dela, o site será movido, mas continuará no data.fs antigo. Para mover um portal de um data.fs para outro é necessário exportá-lo e importá-lo novamente dentro do local desejado.