Como o AOLServer não tem um módulo nativo para o Trac como o Apache, o processo de configuração do é um pouco mais complicado. Acresentamos ainda a complexidade de fazê-lo funcionar de maneira integrada como OpenACS. Na verdade, a única dificuldade é entender a configuração dos scripts CGI e fazer o Trac ser executado dessa forma pelo servidor. Ainda não consegui fazer a autenticação funcionar, mas esse deve ser o próximo passo do meu trabalho.
Instalação do Trac e SVN
Instalação do setuptools
# apt-get install python-setuptools
Genshi
# apt-get install python-genshi
Clear silver (parece opcional, mas vamos instalar)
# apt-get install python-clearsilver
Psycopg2
# apt-get install python-psycopg2
Subversion
# apt-get install python-subversion
Trac
# easy_install --prefix=/usr/local http://svn.edgewall.org/repos/trac/tags/trac-0.11
Atualização
Atualizei minha versão do Debian do Etch para o Lenny e o Trac parou de funcionar. O easy_install também não funcionou mais e precisei alterar um pouco os procedimentos de instalação:
# cd /usr/local
# svn co http://svn.edgewall.org/repos/trac/tags/trac-0.11
# ln -s trac-0.11/ trac
# cd trac
# python ./setup.py install
Obs.: Temos que sair e entrar para recarregar o bash, já que o caminho dos executáveis mudou.
Executamos o comando para configurar o Trac. No caso, considero o banco acessado em máquina local pelo usuário padrão do OpenACS (service0).
trac-admin /srv/trac/openacs initenv
Trac will first ask a few questions about your environment
in order to initalize and prepare the project database.
Please enter the name of your project.
This name will be used in page titles and descriptions.
Project Name [My Project]> OpenACS Fixes
Please specify the connection string for the database to use.
By default, a local SQLite database is created in the environment
directory. It is also possible to use an already existing
PostgreSQL database (check the Trac documentation for the exact
connection string syntax).
Database connection string [sqlite:db/trac.db]> postgres://service0:@localhost:5432/trac?schema=trac
O banco de dados deve estar criado. Ele vai criar um novo esquema. Precisa ser um que não exista ainda.
Please specify the type of version control system,
By default, it will be svn.
If you don't want to use Trac with version control integration,
choose the default here and don't specify a repository directory.
in the next question.
Repository type [svn]>
Please specify the absolute path to the version control
repository, or leave it blank to use Trac without a repository.
You can also set the repository location later.
Path to repository [/path/to/repos]> /srv/svn/openacs
Aqui é necessário colocar o caminho para o seu repositório.
Alterações na Configuração
No OpenACS, será necessário alterar o arquivo config.tcl
ns_section "ns/server/${server}/module/nscgi"
ns_param map "GET /trac /usr/local/trac/cgi-bin/trac.fcgi"
ns_param map "POST /trac /usr/local/trac/cgi-bin/trac.fcgi"
ns_param map "HEAD /trac /usr/local/trac/cgi-bin/trac.fcgi"
ns_param environment cgi ;# Config. section which defines
;# additional environment variables.
# ns_param Interps CGIinterps
ns_section "ns/environment/cgi"
ns_param TRAC_ENV /srv/trac/openacs ;# defines env. var "FOO=BAR"
Parece fácil, mas levei quase dois dias para conseguir fazer isso. Os truques envolvidos são:
- Mapear o endereço certo para o script. O secreto é fazer que, para qualquer URL que tenha /trac, seja executado o script no local informado. O meu problemafoi que /trac/ não funciona, e não adianta tentar fornecer o caminho do script na mão. Ele deve ser executado para cada requisição de URL.
- Inserir a variável de ambiente. É fácil, mas pode dar algum trabalho.
- Inserir a carga do módulo nscgi:
ns_param nscgi ${bindir}/nscgi.so
Múltiplos ambientes
Para ajustar mais de um ambiente do Trac, basta alterar a configuração da variável de ambiente dos scripts cgi:
ns_section "ns/environment/cgi"
ns_param TRAC_ENV_PARENT_DIR /srv/trac ;# defines env. var "FOO=BAR"