1. 2012
Administração de
infraestrutura
Zope/Plone
Apostila para treinamento presencial
2. Administração de infraestrutura Zope/Plone
Este material é de livre uso e divulgação desde que preservada as citações de suas fontes.
As autorizações devem ser solicitadas para: contato@produtivati.com.br
2
3. Administração de infraestrutura Zope/Plone
CONTROLEde Treinamento
Apostila DE VERSÕES ZOPE /Plone
Apostila de treinamento presencial de Zope e Plone – nível 200
Versão Data Autor(es) Alterações
0.1 Apostila Curso Zope/Plone
17/11/2011 deProdutivaTI Criação do documento
0.8 02/01/2012 Produtiva TI Revisão pelo Instrutor
1.0 05/01/2012
Versão 1.1 ProdutivaTI Liberação da versão 1.0
1.1 29/03/2012 Produtiva TI Revisão e ajuste do material
Março de 2012
Agradecimentos:
Lucas Aquino
Tania Moreira
Douglas Soares de Andrade, autor da palestra Otimizando Portais Plone
A comunidade Plone que nos ajudou a produzir este material.
3
4. Administração de infraestrutura Zope/Plone
Sumário
Table of Contents
SOBRE O TREINAMENTO........................................................................................................ 6
CAPITULO 1.............................................................................................................................7
Introdução.......................................................................................................................... 7
CONCEITOS BÁSICOS DO ZOPE/PLONE.........................................................................10
PYTHON.........................................................................................................................12
ZOPE..............................................................................................................................13
PLONE ...........................................................................................................................15
ARQUITETURA...............................................................................................................16
REQUISITOS PARA INSTALAÇÃO DO PLONE 4...............................................................17
PACOTES NECESSÁRIOS ................................................................................................19
NESTE CAPÍTULO VOCÊ VIU.......................................................................................... 23
REVISÃO DO CAPÍTULO 1..................................................................................................25
REVISÃO DO CAPÍTULO 1 (respostas)...............................................................................27
EXERCÍCIOS DO CAPÍTULO 1............................................................................................. 29
Laboratório 1.................................................................................................................... 29
CAPITULO 2...........................................................................................................................30
Introdução........................................................................................................................ 30
INTRODUÇÃO A SEGURANÇA DA INFORMAÇÃO EM ZOPE/PLONE..............................32
GERENCIAMENTO DE USUÁRIOS......................................................................................33
SEGURANÇA.................................................................................................................. 33
PERMISSÕES PADRÃO...................................................................................................35
INTERFACE DE GERENCIAMENTO ZOPE (ZMI).............................................................. 37
4
5. Administração de infraestrutura Zope/Plone
COMO CRIAR UM NOVO USUÁRIO/GRUPO..................................................................... 39
POLÍTICA PARA CRIAÇÃO E MANUTENÇÃO.................................................................. 39
PAPÉIS LOCAIS E COMPARTILHAMENTO..........................................................................41
CONTROLE DE ACESSO POR MEIO DE WORKFLOW......................................................... 43
NESTE CAPÍTULO VOCÊ VIU.......................................................................................... 45
REVISÃO DO CAPÍTULO 2..................................................................................................46
REVISÃO DO CAPÍTULO 2 (respostas)...............................................................................48
Laboratório 02.................................................................................................................. 50
CAPITULO 3..........................................................................................................................52
Introdução........................................................................................................................ 52
OTIMIZAÇÃO DE DESEMPENHO....................................................................................... 54
PARÂMETROS QUE PODEM SER AJUSTADOS............................................................... 54
ZEO................................................................................................................................ 56
VARNISH........................................................................................................................58
plone.app.caching - Políticas de cache.............................................................................61
DESCRIÇÃO DAS POLÍTICAS DE CACHE..........................................................................61
QUANDO APLICAR CADA TIPO DE POLÍTICA.................................................................63
BACKUP e RESTORE.......................................................................................................... 66
REPOZO......................................................................................................................... 68
REVISÃO DO CAPÍTULO 3..................................................................................................70
EXERCÍCIOS DO CAPÍTULO 3............................................................................................. 71
REVISÃO DO CAPÍTULO 3 (respostas)...............................................................................73
Laboratório 3.................................................................................................................... 75
5
7. Administração de infraestrutura Zope/Plone
CAPITULO 1
Introdução
Vamos conceituar todas as ferramentas que serão usadas nesse curso.
Plone, um Sistema Gerenciador de Conteúdo (CMS - Content Management System) livre e
de código aberto, escrito em Python e que roda utilizando o servidor de aplicações Zope.
Seu principal objetivo é facilitar a criação, edição, publicação e distribuição de
informação. Focado no usuário com pouco conhecimento técnico, apresenta uma
plataforma intuitiva.
Zope, um ambiente para a construção e gerenciamento de aplicações Web com foco no
seu conteúdo. Ele interpreta os fragmentos de códigos ZPT e DTML em seus templates e
gera uma saída HTML compreensível para qualquer navegador Web
Python, uma linguagem de programação de alto nível, interpretada, imperativa, orientada
a objetos, de tipagem dinâmica e forte. Atualmente possui um modelo de
desenvolvimento comunitário, aberto e gerenciado pela organização sem fins lucrativos
Python Software Foundation
Além de especificações de instalação, pré-requisitos e sistema operacionais. Sabendo que
para instalar os produtos necessita ter acesso como usuário root e internet.
7
9. Administração de infraestrutura Zope/Plone
o Zope
o Plone
o Python
o Arquitetura
• Requisitos de instalação do Plone 4
o Sistema Operacional
o Hardware
o Pacotes necessários
o Atualizações
9
10. Administração de infraestrutura Zope/Plone
CONCEITOS BÁSICOS DO ZOPE/PLONE
Sistema de Gestão de Conteúdo (SGC) - do inglês Content Management Systems (CMS) é
um sistema gestor de websites, e intranets que integra ferramentas necessárias para gerir
(inserir, editar e excluir) conteúdos on line sem a necessidade de programação de código,
cujo objetivo é estruturar e facilitar a criação, administração, distribuição, publicação e
disponibilidade da informação. Uma boa vantagem em usar o Plone é a grande
quantidade de funções presentes através de complementos (galerias de fotos,
gerenciadores de enquetes, gerenciadores de formulários) que podem ser agregados ao
SGC.
Um CMS é semelhante a um framework (um esqueleto) de website pré-estruturado, com
recursos básicos de: usuabilidade, visualização e administração já prontamente
disponíveis. É um sistema que permite a criação, armazenamento e administração de
conteúdos de forma dinâmica, através de uma interface de acesso via Internet.
10
11. Administração de infraestrutura Zope/Plone
Um CMS permite que a empresa tenha total autonomia sobre o conteúdo e evolução da
sua presença na internet e dispense a assistência de terceiros ou empresas especializadas
para manutenções de rotina. Nem mesmo é preciso um funcionário dedicado
(webmaster), pois cada membro da equipe poderá gerir seu próprio conteúdo,
diminuindo os custos com recursos humanos. A habilidade necessária para trabalhar com
um CMS não vai muito além dos conhecimentos necessários para um usuário de um
simples editor de texto.
Com soluções prontas e totalmente customizáveis reduz o tempo de implementação,
porque permite que o esforço se concentre em soluções específicas e na produção do
layout. É possível construir um site completo, com diversas funcionalidades, sem a
necessidade de desenvolver códigos complexos em linguagem de programação.
Outra facilidade é que possui sistema de workflow, segurança e funções pré-configuradas
e suporte a várias línguas, permitindo que a sua administração seja desmistificada.
Com uma comunidade numerosa, recebe em construção e manutenção, a contribuição de
desenvolvedores em todo o mundo.
Um aspecto importante, é que mesmo sendo uma ferramenta muito intuitiva, o Plone
ainda abre espaço para uma grande customização de sua aparência e estrutura de
navegação. Há a possibilidade de personalizar o site através da escolha de cores, imagens
e posicionamentos de diversos componentes. Ainda, num nível mais avançado, a
utilização do Plone dá conta da implementação de novas funcionalidades por parte de
desenvolvedores de software, que podem ser agregadas a estrutura já existente.
11
12. Administração de infraestrutura Zope/Plone
PYTHON
Python é uma linguagem de programação de alto nível, interpretada, imperativa,
orientada a objetos, de tipagem dinâmica e forte. Foi lançada por Guido van Rossum em
1991. Atualmente possui um modelo de desenvolvimento comunitário, aberto e
gerenciado pela organização sem fins lucrativos Python Software Foundation. Apesar de
várias partes da linguagem possuírem padrões e especificações formais, a linguagem
como um todo não é formalmente especificada. O padrão de fato é a implementação
CPython.
A linguagem foi projetada com a filosofia de enfatizar a importância do esforço do
programador sobre o esforço computacional. Prioriza a legibilidade do código sobre a
velocidade ou expressividade. Combina uma sintaxe concisa e clara com os recursos
poderosos de sua biblioteca padrão e por módulos e frameworks desenvolvidos por
terceiros.
12
13. Administração de infraestrutura Zope/Plone
ZOPE
Zope é um ambiente para a construção e gerenciamento de aplicações Web com foco no
seu conteúdo. Ele interpreta os fragmentos de códigos ZPT e DTML em seus templates e
gera uma saída HTML compreensível para qualquer navegador Web. Ou seja, as páginas
de um servidor Zope são geradas dinamicamente, no momento em que o servidor recebe
o pedido do browser, mesclando esses dois componentes.
O Zope CMF (Content Management Framework) prevê uma plataforma poderosa e
customizavel para construção de aplicações de ger ência de conteúdo com o Zope.
Os objetos que o Zope publica na Web são escritos em linguagem Python e armazenados
em seu banco de dados, orientado a objetos, o ZODB (Zope Object Database).Dessa
forma, tudo o que aparece em um site Zope, como por exemplo, páginas web, imagens,
links ou arquivos, são objetos e armazenados por padrão em banco de dados.
13
14. Administração de infraestrutura Zope/Plone
O Zope é um ambiente bastante amigável e tem características muito importantes que o
fazem se destacar:
• Mapeia e acessa objetos passados na URL do navegador, respeitando as
permissões de segurança e de acesso;
• Armazena as versões antigas de um objeto, o que permite desfazer
alterações, controlar versões de documentos colaborativos e revisões.
• O Zope só interpreta códigos escritos em DTML ou ZPT. O que não estiver
nesses padrões é repassado para o navegador. Isso permite que estruturas
escritas em Javascript, CSS, etc, passam ser utilizadas normalmente.
• Pode ser usado em todas as plataformas: Unix, Linux, Mac OS e em todas
as versões do Window
14
15. Administração de infraestrutura Zope/Plone
PLONE
O Plone é um Sistema Gerenciador de Conteúdo (CMS - Content Management System)
livre e de código aberto, escrito em Python e que roda utilizando o servidor de aplicações
Zope. Seu principal objetivo é facilitar a criação, edição, publicação e distribuição de
informação. Focado no usuário com pouco conhecimento técnico, apresenta uma
plataforma intuitiva.
15
17. Administração de infraestrutura Zope/Plone
REQUISITOS PARA INSTALAÇÃO DO PLONE 4
O Plone 4 possui uma instalação automática que já inclui tudo o que é necessário para
que ele seja executado. O instalador está acessível para download em
http://plone.org/products/plone/releases/ e disponível para os seguintes sistemas
operacionais:
Linux
BSD
Windows
17
18. Administração de infraestrutura Zope/Plone
OS X
É necessário que o servidor onde vai ocorrer a instalação tenha acesso a internet e que o
usuário possua credenciais de administrador na máquina, ou ao menos as seguintes
permissões:
• Acesso ao console de comando
• Permissão para executar serviços e processos no servidor
• Permissão para habilitar portas no servidor
Os requisitos de hardware dependem da quantidade de sites que compõem o portal,
previsão de acessos simultâneos e da infraestrutura de segurança, entretanto para um
portal com 100 acessos simultâneos é necessário que o servidor possua ao menos:
• Processos de 2 núcleos com no mínimo 1.2 GHZ.
• 500 GB de espaço em HD.
• 2 GB de memória RAM
18
19. Administração de infraestrutura Zope/Plone
PACOTES NECESSÁRIOS
Seu ambiente deve estar com o acesso à internet configurado.
[Os comandos a seguir foram criados para o Ubuntu. Pequenas adaptações podem ser
necessárias para outros ambientes]
Para executar os comandos abaixo você precisará ter acesso a privilégios de root.
1. Atualizar a lista de pacotes:
$ sudo aptitude update
2. Instalar as bibliotecas padrões para compilação (gcc e outros, que serão
necessários mais adiante):
19
20. Administração de infraestrutura Zope/Plone
$ sudo aptitude install build-essential
$ sudo apt-get install gcc g++ make
$ sudo apt-get install subversion git
$ sudo apt-get install zlib1g-dev
$ sudo apt-get install python-setuptools
$ sudo apt-get install libjpeg libjpeg-dev libfreetype6 libfreetype6-dev zlib1g-dev
$ python -vv -c "import _imaging"
3. Instalar virtualenv
$ git clone https://github.com/collective/buildout.python OU baixar ZIP no mesmo
endereco
$ cd buildout.python
$ python bootstrap.py
$ bin/buildout -vv
4. Criar o ambiente env(virtualenv)
$ ~/buildout.python/bin/virtualenv26 ~/virtualPy26 --no-site-packages
$ cd ~/virtualPy26/bin
Ativando o virtualenv:
$ source ./activate
(virtualPy26)$
20
22. Administração de infraestrutura Zope/Plone
Acessar o buildout de instalação do Plone 4:
(virtualPy26)$ cd ~/instancia/plone4
(virtualPy26)$ python bootstrap.py
(virtualPy26)$ bin/buildout -vv
Após processo de baixar e instalar os pacotes, iniciar o servico do Zope:
(virtualPy26)$ ~/instancia/plone4/bin/instance fg
note :: Caso não funcione a imagem
(virtualPy26)$ wget http://effbot.org/downloads/Imaging-1.1.7.tar.gz
(virtualPy26)$ tar -zxvf Imaging-1.1.7.tar.gz
(virtualPy26)$ cd Imaging-1.1.7
(virtualPy26)$ python setup.py install
22
23. Administração de infraestrutura Zope/Plone
NESTE CAPÍTULO VOCÊ VIU
• Introdução a:
o Zope e Plone
O Plone é um Sistema Gerenciador de Conteúdo (CMS - Content Management System)
livre e de código aberto, escrito em Python e que roda utilizando o servidor de aplicações
Zope.
o Python
Python é uma linguagem de programação de alto nível, interpretada, imperativa,
orientada a objetos, de tipagem dinâmica e forte. Foi lançada por Guido van Rossum em
1991.
o Arquitetura
23
24. Administração de infraestrutura Zope/Plone
O Plone é um gerenciador de conteúdo, escrito em Python, que roda sob o servidor de
aplicações Zope, utilizando o framework CMF – Content Management Framework.
• Requisitos de instalação do Plone 4
o Sistema Operacional
Linux, Windows e MacOS.
o Hardware
1.2GHz, 2GB RAM e 500GB de HD.
o Pacotes necessários e Atualizações
• Bibliotecas padrões para compilação
• Virtualenv
• PIL
• Zopeskel
24
25. Administração de infraestrutura Zope/Plone
REVISÃO DO CAPÍTULO 1
1) O Plone é:
a. Linguagem de programação
b. Software proprietário para desenvolvimento de sites
c. CMS
d. Servidor de Aplicações
2) O Python é:
a. Linguagem de programação
b. Software proprietário para desenvolvimento de sites
c. CMS
d. Servidor de Aplicações
3) O Zope é:
a. Linguagem de programação
b. Software proprietário para desenvolvimento de sites
c. CMS
d. Servidor de Aplicações
4) O Plone pode ser instalado em (selecione todas as corretas)
a. Windows
b. Linux
c. Mac OS
25
26. Administração de infraestrutura Zope/Plone
d. iOS
5) É correto afirmar que:
a. O Plone é uma linguagem de programação de fácil aprendizagem.
b. O Python é utilizado para fazer gestão de conteúdo
c. O Zope nada mais é do que um framework para desenvolvimento
de sistemas
d. O Zope tem CMF
26
27. Administração de infraestrutura Zope/Plone
REVISÃO DO CAPÍTULO 1 (respostas)
1) O Plone é:
a. Linguagem de programação
b. Software proprietário para desenvolvimento de sites
c. CMS
d. Servidor de Aplicações
2) O Python é:
a. Linguagem de programação
b. Software proprietário para desenvolvimento de sites
c. CMS
d. Servidor de Aplicações
3) O Zope é:
a. Linguagem de programação
b. Software proprietário para desenvolvimento de sites
c. CMS
d. Servidor de Aplicações
4) O Plone pode ser instalado em (selecione todas as corretas)
a. Windows
b. Linux
c. Mac OS
d. iOS
27
28. Administração de infraestrutura Zope/Plone
5) É correto afirmar que:
a. O Plone é uma linguagem de programação de fácil aprendizagem.
b. O Python é utilizado para fazer gestão de conteúdo
c. O Zope nada mais é do que um framework para desenvolvimento
de sistemas
d. O Zope tem CMF
28
29. Administração de infraestrutura Zope/Plone
EXERCÍCIOS DO CAPÍTULO 1
Laboratório 1
1) Criar uma nova instalação da instância do Plone 4, utilizando o virtualenv e
o buildout.
2) Altere o acesso da porta padrão 8080 de acesso HTTP para a porta 8484.
3) Adicionar novo Plone Site com o id: portal_dev
29
30. Administração de infraestrutura Zope/Plone
CAPITULO 2
Introdução
Mostraremos algumas maneiras possíveis para melhorar a segurança do seu Plone site,
além dos tipos de usuários possíveis, adicionando papéis e permissões. Criando grupos e
workflows.
A segurança do Zope/Plone se dá com um bom gerenciamento dos papéis atribuídos,
sendo posto de forma correta para não fugir do controle o manuseio dos conteúdos do
seu Plone site.
O administrador do Plone site deve seguir uma forma melhor distribuída dos seus papéis
e permissões, também criando grupos que são formas convenientes de administrar
papéis (assim como permissões) para uma grande quantidade de usuários
simultaneamente.
Os papéis padrões são: “Member”, “Manager” e “Reviewer”. Existem também alguns
papéis nativos, como “Owner” e “Anonymous” e “Authenticated”.
As permissões mais comuns são “View”, “Modify portal content”, “Access contents
information” e “List folder contents”.
Workflows servem para dois propósitos - representar a evolução de um pedaço de
conteúdo, desde a criação, através dos ciclos de revisão, até o estado final, e para
controlar as permissões para o conteúdo em cada estado.
30
31. Administração de infraestrutura Zope/Plone
Neste Capítulo você verá
• Introdução a:
o Segurança da Informação em Zope/Plone
• Gerenciamento de Usuários:
o Permissões Padrão
o Criar Usuários
o Criar Grupos
o Papéis locais e Compartilhamento
o Controle de acesso por meio de Workflow
31
32. Administração de infraestrutura Zope/Plone
INTRODUÇÃO A SEGURANÇA DA INFORMAÇÃO EM ZOPE/PLONE
O Plone utiliza uma combinação de permissões de baixo nível, papéis, papéis locais e
fluxos de trabalho (sistema de workflow) para gerenciar as permissões dos objetos.
Entender isso ajudará a gerenciar como e por quem seu site Plone é acessado.
32
33. Administração de infraestrutura Zope/Plone
GERENCIAMENTO DE USUÁRIOS
SEGURANÇA
O Plone utiliza uma combinação de permissões de baixo nível, papéis, papéis locais,
grupos e fluxos de trabalho (sistema de workflow) para gerenciar as permissões dos
objetos. Entender isso ajudará a gerenciar como e por quem o seu site Plone é acessado.
Permissões são objetos de baixo nível - elas especificam o que um usuário A pode fazer
exatamente, mas não B em um determinado contexto. Permissões são usadas como
guardas no acesso a métodos, scripts, templates, transições de workflow e algumas vezes
em componentes individuas na página.
A segurança do Zope/Plone se da com um bom gerenciamento dos papéis atribuídos,
sendo posto de forma correta para não fugir do controle o manuseio do conteúdo do
33
34. Administração de infraestrutura Zope/Plone
portal. O administrador do portal deve seguir uma forma melhor distribuída das
permissões.
34
35. Administração de infraestrutura Zope/Plone
PERMISSÕES PADRÃO
Permissões são atribuídas a papéis de usuários (user roles), não a usuários
individualmente. Logo, costuma-se dizer que, na pasta X, qualquer usuário com
'RandomRole' tem permissão para modificar o conteúdo do portal. Os papéis padrões
são:
• Anonymous (anônimo)
• Autehticated (autenticado)
• Contributor (Colaborador)
• Editor
• Manager (Administrador)
• Member (Membro)
35
36. Administração de infraestrutura Zope/Plone
• Owner (Dono)
• Reader (Leitor)
• Reviwer (Revisor)
Algumas deles são nativos, como Owner , Anonymous e Authenticated.
O papel ANONYMOUS é atribuído a todo usuário que não está autenticado.
A maioria dos membros de um portal possui o papel de MEMBER, mas isso não é
garantido.
OWNER somente se aplica quando o atual usuário é o dono de um determinado
conteúdo.
As permissões mais comuns são:
• View
• Modify portal content
• Access contents information
• List folder contents
Conhecidas como as "CMF Core permissions", localizadas no arquivo
'Products.CMFCore.permissions.py’ em variáveis como 'View' e 'ModifyPortalContent'.
Em geral, a maioria dos tipos de conteúdo usam essas permissões para acessar e
modificar dados.
36
37. Administração de infraestrutura Zope/Plone
INTERFACE DE GERENCIAMENTO ZOPE (ZMI)
Na Interface de Gerenciamento do Zope (ZMI), quase todos os objetos possuem uma aba
'Security', nela podemos verificar uma longa listagem de permissões atribuídas a papéis.
A maioria delas está marcada com 'Acquire permission settings', significando que as
permissões concedidas a estes papéis são as mesmas do objeto pai. Definições de
segurança no Zope são aditivas, logo se você mantiver a opção 'Acquire' marcada e
adicionar outros papéis, você obterá os papéis configurados para os níveis superiores
(objeto pai) somados aos papéis configurados neste nível. Você pode parar essa aquisição
hereditária de regras desmarcando a opção 'Acquire'.
Na maioria dos casos, você não irá modificar permissões dessa forma, exceto ao
configurar padrões globais para permissões diferentes das permissões centrais acima. O
auto-registro , ou seja , a permissão para que os próprios usuários se registrem no site ,
37
38. Administração de infraestrutura Zope/Plone
não vem mais habilitada como em versões anteriores do Plone . Logo , só administradores
do site podem adicionar novos usuários inicialmente.
Você pode livremente adicionar papéis conforme sua necessidade. Como membros
podem possuir mais de um papel simultaneamente, você provavelmente só precisa se
preocupar com um subconjunto de permissões quando se trata de atribui-las para um
novo papel. Use o formulário na parte inferior da guia 'Security' na raiz do portal para
adicionar e remover papéis.
Usuários podem ser associados a papéis manualmente usando a pasta de usuários
'acl_users' / 'portal_role_manager' na raiz de sua instância Plone. Entretanto, é mais
comum e indicado atribuir papéis a grupos e então adicionar usuários nos grupos, como
descrito na próxima seção.
38
39. Administração de infraestrutura Zope/Plone
COMO CRIAR UM NOVO USUÁRIO/GRUPO
POLÍTICA PARA CRIAÇÃO E MANUTENÇÃO
O Plone adiciona o conceito de um grupo de usuários ao modelo básico de segurança do
Zope. Grupos são formas convenientes de administrar papéis (assim como permissões)
para uma grande quantidade de usuários simultaneamente.
Usuários podem estar em grupos - gerenciados por meio da tela de administração de
usuários e grupos nas Configurações do Site. Papéis podem ser atribuídos a grupos de
acordo com a necessidade - todos os usuários neste grupo receberão o papel atribuído ao
grupo.
É bastante incomum que somente um usuário receba determinado papel. É mais provável
que grupos de usuários possuam os mesmos papéis no portal - e mesmo quando existe
39
40. Administração de infraestrutura Zope/Plone
apenas um usuário (por exemplo, apenas um gestor do site), é valido criar um grupo para
atender a possibilidade de haver mais usuários no futuro. Como os usuário podem estar
em vários grupos ao mesmo tempo, você pdoe ter um controle preciso sobre as
permissões e classificações de usuários que utilizam esse mecanismo.
Por padrão o Plone vem com dois grupos administrators e reviewers e na criação de um
novo usuário já vem a opção de adicioná-los nestes grupos.
No capítulo anterior mostramos como criar novos papéis no portal. Utilizando a
ferramenta de administração de usuários e grupos nas Configurações do Site, você pode
facilmente associar papéis a grupos – simplesmente marque as caixas relevantes e salve.
Para associar usuários ao grupo, clique no grupo pesquise, marque os usuários relevantes
e clique no botão adicionar. Uma vez dentro de um grupo, o usuário ganhará todos os
papéis atribuídos para aquele grupo além de quaisquer papéis atribuídos apenas para
aquele usuário.
40
41. Administração de infraestrutura Zope/Plone
PAPÉIS LOCAIS E COMPARTILHAMENTO
Frequentemente você necessitará dar permissões específicas a um usuário ou grupo em
uma área peculiar do seu site, mas não em todo ele.
A aba 'Compartilhamento' em um conteúdo padrão do Plone é o que dá a você diferentes
permissões em diferentes áreas. Se ela não é exibida, você pode localizá-la adicionando
'@@sharing' ao final da URL.
No formulário de papéis locais, você pode pesquisar por outros usuários ou grupos e
associar-lhes papéis, além de poder isolar as permissões locais desmarcando a herança
de níveis superiores .
Atualmente os papéis locais podem ser adicionados em um nível mais baixo na árvore de
aquisição, mas não poderão ser retirados. Significa que, se você dá a um usuário
41
42. Administração de infraestrutura Zope/Plone
permissões de gerente (um papel global) em '/stuff', não há como previni-lo de ter
permissões de gerente em '/stuff/documents'.
42
43. Administração de infraestrutura Zope/Plone
CONTROLE DE ACESSO POR MEIO DE WORKFLOW
Na maioria dos casos, workflows, geridos através da ferramenta portal_workflow, são a
forma correta de gerenciamento de permissões em seu conteúdo.
Estados do Workflow são exibidos em objetos contidos no menu drop-down – “Estado”
no canto superior-direito, na aba visão de um conteúdo que você possua permissão para
editar. A lista deste menu são as transições que você pode utilizar entre os estados do
workflow. Por exemplo, para mover de private (estado padrão) para o published você
utiliza a transição publish. Todo tipo de conteúdo ou não possui workflow (raro) ou possui
exatamente um associado a ele. Isso é configurado através da ferramenta
portal_workflow. A aba de conteúdo desta ferramenta na ZMI exibe os workflows
instalados atualmente. Você pode adicionar ou modificar workflows através dessa GUI.
Lembre-se de configurar o estado padrão, transições e permitir transições entre os
estados.
43
44. Administração de infraestrutura Zope/Plone
O mecanismo do workflow irá gerenciar certo número de permissões e configurá-las
corretamente quando o estado de um objeto é mudado.
É importante atualizar as configurações de segurança clicando em Update security
settings na base da aba Workflows dentro de portal_workflow na ZMI.
Desta forma, workflows servem para dois propósitos - representar a evolução de um
pedaço de conteúdo, desde a criação, através dos ciclos de revisão, até o estado final, e
para controlar as permissões para o conteúdo em cada estado. Se você tem necessidades
particulares, você deve criar um novo, configurar os estados e transições necessárias,
fazer o workflow gerenciar um certo conjunto de permissões e configurar o mapeamento
de papéis-permissões para cada estado no workflow. Você pode controlar quem tem a
liberdade de alterar as permissões
44
46. Administração de infraestrutura Zope/Plone
REVISÃO DO CAPÍTULO 2
1) É uma das maneiras de manter a Segurança do Zope/Plone:
a. Manter poucos usuários
b. Não permitir criação de grupos
c. Bom gerenciamento dos papéis atribuídos, sendo posto de forma
correta para não fugir do controle o manuseio dos conteúdos.
2) São "papéis" padrão:
a. 'Member'; 'Manager'
b. 'View'; 'Modify'
c. 'Member'; 'View'
d. 'Anonymous'; 'Modify'
3) Quando criamos um novo usuário, por padrão qual papel ele recebe:
a. Member
b. View
c. Anonymous
d. Administrador
4) É correto afirmar que:
a. Quando dentro de um grupo, o usuário ganhará todos os papéis
atribuídos para aquele grupo além de quaisquer papéis atribuídos
apenas para aquele usuário.
b. Não conseguimos administrar papéis por Grupos
46
47. Administração de infraestrutura Zope/Plone
c. As permissões mais comuns são 'View', 'Anonymous'
d. Você não pode adicionar papéis apenas por necessidade
5) É incorreto afirmar que:
a. Grupos são formas convenientes de administrar papéis
b. workflows, geridos através da ferramenta portal_workflow, são a
forma correta de gerenciamento de permissões em seu conteúdo.
c. É bastante incomum que somente um usuário receba determinado
papel
d. Todo tipo de conteúdo ou não possui workflow (raro) ou possui um
ou mais associado(s) a ele.
47
48. Administração de infraestrutura Zope/Plone
REVISÃO DO CAPÍTULO 2 (respostas)
1) É uma das maneiras de manter a Segurança do Zope/Plone:
a. Manter poucos usuários
b. Não permitir criação de grupos
c. Bom gerenciamento dos papéis atribuídos, sendo posto de forma
correta para não fugir do controle o manuseio dos conteúdos
2) São "papéis" padrão:
a. 'Member'; 'Manager'
b. 'View'; 'Modify'
c. 'Member'; 'View'
d. 'Anonymous'; 'Modify'
3) Quando criamos um novo usuário, por padrão qual papel ele recebe:
a. Member
b. View
c. Anonymous
d. Administrador
4) É correto afirmar que:
a. Quando dentro de um grupo, o usuário ganhará todos os papéis
atribuídos para aquele grupo além de quaisquer papéis atribuídos
apenas para aquele usuário.
b. Não conseguimos administrar papéis por Grupos
c. As permissões mais comuns são 'View', 'Anonymous'
48
49. Administração de infraestrutura Zope/Plone
d. Você não pode adicionar papéis apenas por necessidade
5) É incorreto afirmar que:
a. Grupos são formas convenientes de administrar papéis
b. workflows, geridos através da ferramenta portal_workflow, são a
forma correta de gerenciamento de permissões em seu conteúdo.
c. É bastante incomum que somente um usuário receba determinado
papel
d. Todo tipo de conteúdo ou não possui workflow (raro) ou possui
um ou mais associado(s) a ele.
49
50. Administração de infraestrutura Zope/Plone
Laboratório 02
1) Acessar o Plone Site: portal_dev
2) Adicionar item, do tipo Pasta:
o Título: Biblioteca
3) Criar os seguintes grupos:
o Grupo de Gestores de conteúdos (grupo-gestores)
Papel de Colaborador
o Grupo da Biblioteca (grupo-biblioteca)
50
51. Administração de infraestrutura Zope/Plone
Papel local de acesso à pasta biblioteca
o Grupo de Editores (grupo-Editores)
Papel de Reviewer
4) Atribua os papéis e permissões corretos a cada grupo, de acordo com sua
destinação.
5) Crie os usuários e os inclua nos respectivos grupos:
o João – não o inclua em nenhum grupo
o José e Maria – Grupo de Gestores de conteúdos
o Catatau e Zé Colmeia – Grupo da Biblioteca
o William e Fatima - Grupo de Editores
6) Acesse o site com cada um dos usuários e verifique o resultado.
51
52. Administração de infraestrutura Zope/Plone
CAPITULO 3
Introdução
Vamos mostrar como otimizar o desempenho do seu Plone site, utilizando um servidor de
cache (Varnish). Neste capítulo também explicaremos o que são Políticas de cache.
O conteúdo deste treinamento tem como premissa que as otimizações relativas a
hardware, como arquitetura de disco, paginação de memória, entre outras, sistema
operacional, banco de dados e rede foram realizadas e estão operando em seu estado
ótimo. Apenas questões relativas ao desempenho do Plone serão tratadas neste capítulo.
52
53. Administração de infraestrutura Zope/Plone
Neste Capítulo você verá
• Otimização de desempenho:
o Parâmetros ajustáveis
o Varnish
• Políticas de Cache:
o Descrição das políticas de Cache
o Quando aplicar cada tipo de política
• Procedimento de backup
53
54. Administração de infraestrutura Zope/Plone
OTIMIZAÇÃO DE DESEMPENHO
PARÂMETROS QUE PODEM SER AJUSTADOS
Instâncias da solução instaladas no “Front-End”, devem utilizar um servidor de cache. Os
servidores ZOPE podem ser escalados horizontalmente através da inclusão de um
balanceamento de cargas e o acesso aos arquivos organizado, com maior desempenho e
redundância com o uso de um servidor destinado a este fim.
54
56. Administração de infraestrutura Zope/Plone
ZEO
• Arquivos e imagens no ZODB: configurar o BLOB (Binary Large Objects)
padrão no Plone 4, para armazenar os arquivos e as imagens no sistema de
arquivos do servidor ou em um ponto de rede.
• Códigos: utilizar getObject apenas em último caso, em todos os outros
casos, utilize as informações que já estão disponíveis no catálogo ou crie
novos índices. Cuidado com a “mega ultra power” resolução de um
problema. Não reinvente a roda, utilize a forma de resolver um problema
e/ou código do próprio Zope/Plone.
• Otimizar a infraestrutura de rede e dos servidores, em especial os
subsistemas de disco para aqueles sistemas com uso intensivo de dados
dinâmicos.
56
57. Administração de infraestrutura Zope/Plone
• Zope: utilizar um core do processador por instância. Para utilizar melhor a
capacidade do processador é necessário utilizar um servidor ZEO (Zope
Enterprise Objects) com várias instâncias e deixar o kernel determinar pra
onde cada processo vai.
• Desabilitar o profiler (debug) quando o portal for para produção.
O ZEO (Zope Enterprise Objects)é um sistema de balanceamento de carga utilizado pelo
ZOPE. O servidor ZEO é um servidor de armazenamento que permite a múltiplas
instâncias do ZOPE conectarem a uma única base de dados, por padrão, o ZODB.(Zope
Object Data Base).
57
58. Administração de infraestrutura Zope/Plone
VARNISH
É uma solução open source, distribuída sob a licença BSD. Ele é um acelerador HTTP
projetado para websites com conteúdo dinâmico com alto volume de informações.
Ele serve como:
• Ferramenta de apoio e gerenciamento do sistema de cache.
• Ganho de performance para resposta do site
O Varnish foi desenvolvido para servir como proxy reverso para sistemas de
gerenciamento de conteúdo lentos.
• Foco 100% em performance.
58
59. Administração de infraestrutura Zope/Plone
• Capacidade de trabalhar em 32 ou 64 bits aproveitando ao máximo cada
operação do processador
• Roda em Linux e BSD
O desempenho pode ser acelerado com o Vanish:
• A fim de evitar chamadas para gravação em disco desnecessárias, todo o
gerenciamento de log é feito em memória.
• Controle sobre cada resposta às requisições.
Podemos sobrescrever o TTL dos pacotes, adicionar ou remover cabeçalho remover
cookies, reescrever urls e invalidar objetos no cache.
Suporte a balanceamento de carga inclusive com checagem da saúde dos
servidores.
• Controle sobre o que deverá ser cacheado.
Implementa parcialmente ESI, a qual permite se definir, no código da aplicação,
como deverá funcionar o cache para as diversas partes de uma página Web. Com
isso é possível definir propriedades de cache diferentes para partes diferentes de
uma mesma página.
• Ferramentas de apoio e gerenciamento do sistema de cache.
Interface telnet para gerenciamento da aplicação CLI (Command Line Interface).
Ferramentas de gerenciamento de administração em modo texto (console)
VarnishHist, VarnishLog, VarnishCsa, VarnishStat, VarnishTest, VarnishSizes e
Varnishtop
• Log centralizado em memória.
Para evitar chamadas de gravação em disco desnecessárias, todo o gerenciamento
do log é feito em memória. VarnishLog e VarnishCsa para uma análise mais
profunda. Possibilidades de armazenagem de logs no padrão Apache por exemplo.
59
60. Administração de infraestrutura Zope/Plone
NOTA:
Para instalações do Plone em servidores Windows (IIS) pode-se utilizar o Enfold Proxy,
uma vez que o Varnish não opera nestas soluções.
60
61. Administração de infraestrutura Zope/Plone
plone.app.caching - Políticas de cache
DESCRIÇÃO DAS POLÍTICAS DE CACHE
Políticas de cache são, geralmente um compromisso entre velocidade e atualização do
conteúdo da resposta. Caches mais agressivos, muitas vezes , vem à custa de aumento do
risco de respostas obsoletas. Caches mais lentos trazem respostas mais precisas,
sacrificando a velocidade.
Personalização do cache também pode ser necessária se produtos de terceiros que estão
instalados requerem tratamento especial. Examine os cabeçalhos de resposta HTTP para
determinar se o produto de terceiros requer tratamento especial. Um Caso mais simples,
provavelmente, pode ser resolvido adicionando o tipo de conteúdo ou modelo para o
mapeamento apropriado. Casos mais complicados podem exigir operações de cache
personalizado.
61
62. Administração de infraestrutura Zope/Plone
Os três perfis de cache padrão:
• Sem cache proxy
Definições úteis para configurações sem um proxy cache.
• Com o cache de proxy
Definições úteis para configurações com um proxy cache, como Squid ou verniz. A
única diferença do "sem cache proxy" perfil de algumas configurações para
habilitar o cache de proxy de arquivos, imagens no espaço de conteúdo e feeds de
conteúdo.
• Com proxy cache (e dividir-view caching)
Um perfil de exemplo para uma configuração de proxy cache com split-view
caching habilitado. Este exemplo requer uma configuração de proxy especial.
62
63. Administração de infraestrutura Zope/Plone
QUANDO APLICAR CADA TIPO DE POLÍTICA
• Caching forte ( plone.app.caching.strongCaching )
Cache no browser e proxy (default: 24 horas). Utilize apenas recursos estáveis, que nunca
mudam sem mudar sua URL, ou recursos para os quais staleness temporária não é crítica.
Nos perfis de cache sem-cache-proxy e com o cache proxy, esta operação é mapeada
para o rulesets plone.resource e plone.stableResource, o que provoca os seguintes
cabeçalhos para ser em adicionados à resposta:
Last-Modified: <last-modified-date>
Cache-Control: max-age = <segundos>, proxy-revalidação, pública
• Cache moderado ( plone.app.caching.moderateCaching ),
63
64. Administração de infraestrutura Zope/Plone
Cache no browser, mas expirar imediatamente (o mesmo que caching fraco), e cache de
proxy (default: 24 horas). Use um proxy reverso purgable caching para melhores
resultados. Se o proxy não pode ser removidos de forma confiável, então as respostas
obsoletas podem ser vistas até a entrada em cache expirar. Se o proxy não pode ser
configurado para caching disallow em outros proxies intermediários que possam existir
entre os proxies locais e do navegador.
No perfil de cache com o cache proxy, esta operação é mapeada para o
rulesetsplone.content.feed e plone.content.file, o que provoca os seguintes cabeçalhos
para serem adicionados à resposta:
[Plone.content.feed]
ETag: <etag-value
Control: max-age = 0, s-maxage = <segundos>, deve-revalidar
[Plone.content.file]
Last-Modified: <last-modified-date>
Cache-Control: max-age = 0, s-maxage = <segundos>, deve-revaliar
• Caching fraco ( plone.app.caching.weakCaching )
Se a última modificação do cabeçalho é insuficiente para garantir a atualização, ativar a
verificação ETag listando cada componente ETag que deve ser usado para construir o
cabeçalho ETag. Para cache de respostas públicas na memória Zope, defina o cache de
RAM parâmetro para True.
No perfil de cache sem cache-proxy, esta operação é mapeada para o
rulesetsplone.content.itemView, plone.content.folderView, plone.content.feed
eplone.content.file , o que provoca os seguintes cabeçalhos a serem adicionados com a
resposta:
64
66. Administração de infraestrutura Zope/Plone
BACKUP e RESTORE
O que fazer backup?
1) Conteúdo – normalmente armazenado no arquivo de dados
Data.fs no diretório var da instância ZOPE. Se você estiver
usando o armazenamento de BLOB (padrão no Plone 4 para
imagens e arquivos), você terá que fazer backup também dos
objetos binários. Eles são armazenados por padrão na pasta
var/blobstorage.
2) Customizações realizadas nos arquivos do sistema
operacional.
3) Todos os produtos instalados.
66
67. Administração de infraestrutura Zope/Plone
4) Métodos externos (External Methods) no diretório
Extensions.
5) Arquivos de configuração do ZOPE – buildout
6) Arquivos Traduzidos (.po)
7) Os produtos em desenvolvimento no diretório/src instância
do Zope.
Você não precisa necessariamente fazer backup dos produtos, você pode restaurar a
partir de arquivos na Internet (tais como Plone's SVN). No entanto, quando você precisar
restaurar a partir de um backup, serão exigidas as mesmas versões dos produtos que são
usados em seus sites. Fazer o backup dos produtos é à prova de falhas e não depende de
arquivos externos.
67
68. Administração de infraestrutura Zope/Plone
REPOZO
Utilização do Zope repozo.py script é a forma recomendada de backup pela comunidade.
Desta forma você pode executar um processo de backup seguro e automatizado,
enquanto o Plone estiver sendo executado, sem efeitos colaterais em seus dados. É
geralmente considerada a melhor prática para fazer backup de Zope/Ploneem um
ambiente de produção.
Repozo pode ser usado para criar um backup integral do banco de dados. Como o Plone
armazena seus dados em um único arquivo binário grande, criar um backup completo
diário pode consumir muitos recursos de disco e rede. Nesse caso, você também pode
usar Repozo para criar um hot backup incremental do banco de dados. O repozo.py script
pode ser encontrado no diretório bin de sua instalação de software Zope. Ele contém uma
docstring, informativa sobre suas opções de linha de comando.
68
69. Administração de infraestrutura Zope/Plone
Collective.recipe.backup é uma boa maneira para configurar e gerenciar repozo
diretamente do seu arquivo buildout. Inclui opções para fazer backup tanto do seu
arquivo Data.fs quanto do armazenamento do Blob do Plone 4.
Shutdown do Zope para backup do banco de dados
A maneira mais fácil segura para o backup do banco de dados, é parar (shutdown) o Zope,
copiar o arquivos Data.fs e reiniciar o Zope. Isto é simples e seguro, mas tem a
desvantagem de que seus sites não estarão operacionais durante o processo de backup.
Pack do banco de dados e faça backup da cópia pré-pack
Outra forma segura de se fazer backup do Data.fs, sem derrubar seus sites é realizar o
pack do banco de dados no Zope Management Interface (ZMI): Painel de Controle>
Gerenciamento de Banco de Dados> Principal> Pack. Isso deixa um arquivo Data.fs.old
com o conteúdo anterior do banco de dados. Como o Plone não escreve mais neste
arquivo após o empacotamento é seguro fazer a cópia do Data.fs.old. É importante ter
atenção para que não se faça backup do Data.fs, ao invés da versão empacotada
Data.fs.old.
Empacotar o banco de dados significa reduzir seu tamanho, eliminando versões
arquivadas de objetos armazenados, com mais de uma determinada idade. Após o
empacotamento, você vai deixar de ser capaz de reverter as transações para estas
versões antigas.
69
71. Administração de infraestrutura Zope/Plone
EXERCÍCIOS DO CAPÍTULO 3
1) Qual desses servidores de cache é a melhor escolha para o Plone no Linux
BSD:
a. Squid
b. Varnish
c. Apache2
d. Proxy
2) Marque a incorreta sobre o Varnish:
a. Não roda no Windows.
b. É uma ferramentas de apoio e gerenciamento do sistema de cache.
c. Log centralizado em memória.
d. Suporta SSL.
3) Utiliza apenas recursos estáveis, que nunca mudam sem mudar sua URL:
a. Cache moderado
b. Caching forte
c. Caching fraco
d. Nenhum cache
4) É correto afirmar que :
a. Políticas de cache são, muitas vezes um compromisso entre
velocidade e falta de segurança.
71
72. Administração de infraestrutura Zope/Plone
b. No ZODB, utilizar o Blob para armazenar os arquivos e as imagens
no sistema de arquivos do servidor ou em um ponto de rede.
c. Habilitar o profiler quando o portal for para produção
d. Varnish open source, distribuído sob a licença BSD, um acelerador
HTTP projetado para sites web estáticos.
72
73. Administração de infraestrutura Zope/Plone
REVISÃO DO CAPÍTULO 3 (respostas)
1) Qual desses servidores de cache é a melhor escolha para o Plone no Linux
BSD:
a. Squid
b. Varnish
c. Apache2
d. Proxy
1) Marque a incorreta sobre o Varnish:
a. Não roda no Windows.
b. É uma ferramentas de apoio e gerenciamento do sistema de
cache.
c. Log centralizado em memória.
d. Suporta SSL.
2) Utiliza apenas recursos estáveis, que nunca mudam sem mudar sua
URL:
a. Cache moderado
b. Caching forte
c. Caching fraco
d. Nenhum cache
3) É correto afirmar:
a. Políticas de cache são, muitas vezes um compromisso entre
velocidade e falta de segurança.
73
74. Administração de infraestrutura Zope/Plone
b. No ZODB, utilizar o produto FileSystemStorage para armazenar
os arquivos no sistema de arquivos do servidor ou em um
ponto de rede.
c. Habilitar o profiler quando o portal for para produção
d. Varnish open source, distribuído sob a licença BSD, é um
acelerador HTTP projetado para sites web estáticos.
74
75. Administração de infraestrutura Zope/Plone
Laboratório 3
1) Criar uma nova instalação da instância do Plone 4:
a. Utilizando virtualenv;
b. Utilizando o buildout;
c. Modo ZEO Cluster;
d. Instalar Varnish Cache;
e. Instalar Pound;
2) Definir políticas de cache utilizando o plone.app.caching;
75