##master-page:HelpTemplate
##master-date:Unknown-Date
#format wiki
#language pt

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

= Instalar o MoinMoin com Apache utilizando ftp =

Este documento descreve como instalar o [[MoinMoin:MoinMoin|MoinMoin]] no servidor web do seu [[WikiPedia:Internet_service_provider|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:'''
<<TableOfContents(3)>>

== Descarregue a distribuição mais recente do MoinMoin ==

Descarregue a distribuição mais recente do Moin``Moin a partir da página [[MoinMoin:MoinMoinDownload|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.

{{{#!python
#!/usr/bin/python

import os.path
import os
import sys

tente:
    __file__
except NameError:
    __file__ = '?'

print """Content-type: text/html

<html>
<head>
 <title>À Descoberta de Python</title>
</head>
<body>
 <table border=1>
 <tr><th colspan=2>1. Informação de Sistema</th></tr>
 <tr><td>Python</td><td>%s</td></tr>
 <tr><td>Platforma</td><td>%s</td></tr>
 <tr><td>Caminho absoluto deste script</td><td>%s</td></tr>
 <tr><td>Nome do ficheiro</td><td>%s</td></tr>
""" % (sys.version,
       sys.platform,
       os.path.abspath('.'),
       __file__)
print "<th colspan=2>2. Variáveis de ambiente</th>"
para variáveis em os.environ:
    print "<tr><td>%s</td><td>%s</td></tr>\n" % (variable, os.environ[variable])
print """
</table>
</body>
</html>
"""
}}}
Descarregar: [[attachment: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.

||<bgcolor="#FFAAAA">'''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}}}.||
||<bgcolor="#FFAAAA">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.
{{{
#!/usr/bin/python
}}}

'''(2) Defina o caminho para o Moin``Moin.''' 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 [[attachment: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í
