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 ServerNã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 ServerO 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 dadosPara 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órioA 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 SenhasPara 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. SubversionO 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 sugeridosTrac ProjectTrac Hacks Plugins, modules, etcsvnbook-pt-brApache/Python IntegrationTracModPython – The Trac Project