##master-page:HelpTemplate
##master-date:Unknown-Date
#format wiki
#language pt
'''Instalar e configurar um servidor standalone'''

Veja também: AjudaNaConfiguração/IntegrarComApache

O servidor standalone foi feito especialmente para os wikis locais, por não necessitar de um servidor web instalado. São apenas necessários, o Python e o Moin!

Para instalar e executar o servidor standalone:
 1. Se o WikiMoinMoin ainda não estiver instalado, faça uma ../InstalaçãoBásica
 1. Crie uma instância do wiki como descrevemos na ../CriaçãoDeInstânciasDoWiki
 1. Copie o {{{moin.py}}} para a sua directoria wiki, onde se encontra o seu {{{wikiconfig.py}}}
 1. Se instalou com a opção `--prefix`, é necessário editar o moin.py e configurar a `docs` no caminho correcto.
 1. Execute o {{{moin.py}}}
 1. Aceda ao seu wiki em http://localhost:8000/

Na maioria dos casos, as definições por omissão são suficientes. Se quiser pode editar o {{{moin.py}}} e alterar algumas das opções, como as que descrevemos na secção seguinte.

= Configurar o moin.py =

== Configuração do caminho de sistema ==

Se fez uma instalação standard, e não é um programador, deve saltar esta secção. Caso contrário, adicione o caminho para o poin e para o ficheiro config, assim:

{{{
import sys
sys.path.insert(0, '/caminho/para/moin')
sys.path.insert(0, '/caminho/para/wikiconfig')
}}}

<<Anchor(options)>>
== Opções da classe Config ==

|| '''Opção''' || '''Por omissão''' || '''Comentário''' ||
|| name || {{{'moin'}}} || Nome do servidor, utilizado por omissão para ficheiros log e pid. (!) Novo na versão 1.5 ||
|| docs || {{{'/usr/share/moin/wiki/htdocs'}}} || Caminho para os ficheiros do moin partilhados. Se utilizou a instalação `--prefix`, o caminho por omissão não funcionará, e terá de definir o caminho como {{{'PREFIX/share/moin/wiki/htdocs'}}}. ||
|| user || {{{'www-data'}}} || Se executar como root, o servidor irá executar a partir deste utilizador ||
|| group || {{{'www-data'}}} || Se executar como root, o servidor irá executar a partir deste grupo ||
|| port || {{{8000}}} || Porto para receber. Para receber um porto privilegiado abaixo de 1024 terá de executar como root ||
|| interface || {{{'localhost'}}} || A interface a que o servidor prestará atenção. Por omissão, prestará atenção apenas ao localhost. Configure como {{{''}}} para prestar atenção a todas.||
|| logPath || {{{name + '.log'}}} || Ficheiro de acessos. O ficheiro por omissão é comentado. ||
|| serverClass || {{{'ThreadPoolServer'}}}, {{{'ThreadingServer'}}}, {{{'ForkingServer'}}}, {{{'SimpleServer'}}}, {{{'SecureThreadPoolServer'}}} || O tipo de servidor a utilizar. Veja os comentários no ficheiro {{{moin.py}}}. Por omissão é o {{{'ThreadPoolServer'}}}, que cria um conjunto de threads e reutiliza-os para novas ligações. (!) Novo na versão 1.3.5 ||
|| threadLimit || {{{10}}} || Quantas threads a criar. ||
|| requestQueueSize || {{{50}}} || A contagem de pedidos de ligação por socket colocados em buffer pelo sistema operativo. (!) Novo na versão 1.3.5 ||
|| properties || {{{ {} }}} || Permite a sobreposição de qualquer propridade de pedido, definindo o valor neste dicionário. Por exemplo, {{{properties = {'script_name': '/mywiki'}}}}. (!) Novo na versão 1.5 ||
|| ssl_privkey || {{{ None }}} || Se utilizar o SecureThreadPoolServer, este terá de apontar para a chave privada do servidor (!) Novo na versão 1.6 ||
|| ssl_certificate || {{{ None }}} || Se utilizar o SecureThreadPoolServer, este terá de apontar para o certificado do servidor (!) Novo na versão 1.6 ||

 (!) Podem existir mais opções úteis para programadores do moin. Veja os comentários em {{{moin.py}}}

== Utilizar o servidor standalone com segurança ==

(!) Novo na versão 1.6

O servidor standalone suporta SSL ao utilizar a classe do servidor SecureThreadPoolServer. O suporte SSL é fornecido pela [[http://trevp.net/tlslite/|TLSLite library]]. '''Todo o tráfego do wiki é forçado a passar pelo SSL ao utilizar o SecureThreadPoolServer'''. 

São necessárias ainda duas opções de configuração adicionais ao utilizar o SecureThreadPoolServer. Em primeiro lugar, o `ssl_privkey` tem de apontar para a chave privada do servidor. Em segundo lugar, o `ssl_certificate` tem de apontar para o certificado do servidor.

/!\ ''O TLSLite não suporta uma senha protegida por uma chave privada sem que outras bibliotecas sejam utilizadas. Para mais informações, consulte a página web doTLSLite.''

Normalmente, um certificado seria comprado a uma autoridade de certificados, como a Thawte (http://www.thawte.com). No entanto, uma vez que a utilização sugerida do servidor standalone é para uso pessoal, um certificado auto-assinado deve ser suficiente. Para mais informações sobre como gerar uma chave privada do servidor, e um certificado auto-assinado, consulte as páginas de [[http://www.openssl.org/docs/HOWTO/|HOWTO openssl]].

Por exemplo, para criar a chave privada do servidor, execute o seguinte:

`openssl genrsa -out privkey.pem 2048`

Para criar um certificado auto-assinado para a nova chave privada criada, execute o seguinte:

`openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095`

O moin.py precisará então de tomar conhecimento da existência dos ficheiros `privkey.pem` e `cacert.pem` gerados. Para o exemplo em cima, é necessário acrescentar as seguintes linha ao moin.py:

{{{
    ssl_privkey = "/caminho/seguro/para/privkey.pem"
    ssl_certificate = "/caminho/seguro/para/cacert.pem"
}}}

/!\ Utilizar um certificado auto-assinado fará com que o seu navegador gere um aviso a dizer que não consegue verificar a identidade do servidor do wiki. Isto é porque o certificado não foi assinado por uma autoridade de certificados (CA) reconhecida. Para não ver este aviso, é necessário comprar um certificado a uma CA.

= Configurar o wikiconfig.py =

O ficheiro config de exemplo deve ser suficiente.

O valor do `url_prefix_static` por omissão é codificado no script do servidor standalone. Não o altere ou não funcionará!

= Iniciar o servidor =

Execute {{{moin.py}}} a partir da linha de comandos:
{{{
$ ./moin.py
Serving on localhost:8000
}}}

Teste o seu wiki em http://localhost:8000/

Em Windows, pode clicar duas vezes em {{{moin.py}}} para iniciar o servidor. Uma nova janela do terminal será aberta. Feche a janela ou pressione em {{{Control + Pause}}} para parar o servidor.

Em Unix, interrompa o servidor com {{{Control + C}}} para o desligar.

= Porto 80 em Unix =

Em GNU/Linux, Mac OS X ou outro sistema operativo do tipo Posix, pode ter o porto 80 standard utilizada para web serving, mas tem de executar como {{{root}}} para isto.
 
Defina o {{{port}}} como 80, e verifique que o {{{user}}} e o {{{group}}} existem no seu sistema. Se não, defina-os para um utilizador existente, destinado a web serving. Se necessário, faça {{{chown}}} à directoria do seu wiki para este utilizador e grupo.

Execute {{{moin.py}}} como root:
{{{
$ sudo moin.py
Password:
Serving on localhost:8000
Running as uid/gid 70/70
}}}

Teste o seu wiki em http://localhost/

= Executar como daemon =

Se executar em Unix, pode executar o moin.py como um processo de fundo:
 1. Tenha um {{{moin.py}}} a funcionar como explicamos em cima
 1. Copie o ficheiro {{{prefix/share/moin/server/moin}}} para a directoria do seu wiki.
 1. Inicie o servidor do moin:
{{{
./moin start
}}}

Para parar o servidor:
{{{
./moin stop
}}}

Para mais informações, execute o {{{moin}}} sem argumentos.

Se quiser iniciar o moin a partir de um script de iniciar de sistema, pode precisar de adicionar o caminho para o {{{moin.py}}} no topo do script:
{{{
# Adicione o caminho para a directoria moin.py 
import sys
sys.path.insert(0, '/path/to/moin')
}}}

 (!) Novo na versão 1.5
