Fase III Iteração III Sistema de Backup e Ajuda 1) Introdução O backup é um dos sistemas mais importantes a serem implementados pois protege o bem maior da empresa, os dados. Se alguma falha ocorrer na base de dados, ou se eles forem perdidos, é possível recuperá los através do sistema de backup. Pensando nesta importância, este relatório aborda sobre a implementação do sistema de backup e sua configuração pelo administrador do Portal da Casa. O relatório também tratará sobre o sistema de ajuda que auxilia o administrador a configurar o Portal Modelo adequando o às suas configurações e as alterações realizadas no decorrer do desenvolvimento. 2) Sistema de backup O produto ILPortalCasas foi desenvolvido com o framework usado para criar novos tipos de conteúdo para Zope e Plone, o Archetypes. O produto quando instalado automatiza a configuração do Portal Modelo, fazendo com que o administrador só tenha que adequá lo às configurações da sua Casa. Nos capítulos seguintes serão apresentados o sistema de backup e implementação da rotação dos logs do Zope. 2.1) Pack e Backup do Data.fs, backup dos arquivos de configuração e conteúdo do diretório Products O sistema de backup é um dos serviços oferecidos pelo produto. Através de sua instalação é criado um diretório na raiz da instância, chamado backup, conforme mostra a Figura 1, nele serão armazenados os dados backupeados, que serão: Data.fs compactado; Cópia do arquivo de configuração do Zope, zope.conf; Arquivo com a lista dos produtos que estão no diretório Products da instância, Arquivos de log compactados, abordados no capítulo seguinte.
Figura 1 Diretório de backup no File System Criará, também, uma pasta na raiz do portal chamada scripts_backup, com três External Methods, cujos códigos estão em ILPortalCasas/Extensions/BackupPortalModelo.py. Os métodos executados representam: backupfile: Faz o backup do arquivo de configuração do Zope, que encontra se em INSTANCE_HOME/etc/zope.conf e do conteúdo do diretório INSTANCE_HOME/Products dentro do diretório backup, renomeando os para bkp_zope.conf.txt e bkp_products.txt. respectivamente; packdb: Compacta a base do Zope, Data.fs, criando o arquivo Data.fs.old, movebackup: Compacta o arquivo Data.fs.old, renomeia o para Data.fs+data_da_compactacao e o envia para o diretório backup. Nota: Vale salientar que o diretório backup servirá apenas de armazenamento temporário destes dados, sendo um ponto de partida. É recomendado que cada Casa tenha seu próprio sistema de backup através da cópia dos dados do diretório backup em fita, ou envie os para um servidor de backup. Para que estas tarefas sejam realizadas é preciso agendá las com hora, minutos, dias, meses e dias da semana. O agendamento das tarefas são realizadas pelos produtos ZopeScheduler e TimerService, como mostra a Figura 2. Estes produtos funcionam como se estivesse agendado alguma tarefa com a ajuda do cron da máquina. Para que ele execute a tarefa é preciso indicar que External Method vai ser executado e quando. No exemplo da Figura 2 temos o seguinte: /nome_da_instancia/scripts_backup/packdb: Será executado nos dias 2,3,4 e 5 de novembro, nos dias da semana Quarta (3), Quinta (4), Sexta (5), Sábado (6), às 8:00 da manhã. /nome_da_instancia/scripts_backup/movebackup: Será executado dias 2,3,4 e 5 de novembro, nos dias da semana Quarta (3), Quinta (4), Sexta (5), Sábado (6), às 8:40 da manhã. /nome_da_instancia/scripts_backup/backupfie: Será executado dias 2,3,4 e 5 de novembro, nos dias da semana Quarta (3), Quinta (4), Sexta (5), Sábado (6), às 8:20 da manhã. Nota: A Figura 2 mostra somente um agendamento fictício. No produto foi implementado o agendamento real onde o pack, backup do Data.fs e dos arquivos rodam três vezes por semana, todas as segundas, quartas e sextas, das 22 às 23 horas.
Figura 2 Agendamento das tarefas Na tela de configuração é possível remover o agendamento da tarefa e criá lo novamente escolhendo novos dias, horários para o backup dos dados. É necessário salientar que o agendamento do pack (packdb) e backup do Data.fs (movebackup) sejam realizados no mesmo dia e que o horário do pack seja bem anterior ao do backup do Data.fs. Porque somente depois que o Data.fs.old for gerado é que o seu backup deve ser realizado. 2.2) Rotação de log Os arquivos de log são importantes porque neles estão contidos os erros gerados pelo Portal que podem ser corrigidos. Entretanto se os arquivos de log não sofrerem rotação, ou seja, não forem apagados e recriados, irão crescer infinitamente. A instância Zope possui um diretório chamado log, que armazena os arquivos Z2.log e event.log. Estes arquivos armazenam os logs de todos os requests do Portal e o log de todos os erros gerados, respectivamente. Por isto recomenda se que sejam feitos backups destes arquivos, e para
realizar esta tarefa será utilizada a ferramenta logrotate. O que é o logrotate? Nos sistemas Unix existe uma ferramenta chamada logrotate que faz a administração de qualquer arquivo de log. Ele já vem instalado no sistema e encontra se no diretório /etc. Normalmente o logrotate é rodado pelo cron, com tarefas diárias, semanais ou mensais, porém é possível o uso direto através do comando logrotate. Abaixo será mostrado como proceder para realizar a rotação destes logs. Observando que para estas tarefas é necessário ter permissão de root. Como root, diretório /etc/logrotate.d, tem que ser criado um arquivo chamado zope com o código mostrado abaixo. Apenas tem que ser trocada a expressão path_para_sua_instancia para o caminho onde encontra se a instância Zope. compress /path_para_sua_instancia/log/z2.log /path_para_sua_instancia/log/event.log { rotate 5 weekly olddir /path_para_sua_instancia/backup/ } /path_para_sua_instancia/var/z2.log { rotate 5 weekly postrotate /sbin/kill -USR2 `cat /path_para_sua_instancia/var/z2.pid` endscript } /path_para_sua_instancia/var/event.log { rotate 5 weekly postrotate /sbin/kill -USR2 `cat /path_para_sua_instancia/var/event.pid` endscript } Este script comprime e faz a rotação dos logs semanalmente, quando o arquivo ultrapassa 100k. Move o arquivo zipado gerado para o diretório backup, onde encontram se os outros arquivos já backupeados. Também diz ao Zope para restartar os arquivos quando terminar. Sempre é bom lembrar que o diretório backup é somente um diretório que guarda os arquivos que devem ser backupeados em fita ou em um servidor de backup. Não é recomendado deixar o backup dos arquivos na mesma máquina que está rodando o portal. 3) Sistema de ajuda Quando o produto for instalado trará vários serviços configurados por padrão. Como
explicado no relatório III, Iteração I, há como não disponibilizar serviços que não serão utilizados ou apenas configurar dados da Casa no Portal. O sistema de ajuda abordará itens de como configurar Webmail para os usuários do portal, adequar as cores de acordo com as características da Casa Legislativa, colocar o banner e logo da Casa, como retirar portlets ou movê las de coluna, configuração/agendamento do backup, troca de propriedades de email e responsável pela administração do portal, gerenciamento de Portlets com o CMFPublicator, alimentar o site com notícias disponibilizadas pela ferramenta RSS. Nota: Estas configurações poderão ser realizadas apenas pelos administradores do portal. Para ver os arquivos da Ajuda sobre as configurações do produto, deve se acessar o link Preferências, na caixa Preferências, a tela abaixo, representada pela Figura 3, será apresentada. O link de acesso á ajuda (Ajuda Configuração ILPortalCasas), redirecionará o administrador para a tela do sistema de ajuda mostrada na Figura 4. Figura 3 Tela de Preferências e Configurações do Plone para administradores A navegação pelos arquivos de ajuda pode ser realizada através das abas ou pelos links da tela inicial do sistema. Cada item contém um texto explicativo e imagens para melhor entendimento sobre a configuração a ser realizada pelo administrador. Estes arquivos de ajuda de configuração estão acessíveis somente ao administrador do site, pois referem se à configurações do Portal e não gerenciamento do conteúdo.
Figura 4 Tela do sistema de ajuda 4) Novas implementações O Portal Modelo está em constante desenvolvimento. Sentindo a necessidade de facilitar o trabalho do administrador do portal foi acrescentado ao produto uma seção de Ajuda, explicada no capítulo anterior. Além desta, foi integrado ao bundle do produto os produtos ATPhoto, ATVideo, ATAudio, para gerenciamento de álbum de fotos, arquivos de vídeo e áudio, respectivamente. Optou se por estes produtos pelo fato de seus arquivos serem armazenados no File System e não no ZODB, além de serem fáceis de gerenciar e suas dependências já acompanharem o produto. Abaixo estão listadas as ações realizadas na instalação do produto. As novas ações implementadas estarão em itálico e negrito para melhor visualização. Configura configlet de Ajuda no Painel de Controle do Plone, sendo acessado na seção de Configurações do Plone; Configura o plone_workflow para os seguintes tipos de conteúdo: CalendarX, ATAudio, Recordings, ATPhoto, ATVideo, ATAudioFolder, ATPhotoAlbum; Substitui o front page página inicial do Plone, por um Page Template que possui Caixas de notícia destaque e últimas notícias publicadas no Portal; Configura as pastas e subpastas definidas na Taxonomia, apresentada no primeiro relatório entregue;
Configura os tipos de conteúdo que o usuário pode adicionar em cada pasta da Taxonomia; Configura o estado no workflow de cada pasta, imagem, link, adicionado pelo produto; Configura os tipos de conteúdo evento e notícia para aparecerem nas pastas Eventos e Notícias, respectivamente; Configura para que, na raiz do site, possam ser inseridos somente os tipos Folder e Ombudsman; Configura a pasta SAAP para quando acessá la o usuário seja redirecionado para a página de login do sistema. Foi configurado para ser adicionado uma Janela para mostrar esta tela. Esta pasta aparece somente para os usuários logados no site; Configura as caixas e propriedades que aparecerão quando o produto for instalado, na aba Properties do Portal; Configura actions, no portal_actions, que aparecerão no menu de links de atalho (Página Inicial, Ouvidoria, SAAP, SAAL, Webmail, Contato, Mapa do Site e Acessar); Configura o gerenciador de CSS, no portal_cssmanager, possibilitando que o administrador possa alterar as cores do layout do Portal sem ter que logar na ZMI do mesmo; Configura para que as áreas de grupos não seja criada quando os membros logarem no portal; Adiciona pasta para armazenar os scripts de backup; Configura propriedades do membro no portal_memberdata como sexo, idade, endereco, bairro, cidade, estado, fone residencial; Traduz os tipos que podem ser atribuídos a um evento (Encontro, Convenção, Reunião, Evento Social e Trabalho); Adiciona uma nova propertysheet no portal_properties; Configura propriedades e valores na nova propertysheet; Configura propriedades do site_properties e navtree_properties, como linguagem default, formato de hora e data, id's e tipos que não serão listados, criação de uma nova Property Sheet e configuração de novas propriedades; Configura caixas de Utilidades, Banners, Últimas Notícias e Destaques com o CMFPublicator; Popula caixa de banner com o CMFPublicator, adicionando links e imagens ao instalar o produto; Popula a caixa de utilidades com o CMFPublicator, adiciona links ao instalar; Configura os seguintes campos na aba Properties da raiz do Portal: título, email, nome do administrador; Configura skins no portal_skins e na aba Properties: ILPortalCasas (imagens) e ILPortalCasas_public (templates); Configura as seguintes dependências do Produto ILPortalCasas e as instala: Archetypes, Ploneboard, windowz, CMFPublicator, CalendarX, CSSManager, PloneGazette, PloneImapClient, PlonePopoll, CMFSin, Ombudsman, ATMediaFile, ATAudio, ATPhoto, ATVideo; Configura CustomizationPolicy para o produto ao adicionar um site Plone; Configura Caixas de Navegação, Preferências, Boletim Eletrônico, Syndication, Alterações Recentes, Calendário, Revisão, Enquete, Utilidades, Previsão do Tempo; Configura o produto CMFSin para pegar notícias do Portal do Interlegis; Configura os workflows do Sistema de Ouvidoria, Configura o workflow do produto ILPortalCasas; Adiciona pasta para Enquetes e configura para que sejam somente adicionadas enquetes nela; Adiciona pasta para Newsletter e configura para que sejam somente adicionadas newsletters nela; Adiciona pasta Fórum e configura para que sejam somente adicionados fóruns nela;
Adiciona pasta Webmail; Adiciona pasta SAAL; Adiciona pasta Ouvidoria; Adiciona pasta backup na raiz da instância para que sejam realizados os backups dentro desta pasta; Configura external_methods para fazer backup do zope.conf, diretório Products, para mover backup do Data.fs, para fazer pack do Data.fs; Configura ZopeScheduler para agendar os processos de backup; Configura PloneImapClient para que somente o administrador possa configurar as opções para o Webmail do usuário; Implementado método de uninstall, fazendo com que o produto possa ser reinstalado a partir da desinstalação; Criado diretório relatórios, dentro do diretório ILPortalCasas/docs, para armazenar os relatórios entregues; Movidos arquivos INSTALL.txt e DEPENDENCIES.txt para o diretório docs; Criado arquivo BACKUP.txt dentro do diretório docs para orientar o administrador sobre o sistema de backup e sua configuração, Implementado rotação de logs do Zope. Nota: As alterações explicitadas neste relatório já foram comitadas nos relatórios anteriores (I e II). Eles encontram se dentro do produto ILPortalCasas na pasta docs, cuja URL é http://colab.interlegis.gov.br/browser/ilportalcasas/trunk/docs/. Nota 2: O código fonte do produto ILPortalCasas encontra se na URL http://colab.interlegis.gov.br/browser/ilportalcasas/trunk/