##master-page:HelpTemplate
##master-date:Unknown-Date
#format wiki
#language pt
Esta página descreve os passos que tem de dar para criar uma instância do wiki utilizando o [[WikiMoinMoin|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.
 1. É 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:
 * utilizar '''suEXEC'''
 * utilizar '''FastCGI ''' (ver ../FastCgi)
 * utilizar '''mod_python''' (ver ../ApacheComModPython)
 * configurar um '''Root Wiki''' (ver AjudaNaConfiguração/ApacheVoodoo)
 * Para mais configurações avançadas e alguns truques, consulte também o tópico AjudasDiversas.


'''Tabela de Conteúdos''' <<TableOfContents>>

== 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 [[http://httpd.apache.org/docs/|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 Moin``Moin: 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 Moin``Moin para lidar com o pedido. Na verdade, pode colocar este script onde quiser (todos os caminhos para os ficheiros do Moin``Moin 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 Moin``Moin que por sua vez importa outros módulos e o ficheiro de configuração. Os módulos do Moin``Moin 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 ''Moin``Moin 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ções``Recentes.
 * 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 Moin``Moin.

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 Moin``Moin: 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 Moin``Moin 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 Moin``Moin (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 Moin``Moin, 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 [[WikiMoinMoin|MoinMoin]] gerar URLs que comecem por {{{/mywiki}}} e não o caminho que o servidor web passou ao [[WikiMoinMoin|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 ''Moin``Moin 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ções``Recentes.
 * 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.
