Pelo menos em Portugal as empresas têm GRANDES problemas de organização. Quem faz trabalho em TI não pode só por si resolver esses problemas, mas podemos sem dúvida, apresentar e configurar ferramentas que facilitem a organização.
Um Wiki é uma dessas ferramentas. Um dos exemplos mais conhecidos de Wiki é a própria Wikipédia, e nada mais apropriado do que dar um link da Wikipédia para mostrar o que é um Wiki.
A Wikipédia é um Wiki publico, ou seja qualquer pessoa pode editar qualquer página. Para uma empresa isso poderá não ser a opção mais conveniente, por isso neste documento vou mostrar como se pode configurar um wiki privado (ao qual apenas têm acesso pessoas autorizadas).
Numa empresa um Wiki pode-se usar para diversos fins:
Notar que ao fim ao cabo um wiki pode servir para armazenar de uma forma fácil de aceder todo o género de informação que queiramos. É claro que para certos tipos de informação há ferramentas mais adequadas, que devem de ser usadas em vez do Wiki. Por exemplo a informação contabilística é armazenada num sistema de contabilidade, o economato (almoxarifado) tem a sua própria ferramenta, e não deve ser muito prático manter livros de endereços ou agendas num wiki (já uma lista de "to do's" é um caso a considerar!).
Escolhi demonstrar a instalação do Wiki MoinMoin porque este tem um bom número de características, é fácil de instalar e de configurar, não utiliza base de dados (o que além de encurtar este artigo facilita editar remotamente por ssh e de uma forma geral resolver os problemas), está traduzido para português e finalmente é escrito em Python (eu gosto da linguagem...).
Para seguir este artigo deve:
Se seguiu algum dos links anteriores já sabe que esta instalação vai ser feita num sistema Debian. No entanto o procedimento de instalação é idêntico (ou quase) em qualquer outra distribuição.
O Debian (e sem dúvida as outras distribuições de linux) já têm pacotes prontos para instalação do MoinMoin. Apesar disto vou mostrar como se instala a partir do pacote distribuido no site do MoinMoin, assim não somos obrigados a usar a versão que vem com a distribuição.
$ wget http://static.moinmo.in/files/moin-1.6.3.tar.gz
Neste caso trata-se da versão 1.6.3, que é a última versão estável quando escrevi este artigo. Deve verificar no site do MoinMoin se esta é a versão correcta.
$ tar -xzvf moin-1.6.3.tar.gz
$ su - # cd <directoria onde foi extraido o wiki> # python2.5 setup.py install --prefix=/usr/local
Notar que estamos a instalar para um caminho alternativo, fazemos isto para não poluirmos o nosso sistema com os ficheiros do MoinMoin.
#!/usr/bin/python2.5 #Fix and uncomment those 2 lines if your moin command doesn't find the MoinMoin package: import sys sys.path.insert(0, '/usr/local/lib/python2.5/site-packages') from MoinMoin.script.moin import run run()
Notar que utilizámos a versão 2.5 do Python, você poderá estar a usar outra versão, por isso modifique o script anterior de acordo com isso, também.
Um sistema MoinMoin, uma vez instalado, pode servir vários wikis. Cada um desses wikis vive na sua instância. Em instalações mais complicadas podemos configurar o sistema de forma a que várias instâncias partilhem por exemplo as páginas de ajuda, utilizadores e grupos de utilizadores, etc.
Para criar uma instância faz-se:
$ mkdir -p /arquivo/www/moin/
Notar que eu costumo usar a directoria /arquivo/www para armazenar os sites. É claro que pode usar outra directoria qualquer.
#!/bin/bash # path of MoinMoin shared files SHARE=/usr/local/share/moin # path to target instance location INSTANCE=$1 # should be nice USER=www-data GROUP=www-data if [ ! $1 ] then echo "You must specify an instance (relative or absolute path)" exit fi if [[ -e $1 || -d $1 ]] then echo "$1 already exists" exit fi mkdir -p $INSTANCE cp -R $SHARE/data $INSTANCE cp -R $SHARE/underlay $INSTANCE cp $SHARE/config/wikiconfig.py $INSTANCE chown -R $USER.$GROUP $INSTANCE chmod -R ug+rwX $INSTANCE chmod -R o-rwx $INSTANCE if [ $? ] then echo "Done." fi
Tornar o script executável:
$ chmod +x createinstance.sh
NOTAR no script acima deverá assegurar-se que USER/GROUP correspondem ao utilizador e grupo sob o qual o Apache está a correr. A variável SHARE deverá corresponder ao prefixo usado para fazer a instalação do MoinMoin mais 'share/moin'.
# cd /arquivo/www/moin/ # ./createinstance.sh <my wiki>
data_dir = '/arquivo/www/moin/<my wiki>/data/' data_underlay_dir = '/arquivo/www/moin/<my wiki>/underlay/'
NOTA IMPORTANTE DE SEGURANÇA: tanto a directoria 'data' como a 'underlay' não devem ser criadas dentro da directoria publica do servidor de html. Além disto as permissões devem ser ajustadas de tal forma que apenas o servidor de html tenha direito de modificação dentro destas directorias. Caso contrário teremos uma configuração insegura.
Deve-se configurar primeiro como CGI, só depois vamos configurar como mod_python (de modo a termos a certeza que o nosso sistema funciona convenientemente).
cp /usr/local/share/moin/server/moin.cgi /arquivo/www/moin/<my wiki>/
# Path of the directory where wikiconfig.py is located. # YOU NEED TO CHANGE THIS TO MATCH YOUR SETUP. sys.path.insert(0, '/arquivo/www/moin/<my wiki>') # Path to MoinMoin package, needed if you installed with --prefix=PREFIX # or if you did not use setup.py. sys.path.insert(0, '/usr/local/lib/python2.5/site-packages')
Alias /moin_static163/ "/usr/local/share/moin/htdocs/" <Directory "/usr/local/share/moin/htdocs"> Options Indexes FollowSymLinks Includes # Config do htaccess AllowOverride All # Geral Order allow,deny Allow from all </Directory> ScriptAlias /my_wiki "/arquivo/www/moin/<my wiki>/moin.cgi" <Directory "/arquivo/www/moin/oasiswiki"> AllowOverride None Options +ExecCGI -Includes Order allow,deny Allow from all </Directory>
Deve testar nesta altura se o software funciona. Devemos reiniciar o Apache e aceder a http[s]://<site>/<my_wiki>/ . É claro que deverá substituir o 'my_wiki' por um título que se adeque ao seu wiki.
Se aparecer a página do wiki, então podemos passar ao passo seguinte que consistem em configurar o wiki para funcionar com o mod_python.
O mod_python é uma forma rápida de servir aplicações web escritas em Python, é muito mais rápido do que o método CGI.
Temos de voltar a configurar o Apache:
# ScriptAlias /my_wiki "/arquivo/www/moin/<my wiki>/moin.cgi" #<Directory "/arquivo/www/moin/oasiswiki"> ... #</Directory>
<Location /my_wiki> SetHandler python-program # Add the path of your wiki directory PythonPath "['/arquivo/www/moin/<my wiki>','/usr/local/lib/python2.5/site-packages'] + sys.path" PythonHandler MoinMoin.request.request_modpython::Request.run </Location>
Notar que, como instalámos o MoinMoin num local não standard foi necessário acrescentar esse caminho ao PythonPath.
Neste momento, se reiniciarmos o Apache, já conseguimos acessar o Wiki usando mod_python.
Existem muitas situações onde nos convém termos um Wiki semi-publico ou privado. Para isso temos de voltar a editar o ficheiro de configuração wikiconfig.py e definir os ACL apropriados:
acl_rights_before = u"sysadm:read,write,delete,revert,admin" acl_rights_after = u"Known:read,write All:" acl_rights_default = u"" acl_hierachic = True
Os ACLs são aplicados por ordem, ie, os ACLs são percorridos pelo programa até ser encontrado um que seja aplicável ao utilizador activo (isto pode ser um bocado confuso). A ordem de aplicação dos ACLs é a seguinte:
Tendo em conta o anterior, tenho grandes expectativas que as alterações ao ficheiro de configuração sejam compreensíveis: fazemos com que o user 'sysadm' tenha todos s direitos desde o inicio e damos direitos de leitura e escrita a todos os utilizadores que tenham conta no sistema (grupo 'Known'), não definimos acessos por omissão e por fim, a menos que se dê acesso nos ACLs da página retiramos os direitos aos utilizadores não logados.
Se tivermos um sistema privado, então os users não poderão criar as suas contas. Para resolver isto temos várias hipóteses:
A outra hipótese é fazermos a autenticação por outros meios, por exemplo por ldap, usando o servidor de imap, etc. Esta solução só por si merece um novo artigo, pelo que talvez um dia o faça. Podem encontrar mais informações no site do MoinMoin.
Um wiki é uma excelente forma de organizar informação de grupos de pessoas e da empresa em geral. Tem também a vantagem de ter uma curva de aprendizagem relativamente suave o que permite aos próprios utilizadores usarem o sistema em pouco tempo.
O MoinMoin, sistema que instalámos, é do ponto de vista do utilizador muito simples. Mesmo assim, ao princípio, eu configurei o sistema para usar o editor WYSIWYG. Foi com grande surpresa que constatei que os utilizadores ao fim de pouco tempo começaram a usar o editor com o wiki markup - lição: por vezes os utilizadores surpreendem-nos pela positiva! Assim recomendo que na sessão de formação se mostre apenas a edição por markup, já que é mais prática e produz, inevitavelmente, um melhor código.