Esta página descreve os passos que tem de dar para criar uma instância do wiki utilizando o MoinMoin em Linux com o servidor web Apache. Já deve ter feito a ../InstalaçãoBásica. As instalações noutros Unices como FreeBSD são muito semelhantes.

Nesta página são discutidos dois cenários de instalação:

  1. Tem Permissão de Administrador (é o utilizador 'root' ou pode utilizar sudo) num servidor e pode instalar, modificar ficheiros em praticamente todo lado na máquina, e nomeadamente consegue alterar a configuração Apache.

  2. É um Simples Utilizador, que apenas consegue editar ficheiros na sua directoria home, e não consegue alterar o ficheiro de configuração do Apache.

As opções seguintes não são mencionadas aqui:

Tabela de Conteúdos

Cenário de Administrador

A directoria exacta das diversas configurações de Apache variam - as directorias utilizadas mais frequentemente são: /etc/httpd/, /etc/apache/ ou /etc/apache2/. Deve ter pelo menos algum conhecimento relativamente à configuração e gestão do Apache, especialmente no que diz respeito a uma configuração num servidor virtual. Se não sabe do que estamos a falar, por favor, leia sobre Ficheiros de configuração e a documentação do Servidor Virtual Apache na documentação sobre Apache.

Em Apache2 é frequente existir uma directoria (como /etc/httpd/conf.d) para servidores virtuais. Assim, todos os ficheiros que tenham a extensão .conf serão incluídos no ficheiro principal de configuração de Apache. Para verificar se isto acontece na sua configuração, pesquise a palavra "Include".

Criar uma instância do wiki

Criar uma instância do wiki implica copiar ficheiros e atribuir permissões apropriadas. Antes de continuar, é necessário saber qual o utilizador e grupo que o seu servidor Apache utiliza. A forma mais simples de o saber, é executar este comando:

> egrep "^User|^Group" /etc/httpd/httpd.conf
User wwwrun
Group nogroup

Isto mostra um resultado frequente: "wwwrun.nogroup". Outros resultados habituais são "nobody.nogroup", "apache.apache" e "www-data.www-data". Claro que pode utilizar o seu. O que importa é que saiba quais os que estão em uso, porque necessitará deles para configurar as permissões de ficheiros.

Uma vez reunida esta informação, leia o tópico ../CriaçãoDeInstânciasDoWiki e siga os passos aí descritos.

Instalar o moin.cgi

Existe ainda um último ficheiro que necessita de copiar, a ponte entre o Apache e o MoinMoin: o script CGI que o Apache irá chamar sempre que uma página do wiki for pedida, e que, por sua vez, invocará todos os componentes do MoinMoin para lidar com o pedido. Na verdade, pode colocar este script onde quiser (todos os caminhos para os ficheiros do MoinMoin precisam de ser configurados para coincidir com a disposição do seu sistema de ficheiros), mas em prol da simplicidade e segurança, sugerimos que siga as instruções que indicamos em baixo, a não ser que pense que sabe fazer melhor.

Vamos criar uma sub-directoria cgi-bin na directoria instance. Utilizando as variáves de ambiente definidas na ../CriaçãoDeInstânciasDoWiki, execute os comandos seguintes:

> cd $WIKILOCATION/$INSTANCE
> mkdir cgi-bin
> cp $SHARE/server/moin.cgi cgi-bin
> chown -R $USER.$GROUP cgi-bin
> chmod -R ug+rx cgi-bin
> chmod -R o-rwx cgi-bin

Configurar o moin.cgi

Quando o moin.cgi é iniciado, importa um módulo do MoinMoin que por sua vez importa outros módulos e o ficheiro de configuração. Os módulos do MoinMoin devem encontrar-se num sistema devidamente configurado (como descrito na ../InstalaçãoBásica), mas é provável que o ficheiro de configuração não seja encontrado. Edite o script do moin.cgi para corrigir esta situação. Adicione estas linhas junto ao topo do ficheiro:

import sys
sys.path.insert(0, '..')

Uma forma ainda melhor seria utilizar um nome de caminho absoluto da directoria que contém o ficheiro wikiconfig.py em vez de '..'.

Configurar o Apache

Agora que todos os ficheiros estão no sítio e devidamente bloqueados (no que toca ao sistema de ficheiros), é necessário configurar o Apache para dar acesso apenas aos ficheiros certos. No entanto, uma vez que a configuração de Apache por omissão varia muito consoante a distribuição que utiliza, e uma vez que os administradores fazem adições e alterações frequentes, não podemos dar instruções exactas que abranjam todos os casos. Em vez disso, descrevemos por alto o que é necessário ser feito e depois damos umas linha específicas que deve adicionar no local apropriado na sua configuração de Apache.

O seu Apache deve ser configurado para que:

  • O acesso à sua directoria instance seja negado (as instalações de Apache saudáveis devem, na verdade, negar o acesso a todo o servidor, e depois apenas permitir o acesso a algumas directorias específicas).
  • Um Alias seja configurado para redireccionar os pedidos de /moin_static160/ (no URL - veja também a variável de configuração url_prefix_static) para a directoria htdocs (na directoria share como mencionamos no fim da ../InstalaçãoBásica). Tenha em consideração que o url_prefix_static será alterado em cada versão do moin!

  • Um ScriptAlias seja configurado para redireccionar os pedidos vindo de onde quiser (sugerimos que utilize o nome da sua instância, por exemplo /mywiki) para o script CGI que acabou de copiar.

Os comandos seguintes irão adicionar duas linhas no final do seu ficheiro de configuração de Apache. Estas linhas apenas abrangem os dois últimos ítens listados em cima. Terá de verificar o primeiro (existe demasiada variação nas distribuições de Linux). Tenha em consideração que talvez tenha de mover as duas linhas para o local apropriado no seu ficheiro config -- talvez para junto de linhas semelhantes.

> echo "" >>/etc/httpd/httpd.conf
> echo "Alias /moin_static160/ \"$SHARE/htdocs/\"" >>/etc/httpd/httpd.conf
> echo "ScriptAlias /mywiki \"$WIKILOCATION/$INSTANCE/cgi-bin/moin.cgi\"" >>/etc/httpd/httpd.conf

Isto deve adicionar duas linhas, como as que apresentamos em baixo, a um ficheiro config (possivelmente deve utilizar um para cada servidor virtual):

Alias /moin_static160/ /usr/local/share/htdocs/
ScriptAlias /mywiki /usr/local/share/moin/mywiki/cgi-bin/moin.cgi

É apenas necessário definir o Alias para o htdocs uma única vez, independentemente do número de wikis que executar com a versão 1.6.0 do moin. É necessário definir um script diferente de alias para cada instância do wiki que tenciona executar. Assim, pode também definir o Alias num ficheiro central de configuração de Apache e definir apenas o ScriptAlias nas configurações de servidores virtuais.

Configurar o MoinMoin

Finalmente, cerifique que o ficheiro wikiconfig.py na directoria instance contém os caminhos correctos para:

  • url_prefix_static (coisas estáticas como css/img/js)

  • data_dir (a directoria data da instância) e

  • data_underlay_dir (a directoria underlay da instância).

Pode utilizar caminhos relativos para as directorias, mas tenha em consideração que são relativos para o script CGI, não para o ficheiro de configuração! É melhor utilizar caminhos absolutos, e prevenir algumas dores de cabeça.

Eis as definições que deve ter no ficheiro config se tiver seguido todas as nossas sugestões:

    data_dir = '../data/'  # é melhor utilizar um caminho absoluto
    data_underlay_dir = '../underlay/'  # é melhor utilizar um caminho absoluto
    url_prefix_static = '/moin_static160' # depende da versão do moin

Existem ainda outras configurações que deve alterar. Para mais informações sobre essas configurações, leia o final do tópico ../CriaçãoDeInstânciasDoWiki.

Testar o wiki

Agora, tudo deve funcionar correctamente. É a altura de reiniciar o servidor Apache (normalmente com "/etc/init.d/apache restart", outras com "apachectl restart") e executar os seguintes passos:

  • Execute o MoinMoin CGI Diagnosis: ligue ao "http://127.0.0.1/mywiki?action=test" (ou ao nome e porto que tiver definido no ficheiro de configuração do Apache). Verifique se a informação está correcta. Verifique se as directorias listadas sob Checking directories... estão OK.

  • Aceda ao seu novo wiki com o URL "http://127.0.0.1/mywiki/" (ou com o nome e porto que tiver definido no ficheiro de configuração do Apache). Deve ver páginas do wiki -- leia-as.

  • Depois avance para a PáginaDeTestesWiki.

  • Tente editá-la e guarde as suas alterações.
  • Se funcionar, verifique se a sua edição surge na página AlteraçõesRecentes.

  • Se surgir, parabéns, o seu novo wiki funciona! :)

Se algo correr mal, espreite o tópico de Resolução de Problemas, no fim desta página.

Cenário de Simples Utilizador

Por norma, em máquinas partilhadas por muitas pessoas, os simples utilizadores não têm acesso à conta do root, não podem modificar o ficheiro httpd.conf e não podem copiar ficheiros para as directorias de sistema cgi-bin e htdocs. Neste caso, o Apache pode ser configurado de forma a que cada utilizador possa ter um sítio web na directoria home da sua conta shell, utilizando a directiva UserDir. Se o administrador da máquina decidir utilizá-la, todos os URL que comecem com "/~nome-de-utilizador" serão redireccionados para uma das directorias home dos utilizadores, onde têm permissões de escrita e onde podem instalar o MoinMoin.

Como exemplo, vamos considerar o caso de um utilizador chamado "mm". Claro que sempre que vir "mm" em baixo, deve substituí-lo pelo seu nome de utilizador.

Certificar-se de que /~nome-de-utilizador funciona

A instalação na directoria home só funcionará se o administrador (root) a permitir. Assim, o primeiro passo é verificar se funciona. Normalmente, o Apache é configurado de modo que a sub-directoria public_html da directoria home seja utilizada como root do sítio web. Por isso, deve verificar se essa directoria existe.

> ls -ld ~/public_html
drwxr-xr-x   2 mm       users        4096 Nov 30 00:29 public_html

Se a directoria não existir, crie-a, e certifique-se de que pode ser lida e acedida pelo servidor web.

> mkdir public_html
> chmod a+rx public_html
> ls -ld ~/public_html
drwxr-xr-x   2 mm       users        4096 Nov 30 00:35 public_html

Agora, verifique se o URL "/~mm" funciona:

> lynx -error_file=/dev/stderr -dump http://localhost/~mm/ >/dev/null
URL=http://localhost/~mm/ (GET)
STATUS=HTTP/1.1 200 OK

Se obtiver um código de resposta "200 OK", funciona e pode passar para a próxima verificação. Se obtiver uma resposta "403 Forbidden" ou "404 Not Found", há talvez algo de errado com a sua directoria, ou não foi tudo activado pelo administrador.

  • Verifique as permissões para a sua directoria home (~) e para a sua directoria public_html. A primeira deve terminar pelo menos com "--x", e a segunda, como apresentámos em cima, com "r-x".

  • É também possível que o administrador tenha atribuído outro nome à directoria do sítio web pessoal. O "public_html" é apenas o nome por omissão, mas qualquer um pode ser utilizado. Não há forma de o saber, terá de perguntar ao administrador (root).

  • Por último, se a funcionalidade de sítio web pessoal estiver desactivada, pode pedir ao administrador para a activar?

Uma vez feita a verificação se pode ler os ficheiro na directoria, é necessário verificar se pode executar scripts CGI nessa directoria. Utilize os seguintes comandos para criar um script CGI simples na directoria apropriada:

> mkdir -p ~/public_html/cgi-bin
> cat > ~/public_html/cgi-bin/test.cgi
#!/bin/sh
echo Content-Type: text/plain
echo
echo "CGI scripts work"
<CTRL-D>
> chmod a+rx ~/public_html/cgi-bin/test.cgi
> lynx -dump http://localhost/~jh/cgi-bin/test.cgi
CGI scripts work

Se obtiver outro resultado diferente de "CGI scripts work", algo correu mal. Verifique as permissões da directoria como em cima, tente outros nomes (ou pergunte sobre eles). A triste verdade pode ser a que não tem permissão para executar scripts CGI. Terá de pedir ao administrador (root) para este lhe conceder essa permissão.

Uma vez obtida, pode configurar a sua instância do wiki na directoria public_html. :)

Criar uma instância do wiki

Para criar uma instância do wiki é necessário copiar ficheiros e atribuir as permissões apropriadas. Leia o tópico ../CriaçãoDeInstânciasDoWiki e siga os passos aí descritos.

Instalar os ficheiros htdocs

O servidor web necessita de aceder a estes ficheiros, por isso é necessário copiá-los para a directoria "public_html". Basta utilizar isto:

> cd ~/public_html
> cp -R ~/share/moin/htdocs moin_static160
> chmod -R a+rX moin_static160

Instalar o moin.cgi

Existe ainda um último ficheiro que necessita de copiar, a ponte entre o Apache e o MoinMoin: o script CGI que o Apache irá chamar sempre que uma página do wiki for pedida, e que, por sua vez, invocará todos os componentes do MoinMoin pata lidar com o pedido. É necessário colocar este ficheiro na directoria na qual a execução de scripts CGI está activada. Por omissão, isto deve funcionar:

> cd ~/public_html
> mkdir cgi-bin
> cp $SHARE/server/moin.cgi cgi-bin
> chmod -R a+rx cgi-bin

Configurar o moin.cgi

Quando o moin.cgi é iniciado, importa um módulo do MoinMoin (que por sua vez importa outros módulos e o ficheiro de configuração). Uma vez que foi tudo instalado na sua directoria home, é provável que nada disto seja encontrado. Edite o script do moin.cgi para corrigir esta situação. Adicione estas linhas junto ao topo do ficheiro:

import sys
sys.path.insert(0, '/home/mm/lib/python2.4')
sys.path.insert(0, '/home/mm/lib/python2.4/site-packages')
sys.path.insert(0, '/home/mm/share/moin/mywiki')

Claro que é necessário adaptar os caminhos à sua situação. As duas primeiras linhas devem ajudar a localizar os módulos do MoinMoin, a última deve ajudar a localizar o ficheiro wikiconfig.py.

Nota: Talvez seja necessário editar a primeira linha do ficheiro, para apontar para a versão correcta do Python. O valor por omissão deve ser suficiente, mas uma linha como "#! /usr/bin/python2.4" pode ajudá-lo se o valor por omissão não funcionar.

Nota 2: Neste ficheiro existe uma linha onde se lê request = RequestCGI(). Se tiver um mod_rewrite complexo, adicione properties = {'script_name': '/mywiki'}  nos parênteses. Isto irá permitir ao MoinMoin gerar URLs que comecem por /mywiki e não o caminho que o servidor web passou ao MoinMoin:

def handle_request(req, env, form):
    request = RequestCGI(req, env, form, properties = {'script_name': '/mywiki'})
    request.run()

Configurar o MoinMoin

Por último, verifique se o ficheiro wikiconfig.py na directoria instance contém os caminhos correctos para url_prefix_static (a directoria htdocs), data_dir (a directoria data da instância) e data_underlay_dir (a directoria underlay da instância). Pode utilizar caminhos relativos para as directorias, mas tenha em consideração que são relativos para o script CGI, não para o ficheiro de configuração! É melhor utilizar caminhos absolutos, e prevenir algumas dores de cabeça:

    data_dir = '/home/mm/share/moin/mywiki/data/'
    data_underlay_dir = '/home/mm/share/moin/mywiki/underlay/'
    url_prefix = '/~mm/moin_static160'

Testar o wiki

Agora, tudo deve funcionar correctamente. É a altura de executar os seguintes passos:

  • Execute o MoinMoin CGI Diagnosis: > lynx -dump http://localhost/~mm/cgi-bin/moin.cgi?action=test

  • Se funcionou, tente aceder ao seu novo wiki com o URL "http://127.0.0.1/~mm/cgi-bin/moin.cgi". Deve ver páginas do wiki -- leia-as.

  • Depois avance para a PáginaDeTestesWiki.

  • Tente editá-la e guarde as suas alterações.
  • Se funcionar, verifique se a sua edição surge na página AlteraçõesRecentes.

  • Se surgir, parabéns, o seu novo wiki funciona! :)

Se algo correr mal, espreite o tópico de Resolução de Problemas, em baixo.

Resolução de Problemas

Veja também o tópico ../ResoluçãoDeProblemas para coisas mais genéricas.

The first thing to do when your wiki does not work as expected is to issue the command "tail /var/log/httpd/error_log" to display the most recent errors. Usually, you will get a hint on what went wrong, like missing file system permissions.

Adicionar permissões para abranger a directoria htdocs

Em algumas (boas) distribuições de Linux (como SuSE 9.0), a opção de acesso a outras directorias que não a document-root "/srv/www/htdocs" com Apache encontra-se desligada por omissão por razões de segurança no "/etc/httpd/httpd.conf" ("/etc/apache2/httpd.conf" no Apache2):

# por ommissão, o acesso é negado a todo o sistema de ficheiros
<Directory />
  Options None
  AllowOverride None
  Order deny,allow
  Deny from all
</Directory>

Para permitir ao Apache o acesso a directorias dora do document root, terá de adicionar estas linhas ao "/etc/httpd/httpd.conf" (no SuSE, recomenda-se que crie um novo "http.conf.local" e que inclua este ficheiro no "/etc/sysconfig/apache2"):

Alias /wiki/ "/usr/share/moin/htdocs/"
<Directory "/usr/share/moin/htdocs/">
   Order deny,allow
   Allow from all
</Directory>
ScriptAlias /mywiki "/usr/share/moin/mywiki/cgi-bin/moin.cgi"
<Directory "/usr/share/moin/mywiki/cgi-bin">
   Order deny,allow
   Allow from all
</Directory>

Claro que necessita de adaptar os caminhos à sua situação particular.