Manutenção de portais¶
O processo de manutenção dos portais deve ser realizado periodicamente é inclui, no mínimo, as seguintes operações básicas:
- monitoramento do consumo de CPU
- monitoramento do consumo de memória
- monitoramento do espaço em disco
- revisão dos logs do servidor web e de eventos do Zope
- compactação do banco de dados
- criação de backups do banco de dados
- purga de revisões do histórico de versões
- atualização de componentes
Performance¶
Manter a performance de um servidor de produção passa por ter um número suficiente de instâncias (ou threads) e objetos cacheados no servidor Zope. Não existe uma solução única e cada sistema vai precisar de ajustes específicos e monitoramento constante.
Como regra geral um servidor de produção deve ter um consumo baixo de CPU e alto de memória, deixando sempre espaço livre para buffers e page cache do sistema operacional. Um servidor de produção não deveria utilizar nunca memória swap.
Um servidor de produção deve ter também espaço livre em disco para armazenar tanto o banco de dados, quanto seus backups.
Manutenção do banco de dados¶
A configuração de produção inclui scripts para gerenciar o processo de compactação do banco de dados e backups:
Para compactar o banco de dados utilize:
$ bin/zeopack
Para criar um backup utilize:
$ bin/backup
Em ambientes de produção é recomendado agendar backups diários e compactações semanais utilizando o comando crontab.
Gerenciamento de versões¶
O Plone suporta versionamento de conteúdo por padrão. O versionamento armazena uma cópia adicional do conteúdo cada vez que este tem sido modificado. O número de versões máximas armazenadas é configurável, mas por padrão é infinito e isso pode representar um problema em alguns casos. No IDG quase todos os tipos de conteúdo tem o versionamento habilitado.
Para gerenciar o histórico de versões de forma simples é necessário instalar o complemento collective.revisionmanager. Adicione a seguinte linha no seu buildout de produção:
[buildout]
eggs +=
collective.revisionmanager
Na “Configuração do Site” selecione “Complementos” e instale o collective.revisionmanager. Um novo item chamado “Gerenciar revisões” será disponibilizado.
O configlet tem duas telas: “Configurações” e “Listar históricos”.
Note
O processo de gerenciamento de versões pode ser demorado em dependência do tamanho do banco de dados. Acesse o configlet diretamente na porta de instância de Plone sem passar por servidores intermediários que possam abortar as requisições devido a timeouts.
Para gerenciar corretamente as revisões é necessário primeiramente calcular as estadísticas. Selecione o botão “Recalcular estadísticas” e espere; após alguns minutos as estadísticas estarão disponíveis
Ao selecionar “Listar históricos” você verá uma tabela com o histórico de todas as versões do conteúdo no site. Ordene por tamanho para localizar conteúdo que poderia estar ocasionando problemas.
Note
Versões do IDG anteriores à 1.2 apresentavam um bug que ocasionava a criação de milhões de blobs vazios no file system do ZEO Server quando o versionamento era utilizado (ver collective.cover#532).
Note
Versões do IDG anteriores à 1.5.1 apresentavam um bug que ocasionava o crescimento exponencial dos objetos e do banco de dados quando o versionamento era utilizado (ver collective.cover#765).
Warning
O tipo de conteúdo Capa (collective.cover.content
) precisa do versionamento só quando a edição é realizada utilizando o procedimento de checkout/checkin.
Se recomenda apagar regularmente o histórico de versões dos objetos para evitar seu crescimento desnecessário (ver collective.cover#828).
Como último passo, selecione “Apagar órfãos” para eliminar todos os históricos sem cópia de trabalho.
Recalcule as estadísticas para comparar.
Atualização de componentes¶
Todo o código fonte do IDG e dos complementos utilizados se encontra disponível nos repositórios armazenados no GitHub, e foi liberado utilizando uma licencia GPLv2.
Para desenvolver novas funcionalidades ou corrigir problemas em complementos utilizados se recomenda seguir algumas boas práticas:
- consulte a documentação para desenvolvedores Plone
- verifique se a funcionalidade que precisa adicionar não foi implementada já em algum complemento existente que possa ser utilizado diretamente ou melhorado; não tente reinventar a roda
- dentro do possível, limite o escopo da nova funcionalidade desejada para conseguir uma solução geral que possa ser utilizada fora do IDG;
isso garantirá o sucesso futuro da funcionalidade ou complemento
- verifique se o problema que precisa corrigir foi já relatado com anterioridade no issue tracker do complemento envolvido
- verifique se existe uma nova versão do complemento que está utilizando que solucione o problema que está enfrentando
- relate o problema no issue tracker do complemento com detalhe suficiente para os mantenedores do pacote poder reproduzir e ajudar na solução
- nunca resolva um problema em forks privados ou você correrá o risco de ter que manter esse fork para sempre
- utilize a API do Plone e as convenções de codificação da comunidade
- implemente testes unitários e de integração
- implemente integração contínua utilizando serviços como Travis ou similares
- documente seu trabalho
- dentro do possível, colabore com a solução abertamente;
não esqueça, você está utilizando software livre e o processo de manutenção é de ida e volta: desfrute e partilhe