quinta-feira, 28 de maio de 2009

Trac e Subversion

Iremos demonstrar a criação de ambiente para gerenciamento de desenvolvimento de software utilizando Trac e Subversion com o Ubuntu Server 8.04 Long Time Support (LTS) Para este servidor iremos utilizar as seguintes configurações:

1. Ubuntu Server 8.04 LTS
2. Apache Http Server
3. Trac
4. Subversion
5. Integrando tudo

Para complementar serão instalados ou ativados módulos no Apache para que o mesmo integre o Trac e o Subversion em um mesmo servidor.

1. Instalação do Ubuntu Server

Não iremos nos ater muito aos detalhes da instalação do Ubuntu Server. Só alerto o cuidado com os dados que estão no disco, certifique-se que tudo que esta no disco de importante está assegurado em copias de segurança uma vez que o processo de instalação altera a estrutura do disco. certifique-se que tudo de importante no disco esteja assegurado em copias de segurança, pois o processo de instalação altera a estrutura do disco.

2. Apache Http Server

O famoso HTTP Server da Apache Foundation talvez seja o servidor de HTTP mais popular do mundo, utilizado por sistemas servidos tanto em GNU/Linux, Unix, Windows e outros.
Este servidor é famoso por sua confiabilidade e modularidade, ou seja o servidor pode receber outras funcionalidades que são acoplada por uma biblioteca de modulo, desta forma podemos utilizar este serviço para ser meio de saída tanto do servidor de versionamento como do sistema de gerenciamento.

Este servidor é amplamente conhecido por sua confiabilidade e modularidade, ou seja o servidor pode receber outras funcionalidades acopladas através de uma biblioteca de módulo. A partir estas características podemos utilizar este serviço para ser um meio de saída tanto do servidor de versionamento como do sistema de gerenciamento.

Para instalar o Apache Http Server basta executar a seguinte linha de comando:
root@myserver:~# aptitude install apache2
Com este comando teremos o Apache Http Server escutando na porta 80. Para verificar isto existe o comando fuser, este comando oferece uma ligação entre a porta e o processo. Veja como verificar se o servidor está funcionando corretamente:
root@myserver:~# fuser -n tcp 80
80/tcp: 3127 3131 3136
Neste caso temos o servidor rodando em três processos. Agora que o servidor httpd esta funcionando podemos passar para o próximo serviço, o Trac.

3. Trac

Com este comando teremos o Apache Http Server escutando na porta 80. Para verificar isto existe o comando fuser, este comando oferece uma ligação entre a porta e o processo. Veja como verificar se o servidor está funcionando corretamente:
A instalação do Trac é muito simples, basta executar o seguinte comando:
root@myserver:~# aptitude install trac postgresql-server python-psycopg2
Este comando irá instalar alguns pacotes necessários para que o servidor de Trac possa ser executado.

3.1. Preparando o servidor de banco de dados

Para prepararmos a execução do banco de dados iremos criar uma conta e um banco de dados no SGDB PostgreSQL. Veja os comandos:
  • Edite o arquivo pg_hba.conf. Neste momento vamos colocar o nosso servidor de banco de dados em um modo vulnerável, mas isto vai ser por um curto espaço de tempo. Então veja o que deve ser feito:
host    all         all         127.0.0.1/32          trust #md5
# IPv6 local connections:
host all all ::1/128 trust #md5
  • Reinicie o serviço com o comando:
root@myserver:~# invoke.rc-d postgresql-8.3 restart
  • Agora vamos criar a conta para o nosso usuário que chamaremos de trac-user e ainda vamos definir uma senha para o mesmo, guarde, pois, será necessário em outros passos deste artigo, veja os comandos:
root@myserver:~# createuser -h localhost -U postgres -SdRlP trac-user
...
  • Como definimos a senha do nosso novo usuário, vamos então voltar o banco de dados ao seu nível de segurança normal. Edite novamente x e volte os valores que foram alterados anteriormente, veja:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
host all all ::1/128 md5
  • Com o usuário criado e senha definida vamos agora criar a base de dados:
root@myserver:~# createdb -h localhost -U trac-user trac-exemplo
...
Neste momento temos o banco de dados pronto para receber o Trac. Podemos então prosseguir com o nosso artigo.

3.2. Criando o Repositório

A criação do repositório é importante notarmos algumas variáveis, pois, a configuração de qualquer uma errada pode atrapalhar todo o processo. Tenha atenção no diretório onde esta sendo criado o repositório, pois, iremos instalar o Trac e o Subversion com um path em comum, devido a didática. Iremos ter que serão criado trac e svn. Veja abaixo:
root@myserver:~# mkdir exemplo-workspace
root@myserver:~# cd exemplo-workspace
root@myserver:~/exemplo-workspace# trac-admin trac
...
Serão feitas várias perguntas, como nome do projeto e outras mais especificas como configuração de banco e repositório, lembre-se que o path do subversion esta no mesmo que o trac, sendo assim ~/exemplo-workspace/svn.

Agora vamos editar o arquivo de configuração do Trac, edite então o arquivo trac.ini:
database = postgres://trac-user:123@localhost:5432/dbname?schema=trac-exemplo
Para garantir que a configuração do banco de dados esta correta e que as tabelas foram criadas de acordo com as necessidades do Trac, execute o comando:
root@myserver:~/exemplo-workspace# trac-admin trac upgrade
Configuramos o Trac para utilizar a nossa conta e nosso banco criado no PostgreSQL. Mais para frente voltaremos modificar este arquivo.

3.3. Usuários e Senhas

Para esta tarefa iremos utiliza um aplicativo chamado htpasswd o mesmo poderia ser feito com o aplicativos htdigest, mas não iremos nos ater a esta configuração.

Vamos criar o usuário admin, que será o administrador do trac.
root@myserver:~/exemplo-workspace# htpasswd -c passwd admin
...
Será solicitado a nova senha, guarde, pois, esta credencial será utilizada para administrar o Trac. Com isto podemos seguir para o subversion.

4. Subversion

O subversion será utilizado para promover o trabalho colaborativo e em equipes, será utilizado para controlar as modificações no código do software que esta sendo desenvolvido.

Para instalar este serviço é muito simples, execute o comando:
root@server:~# aptitude install svn
Agora que o nosso controlador de versão esta instalado, vamos criar agora o nosso repositório subversion, veja o comando logo abaixo:
root@myserver:~/exemplo-workspace# svnadmin create svn
Com este comando será criado um diretório com o nome indicado em [repositório], este diretório será usando no arquivo de configuração do Trac no próximo item do artigo quando tudo será integrado.

5. Integrando tudo

Agora vem a vem a parte mais legal deste artigo, colocar o Trac para rodar junto com o servidor de Subversion, e o melhor, colocar os dois para autenticar em uma mesma autenticadora.

5.1. Terminando a configuração do Trac


Quando configuramos o Trac no item 3.2 alteramos o arquivo trac.ini, iremos fazer mais uma modificação informando agora ao Trac em que local foi criado o repositório svn. Encontre e modifique a variável repository_dir e configure da seguinte forma:
repository_dir = /root/exemplo-workspace/svn
5.2. Configurando o Apache Http Server para o Trac

Para realizar esta integração iremos utilizar o modulo mod_python, este modulo permite colocar aplicações escritas em python para rodar utilizando o servidor Apache Http Server. Esta configuração requer uma devida atenção as permissões do diretório onde o Trac foi instalado, lembre-se de garantir privilegios ao usuário www-data, veja com fazer isto logo abaixo:
root@myserver:~/exemplo-workspace# chown root.www-data trac/ -R
root@myserver:~/exemplo-workspace# find trac -type d -print0 | xargs -0 chmod g=gwx
root@myserver:~/exemplo-workspace# find trac -type f -print0 | xargs -0 chmod g=g
Agora vamos instalar e ativar o mod_python:
root@myserver:~/exemplo-workspace# aptitude install libapache2-mod-python
...
root@myserver:~/exemplo-workspace# a2enmod python
...
Já temos o servidor com o modulo ativo, vamos configurar o apache agora para mapear o endereço http://localhost/trac-exemplo/trac como sendo o nosso ambiente Trac instalado em (/root/exemplo-workspace/trac). Veja o arquivo de configuração:
<location /trac-exemplo/trac>
SetHandler mod_python
PythonInterpreter main_interpreter
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /root/exemplo-workspace/trac
PythonOption TracUriRoot /trac-exemplo/trac
Order allow,deny
Allow from all
</location>

<LocationMatch "/trac-exemplo/trac/login">
AuthType Basic
AuthName "Trac"
AuthUserFile /root/exemplo-workspace/passwd
Require valid-user
</LocationMatch>
5.3. Configurando o Apache Http Server para o Subversion

Antes de mais nada precisamos instalar o modulo que faz o servidor apache conversar com o repositório subversion, veja:
root@myserver:~/exemplo-workspace# aptitude install libapache2-svn
A configuração da integração do Subversion é bem parecida com a do Trac, veja:

5.3. Sites sugeridos

Trac Project
Trac Hacks Plugins, modules, etc
svnbook-pt-br
Apache/Python Integration
TracModPython – The Trac Project

Nenhum comentário:

Postar um comentário

 

Todo o conteúdo deste blog pode ser republicado, desde que seja realizada a citação.