Instalando o Trac na Bluehost
Introdução
Este how-to lhe mostrará como instalar o Trac numa conta padrão na Bluehost. Esta instalação usará o Trac 0.11 com SQLite 3.3.17, nos modos CGI e FastCGI. Mod_python a Bluehost não suporta. Tive problemas com versões anteriores do trac para instalar o plugin webadmin. Esta versão já tem o webadmin embutido. Também não irei integrar o Trac com o SVN, devido também à restrições da Bluehost à instalação de um servidor SVN. Até é possível instalar um servidor SVN, mas não é possível acessá-lo de fora via svn:// através do apache. Já vi alguns textos mostrando como acessar através de um túnnel ssh. Fique à vontade para tentar. Neste caso, informe os dados do repositório svn ao criar o projeto do Trac. Para este how-to, apenas instalaremos o svn para usar o lado cliente para baixar os pacotes.
Atenção!
Estou assumindo que você é um administrador responsável de sua conta. Isto significa que você irá fazer o backup de seus dados antes de prosseguir. Estas instruções funcionaram para mim, e eu acredito que você não terá nenhum problema com elas. Mas lembre-se: o ambiente é seu, e eu não me responsabilizo por qualquer imbecilidade bobagem que você venha a fazer com ele.
Também não vou me ater aqui a detalhes de segurança. Meu objetivo é fazer o trac funcionar e não indicar como manter o seu site seguro. Isto você já deve saber (eu espero).
Todos os passos aqui descritos foram resultados de alguns dias de pesquisas e tentativas. Alguns deles, em plena madrugada anterior ao dia de trabalho. Espero que meu esforço não tenha sido em vão e que este texto lhe ajude de verdade à usar esta ótima ferramenta.
Paulo Brito
Preparação
- Crie diretório “~/lib/python2.3/site-packages”
- Caso tenha algum problema com pacotes tentando usar ~/lib64, crie link simbólico de “~/lib64″ para “~/lib”.
Instalando o SVN
Para instalar o svn v1.3.2, utilize os comandos:
cd ~/downloads
wget http://subversion.tigris.org/downloads/subversion-1.3.2.tar.gz
tar zxvf subversion-1.3.2.tar.gz -C ../src
cd ~/src/subversion-1.3.2
./configure --prefix=$HOME --without-berkley-db --with-zlib --with-ssl
make
make install
Estas instruções foram retiradas de http://blog.matharvard.com/2006/9/21/mephisto-subversion. Logo no começo da página, há um link para um outro artigo mostrando como instalar a versão 1.4.2 e, possivelmente, as versões mais recentes.
Instalando o “Easy Install”
O EasyInstall e necessário para instalar algums plugins e o Genshi. Instale utilizando os comandos:
cd ~/downloads
wget http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py --PREFIX=$HOME
Instalando Genshi
O Genshi é uma biblioteca necessária ao Trac. Para instalar, utilize o conmando, de qualquer diretório:
easy_install --prefix=$HOME Genshi
O pacote vai ser baixado e instalado automaticamente.
obs: o parâmetro “–prefix” deve estar neste ordem.
Instalando o SQLite
O Sql Lite é um banco de dados Sql que é executado junto com a aplicação. É rápido e versatil. Para instalá-lo, utilize:
cd ~/downloads
wget http://www.sqlite.org/sqlite-3.3.17.tar.gz
tar zxvf sqlite-3.3.17.tar.gz -C ../src
cd ~/src/sqlite-3.3.17
./configure --prefix=$HOME --disable-tcl
make
make install
Instalando o Trac
Vamos usar o snv para baixar a última revisão do Trac. A versão 0.10 apresenta problemas para instalar o plugin WebAdmin. A partir da versão 0.11, o webadmin está incorporado.
cd ~/src
svo co http://svn.edgewall.org/repos/trac/trunk trac
cd trac
python setup.py install --prefix=$HOME
Criando o projeto do Trac
Escolha um diretório onde ficarão os projetos do trac. Dentro deste diretório, execute
trac-admin [projeto] initenv
Para uma configuração padrão, sem integração com o subversion, digite somente o nome do projetos, e dê enter em todas as perguntas subsequentes.
Configurando o modo CGI
Não podemos fazer as alterações no httpd.conf que o site do trac pede, então vamos usar uma maneira menos elegante mas que funciona.
Escolha um diretório dentro de “~/www” para abrigar o trac. Não é necessário ser algum cgi-bin pré-configurado. Podemos configurar qualquer diretório para o trac com algumas configurações no .htaccess. Eu escolhi “~/www/trac”.
Copie o arquivo trac.cgi de “~/share/trac/cgi-bin” para este diretório. Isto substitui a linha “ScriptAlias /trac /usr/share/trac/cgi-bin/trac.cgi” que precisaríamos adicionar ao httpd.conf
Precisamos agora fazer algumas modificações no CGI, ja que o seu cgi não será executado como o seu usuário. Por isto, ele não reconhece o seu ~/lib/python2.3/site-packages nem a variável de ambiente PYTHONPATH. Temos que dizer isso a ele em tempo de execução. Lembre-se que, como o cgi vai ser executado com outro usuario que não o seu, ele não sabe nada sobre “~/”. Então, use sempre caminhos completos.
Crie um novo arquivo chamado “pythonpath.py” e adicione estas linhas:
import sys;
sys.path.append("/home/[seuhome]/lib/python2.3/site-packages/")
sys.path.append("/home/[seuhome]/lib/python2.3/site-packages/Trac-0.11dev_r5292-py2.3.egg")
sys.path.append("/home/[seuhome]/lib/python2.3/site-packages/setuptools-0.6c5-py2.3.egg")
sys.path.append("/home/[seuhome]/lib/python2.3/site-packages/Genshi-0.4-py2.3.egg")
O que este arquivo irá fazer é colocar no path do python as nossas bibliotecas locais. Este código deve ser executado a cada chamada no nosso CGI, então edite o arquivo trac.cgi e adicione as seguintes linhas entre o primero “try” e “from trac.web import cgi_frontend”:
import os, pythonpath
os.environ["TRAC_ENV"] = "/home/[seuhome]/trac/[dir-projeto]"
Deve ficar parecido com isto:
try
import os, pythonpath
os.environ["TRAC_ENV"] = "/home/[seuhome]/trac/[dir-projeto]"
from trac.web import cgi_frontend
cgi_frontend.run()
except SystemExit:
raise
(...)
o “import os, pythonpath” executa o nosso ajuste de path. A linha “os.environ…” substitui a entrada
SetEnv TRAC_ENV “/path/to/projectenv”
que você deveria fazer no httpd.conf. Esta instrução diz ao trac onde ele deve buscar o projeto.
Você pode renomear o arquivo trac.cgi para o que você quizer. No meu caso, usei o nome do projeto. Assim, a url fica dominio.com/trac/projeto ao invés de dominio.com/trac/trac.cgi. Vale lembrar que você pode ter vários cgis neste mesmo diretório. Mude somente a linha “os.environ” para apontar para o projeto correspondente.
Para uma configuração mais flexível, coloque o pythonpath.py em algum diretório padrão e crie links simbólicos na pasta onde o trac.cgi estiver. Isto evita ter várias cópias do pythonpath.py e evita muitas dores de cabeça na instalação de plugins para o python, já que para cada plugin instalado, deve existir uma entrada em pythonpath.py indicando o seu caminho. Perceba que algumas das entradas se referem a arquivos e outras a diretórios.
Agora temos que configurar o .htaccess para rodar o cgi. Adicione estas linhas:
Options ExecCGI
SetHandler cgi-script
Usei aqui o SetHandler ao invés do AddHandler porque usei um nome de arquivo sem extensão cgi. Neste caso, todos os arquivos deste diretório serão processados como cgi.
Para que o trac peça o login antes mesmo de mostrar o wiki, adicione as linhas abaixo. O efeito colateral é que não é possível se deslogar:
AuthType Basic
AuthName "Trac"
AuthUserFile /home/[seuhome]/www/trac/.htpasswd
Require valid-user
Se optar por habilitar a autenticação, não será possivel usar o trac como o usuário “anonymous”. Como criar usuários para a autenticação pode ser encontrado no site do trac.
Uma forma mais recomendada é a instalação do plugin AccountManager, disponível no site do Trac.
Configurando o modo FastCGI
O procedimento é basicamente o mesmo que o modo CGI, com 2 modificações:
1. O arquivo a ser copiado é o trac.fcgi e não o trac.cgi
2. No .htaccess, troque “SetHandler cgi-script” por “SetHandler fastcgi-script”
Espere alguma demora na primeira requisição, pois o seu fcgi será carregado na memória e ficará carregado para as requisições subsequentes. Algumas alterações na configuração do Trac irão necessitar que você mate o processo do seu fcgi. Por exemplo, se você não renomeou o trac.fcgi, o comando
killall trac.fcgi
deve matar o seu fcgi. A próxima requisição vai cerregá-lo novamente para memória.
Pronto!
A instalação está completa. Agora você já pode customizar o seu trac.conf da maneira que lhe convier. Não se esqueça que se você usou o modo fcgi do Trac, a primeira requisição será bem demorada.