ConteúdosDeAjuda > AjudaNaAdministração > AjudaNaInstalação

Instalar o MoinMoin com Apache utilizando ftp

Este documento descreve como instalar o MoinMoin no servidor web do seu ISP.

  • /!\ Por favor, considere-se avisado que fazer uma instalação apenas por FTP (e não tendo acesso shell) é a forma menos confortável e mais trabalhosa de a fazer. Se precisar de alterar um ficheiro, tem de o transferir por ftp para trás e para diante. Se precisar de alterar muitos ficheiros (como o seu data_dir completo ao ter de executar algum script de migração) terá de transferir muitos ficheiros para trás e para a frente por ftp. Por isso, se quiser tornar o processo mais confortável, é melhor arranjar um servidor com acesso shell.

Vamos assumir que:

  • O seu ISP suporta Python (com a versão correcta) através do CGI.
  • Não tem acesso telnet/ssh ao servidor web, sem ser acesso ftp.
  • Não tem permissões de escrita na directoria site-packages do Python.

  • Não tem permissões de acesso ao ficheiro de configuração principal do apache.

Siga estes passos:

Descarregue a distribuição mais recente do MoinMoin

Descarregue a distribuição mais recente do MoinMoin a partir da página DescarregarMoinMoin. Extraia os fiheiros do arquivo para uma directoria local. Não é necessário executar o script setup.py, só trabalhamos com o código-fonte!

Explore a configuração do servidor web

Agora é a altura de descobrir a forma como o seu ISP suporta Python. Se suportar Python, provavelmente suporta Common Gateway Interface (CGI). Como dissemos em cima, só descrevemos esta opção de instalação. Aqui fica algum trabalho de casa para fazer:

  • Descubra onde reside o binário de Python no seu servidor web. Deve encontrar algumas pistas na documentação em linha do ISP, pode perguntar à equipa de suporte ou pode tentar adivinhar. As directorias frequentes são /usr/bin/python, /usr/bin/pythonX.X (X.X significa o número da versão do Python como 2.3, 2.4 ou mais recente) ou /usr/local/bin/python. Por vezes, um ISP opta por suportar mais do que uma versão de Python, geralmente indicada no número de versão no caminho de pesquisa. Se for possível, escolha a versão mais recente. Modifique a primeira linha do script explore e a do ficheiro moin.cgi para coincidir com o caminho do executável de Python.

  • Tente encontrar um local onde os scripts de Python possam ser executados. Para o ajudar nessa tarefa, foi feito o pequeno script. Envie-o ao ser servidor web e veja se é executado ou não. Eis algumas pistas:
    • Utilize o seu cliente FTP preferido e transfira o seu scrit para a directoria cgi-bin do seu servidor web, utilizando a extensão do ficheiro .cgi. Tente ligar ao URL através de um navegador. Se não tiver um cgi-bin,

    • copie o script para a sua directoria preferida do seu servidor web, utilizando a extensão do ficheiro .py ou .cgi. Tente ligar ao URL através de um navegador.

    • Verifique-o utilizando a extensão .cgi em primeiro lugar. Depois, tente a extensão .py se for necessário.

   1 #!/usr/bin/python
   2 
   3 import os.path
   4 import os
   5 import sys
   6 
   7 tente:
   8     __file__
   9 except NameError:
  10     __file__ = '?'
  11 
  12 print """Content-type: text/html
  13 
  14 <html>
  15 <head>
  16  <title>À Descoberta de Python</title>
  17 </head>
  18 <body>
  19  <table border=1>
  20  <tr><th colspan=2>1. Informação de Sistema</th></tr>
  21  <tr><td>Python</td><td>%s</td></tr>
  22  <tr><td>Platforma</td><td>%s</td></tr>
  23  <tr><td>Caminho absoluto deste script</td><td>%s</td></tr>
  24  <tr><td>Nome do ficheiro</td><td>%s</td></tr>
  25 """ % (sys.version,
  26        sys.platform,
  27        os.path.abspath('.'),
  28        __file__)
  29 print "<th colspan=2>2. Variáveis de ambiente</th>"
  30 para variáveis em os.environ:
  31     print "<tr><td>%s</td><td>%s</td></tr>\n" % (variable, os.environ[variable])
  32 print """
  33 </table>
  34 </body>
  35 </html>
  36 """

Descarregar: explore.py

Podem surgir alguns dos seguintes problemas:

  • Se apenas surgir o código-fonte na janela do seu navegador, o seu ficheiro não foi processado pelo CGI. Provavelmente, será necessário algum tipo de configuração de apache para pôr tudo a funcional. Consulte a documentação do seu ISP.
  • Se encontrar um erro 404 Not found, provavelmente significa que escolheu o URL errado.

  • Se tiver erros no seu script, o apache geralmente comunica um Internal Server Error.

  • Se o seu script tiver privilégios incorrectos de ficheiros, o apache pode comunicar Premature End of Script Headers. Defina as permissões de ficheiro para que permita a execução do script. O seu cliente FTP fará o que tem a fazer.

Se tudo funcionar, deve surgir uma tabela no seu ecrã. Esta tabela fornece alguma informação básica sobre o seu servidor web. Depois, precisaremos da versão do Python, do Caminho absoluto deste script, do DOCUMENT_ROOT e do SITE_URI.

Copie as directorias

Tem de transferir quatro directorias da directoria moin para o seu servidor web.

  • ./wiki/htdocs contém os ficheiros estáticos (ex. folhas de estilo css e ícones). Coloque esta directoria no seu servidor web, algures debaixo do DOCUMENT_ROOT do apache e renomeie-o para 'moin_static160'. O apache tem de os distribuir directamente.

  • ./wiki/underlay contém modelos do wiki e páginas de ajuda. Coloque esta directoria no seu servidor fora do DOCUMENT_ROOT, se possível. O apache não deve conseguir distribuir estes ficheiros directamente.

  • ./wiki/data irá conter as suas páginas do wiki. Coloque-a fora do DOCUMENT_ROOT do apache.

  • ./MoinMoin contém o código-fonte do python. Coloque-a fora do DOCUMENT_ROOT do apache.

AVISO DE SEGURANÇA: Se não puder optar e tiver de colocar MoinMoin, underlay ou data dentro do DOCUMENT_ROOT do apache, é muito importante que impeça o apache de lhes aceder directamente.

1. Utilize o seu editor favorito para criar um ficheiro com o nome .htaccess.

2. Insira o texto deny from all neste ficheiro

3. Copie-o para a directoria que quer proteger através de FTP.

4. Tente aceder à directoria protegida através do seu navegador web. Se a protecção funcionar, deve obter Access denied.

5. Se não conseguir proteger estas directorias, por favor, elimine-as do seu servidor web imediatamente. Não prossiga com a sua instalação.

Configure

Existem dois ficheiros que precisam de afinação:

  • ./wiki/server/moin.cgi irá ser chamado pelo apache sempre que uma página do wiki for solicitada.

  • ./wiki/config/wikiconfig.py contém opções de configuração para o seu wiki.

Escolha uma directoria para estes ficheiros no seu servidor web. Pode escolher livremente, mas o apache tem de conseguir executar o moin.cgi. Pode ainda renomear o moin.cgi, para moin.py por exemplo, se for necessário. Recomendamos que coloque o wikiconfig.py numa directoria config que não esteja acessível ao apache. Não comece a enviar. É preciso fazer algumas modificações primeiro.#

  • /!\ Se quiser alojar mais do que um wiki, precisa de trabalhar com farmconfig.py !

moin.cgi

Agora abra o ./wiki/server/moin.cgi no seu editr favorito.

(1) Adjuste o caminho do python. Em primeiro lugar, tem de ajustas o caminho do seu python na linha 1. O novo valor depende da configuração do seu ISP.

(2) Defina o caminho para o MoinMoin. Encontrará uma linha

## sys.path.insert(0, 'PREFIX/lib/pythonX.X/site-packages')

Remova o comentário desta linha e substitua a informação do caminho. Se executou o explore.py no seu servidor web, pode utilizar a sua experiência do Caminho absoluto deste script para adivinhar o caminho absoluto para a directoria MoinMoin.

Exemplo: Transferiu o explore.py com o seu cliente FTP para a directoria /public_html no seu servidor web. O Caminho absoluto deste script revela /home/nowhere.com/public_html. Transferiu o MoinMoin para /MoinMoin. Planeia colocar o moin.cgi na /pubic_html/index.py no seu servidor web. Teria de inserir

sys.path.insert(0, '/home/nowhere.com')   # SUBSTITUÍDO!

Claro que um caminho relativo também funciona. Assim, seguindo o nosso exemplo, pode também inserir

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

(3) Set the path to wikiconfig.py. Agora procure

sys.path.insert(0, '/path/to/wikiconfig')

Insira o caminho para o wikiconfig.py no seu servidor web.

Exemplo: Transferiu o explore.py com o seu cliente FTP para a directoria /public_html no seu servidor web. Caminho absoluto deste script revela /home/nowhere.com/public_html. A directoria que pensou para o wikiconfig.py é /config. Planeia colocar o moin.cgi na /pubic_html/index.py no seu servidor web. Teria de inserir

# escolha um:
sys.path.insert(0, '/home/nowhere.com/config')           # caminho absoluto
sys.path.insert(0, '../config')                          # caminho relativo para o moin.cgi

wikiconfig.py

Abra ./wiki/config/wikiconfig.py.

(1) Defina o caminho para a sua directoria data. Tente encontrar

data_dir = './data/'

Substitua a directoria './data/' com a qual acede à sua directoria data.

Exemplo: Transferiu o explore.py com o seu cliente FTP para a directoria /public_html no seu servidor web. O Caminho absoluto deste script revela /home/nowhere.com/public_html. Transferiu o data para /data. Planeia colocar o moin.cgi no /pubic_html/index.py seu servidor web. Teria de inserir

# escolha um:
data_dir = '/home/nowhere.com/data/'   # caminho absoluto
data_dir = '../data/'                  # caminho relativo para o moin.cgi

(2) Defina o caminho para a sua directoria underlay. Tente encontrar

data_underlay_dir = './underlay/'

Substitua a directoria './underlay/' com a qual acede à directoria underlay no seu servidor web.

Exemplo: Transferiu o explore.py com o seu cliente FTP para a directoria /public_html no seu servidor web. O Caminho absoluto deste script revela /home/nowhere.com/public_html. Transferiu o underlay para a /underlay. Planeia colocar o moin.cgi na /pubic_html/index.py no seu servidor web. Teria de inserir

# escolha um:
data_underlay_dir = '/home/nowhere.com/data/'   # caminho absoluto
data_underlay_dir = '../data/'                  # caminho relativo para o moin.cgi

(3) Defina o URL dos seus ficheiros estáticos.

Os ficheiros estáticos como imagens e ficheiros de css são fornecidos pelo Apache e não pelo moin. Instale-os numa directoria acessível pelo Apache, e indique ao moin qual o url desses ficheiros.

url_prefix = '/moin_static160' # depende da versão do moin

Se copiou a sua directoria htdocs para /moin_static160 dentro do seu document root, não é necessário alterar isto.

  • (!) Importante: o url_prefix_static tem de começar com uma barra

Exemplo: Colocou o explore.py dentro de /public_html e chamou-o com http://www.your-domain.com/explore.py. Colocou o htdocs na /public_html/wiki. Assim, o url_prefix está correcto, não o altere.

(4) Defina as opções de configuração. Se navegou através do wikiconfig.py, verá um conjunto de opções. Defina estas opções como quiser. Para mais informações, consulte o tópico AjudaNaConfiguração.

Envie o moin.cgi e o wikiconfig.py

Terminou! Envie o moin.cgi e o wikiconfig.py e teste o seu wiki chamando o moin.cgi através do seu navegador. Pode ter de definir as permissões de ficheiros manualmente para permitir a execução do moin.cgi. Certifique-se de que envia ambos os ficheiros para as directorias descritas em cima.

Resumo

Eis um pequeno resumo de uma instalação de exemplo. Depois de ler este documento, espero que perceba o que fizemos e porquê.

ftp       ./wiki/data       ==>           /data
ftp       ./wiki/htdocs     ==>           /moin_static160
ftp       ./wiki/underlay   ==>           /underlay
ftp       ./MoinMoin        ==>           /MoinMoin

ftp       crie directoria     /config

crie     ./.htaccess      insira conteúdo:
deny from all

ftp       ./.htaccess      ==>           /data
ftp       ./.htaccess      ==>           /underlay
ftp       ./.htaccess      ==>           /MoinMoin
ftp       ./.htaccess      ==>           /config

edite ./wiki/server/moin.cgi:

  substitua:
           #!/usr/bin/env python
    por:
           #!/usr/bin/pythonX.X

  substitua:
           ## sys.path.insert(0, 'PREFIX/lib/pythonX.X/site-packages')
    por:
           sys.path.insert(0, '.')

  substitua:
           sys.path.insert(0, '/path/to/wikiconfig')
    por:
           sys.path.insert(0, './config')

ftp      ./wiki/server/moin.cgi   ==>     /moin.py
    
edite ./wiki/config/wikiconfig.py:

   defina o data_dir:
                   data_dir = './data/'

   defina o data_underlay_dir:
                   data_underlay_dir = './underlay/'

   defina o url_prefix:
                   url_prefix = '/moin_static160'

ftp      ./wiki/config/wikiconfig.py   ==>    /config/wikiconfig.py

Se o python do seu fornecedor for da idade da pedra ...

  • descubra qual a versão do Python que o servidor executa
  • descubra outro servidor que execute a mesma versão de Python e aíko:
    • descarrege e extraia os ficheiros da mesma versão do Python a partir de http://www.python.org

    • instale-a nesse servidor
  • depois disso, tenha um python novinho em $PREFIX
  • pode transferi-lo por ftp para a sua directoria home no fornecedor e utilizá-la a partir daí