sexta-feira, novembro 17, 2006

Como instalar o SVN no Slackware 10.2 utilizando o Apache2 como servidor.

Longe de ser completo, mas deu certo aqui. É ideal se você colocar uma máquina velha para ser apenas servidor SVN, como foi o meu caso.

Como instalar o SVN no Slackware 10.2 utilizando o Apache2 como servidor.
jmarcelo.alencar(at)gmail.com (Slackware-CE)

Antes de mais nada, irei citar minhas fontes :
http://svn.collab.net/repos/svn/trunk/INSTALL
http://svnbook.red-bean.com/
Estes dois links explicam muito bem o que eu irei mostrar aqui. Também vou manter o Apache 1.3.33, colocando o Apache2 em outra pasta. O objetivo não é configurar o Apache2 para ser um servidor totalmente funcional, apenas adaptá-lo para o SVN.

Esta instalação segue o seguinte esquema:
1) Compilação do SVN.
2) Utilizar o cliente SVN para baixar os fontes do Apache2.
3) Recompilar SVN com suporte ao Apache2.
4) Criar um repositório de teste.
5) Configurar o Apache2 para o SVN.

Detalhando:

1) Compilação do SVN.

Baixe os fontes de:
http://subversion.tigris.org/tarballs/subversion-1.1.4.tar.bz2

Escolha uma pasta e:
$ tar -xjvf subversion-1.1.4.tar.bz2
$ cd subversion-1.1.4
$ ./configure
$ make
# make install (como root)

Pronto, o SVN, ainda sem o Apache2, está pronto. Ele pode ser usado agora para baixar os fontes do Apache2.


2) Utilizar o cliente SVN para baixar os fontes do Apache2.

Escolha um diretório e digite:

$ svn co http://svn.apache.org/repos/asf/httpd/httpd/branches/2.0.x httpd-2.0
$ cd httpd-2.0/srclib/
$ svn co http://svn.apache.org/repos/asf/apr/apr/branches/0.9.x apr
$ svn co http://svn.apache.org/repos/asf/apr/apr-util/branches/0.9.x apr-util
$ cd ..
$ ./configure --enable-dav --enable-so --enable-ssl

A primeira opção manda compilar o mod_dav, necessário para o SVN. A segunda habilita o suporte a módulo compartilhado e a terceira habilita o SSL.

$ make
# make install (como root).

Pronto. Apache2 instalado em /usr/local/apache2. Vamos compilar o SVN para ter suporte para o recém-instalado Apache2.

3) Recompilar SVN com suporte ao Apache2.

Volte ao diretório contendo os fontes do subversion.

$ ./autogen.sh
$ ./configure --with-apxs=/usr/local/apache2/bin/apxs
# rm /usr/local/lib/libsvn* (remova as bibliotecas antigas)
$ make clean
$ make
# make install

Feito isso, temos o SVN com suporte ao Apache2.

4) Criar um repositório de teste.

Irei criar um repositório de teste no diretório /opt/repositorio . Como fazer isto também está descrito no
arquivo README que acompanha os fontes do SVN.

$ svnadmin create /opt/repositorio

Vou criar um pequeno projeto na pasta /tmp/projeto, com alguns arquivos de exemplo, que podem ser textos simples. Vamos colocá-lo no repositório.

$ svn import /tmp/projeto file:///opt/repositorio -m "Testando"

Para testar, faça o checkout para outra pasta local.

$ svn checkout file:////opt/repositorio project

Veja o conteúdo da pasta project. Lá estarão os arquivos. Faça um alteração nos arquivos e execute.

$ svn commit --message "Testando novamente"

Não retornando nenhum erro, o repositório foi criado corretamente.

5) Configurar o Apache2 para o SVN.

Agora a parte mais interessante. Vamos fazer uma configuração básica, mas que é capaz de mostrar muito do que pode ser feito. Vamos mexer no /usr/local/apache2/conf/httpd.conf para indicar algumas informações básicas, dentre elas o nome do usuário (User) e grupo (Group) do servidor, o nome do servidor e a porta que ele vai usar.

Os campos de User e Group devem ficar assim:

User nobody
Group nobody

nobody é usado no Slackware por padrão. Na seção ServerName, irei deixar assim:

ServerName dominio.com.br:8090

Estou usando 8090 por escolha, pode ser qualquer outra porta. Também é preciso achar a seção Listen e deixá-la assim:

Listen 8090

Estes campos nem sempre são fáceis de serem achados no httpd.conf. Se você estiver usando o vi, digite dois pontos, depois /, sendo a palavra procurada. Assim, você acha mais fácil os campos indicados. Porém, aconselho ao leitor procurar detalhadamente no texto, lendo os comentários, que são bastante instrutivos.

Isto deve bastar. Digite :

# /usr/local/apache2/bin/apachectl start

E depois tente abrir http://localhost:8090 . Aparecendo alguma coisa que não seja erro de página não encontrada, tudo deu certo até agora.

Temos que verificar no mesmo /usr/local/apache2/conf/httpd.conf se a linha :

LoadModule dav_svn_module modules/mod_dav_svn.so

Está descomentada. Agora colocaremos no final do httpd.conf o seguinte:

# Repositórios SVN

<Location /svn >
DAV svn
SVNPath /opt/repositorio
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /etc/svn/auth/svn-auth-file
Require valid-user
</Location>

Está uma configuração básica. O repositório já deve estar acessível. Os usuários precisarão estar inclusos no arquivo /etc/svn/auth/svn-auth-file para poderem acessar o repositório. Como o Apache está em execução como o usuário nobody, este usuário tem que ter permissão para escrever no repositório. Então :

chown -R nobody.nobody /opt/repositorio

Para incluir um usuário no arquivo, basta:

htpasswd -cm /etc/svn/auth/svn-auth-file joao

E entrar com usuário e senha para joao. Isto é apenas a configuração básica. O svn ainda permite restringir acesso a diretórios ao mesmo tempo que acesso a outros dentro do repositório são liberados. Mais informações em http://svnbook.red-bean.com/nightly/en/svn.serverconfig.httpd.html, lembrando que boa parte desta documentação direciona para os tutoriais do Apache2.

Post a Comment

Um comentário:

Anônimo disse...

João, por coincidência estava estudando SVN, e por mais coincidência ainda pelos mesmos links, há uma dica para quem não gosta de compilar nada:
http://www.linuxpackages.net/pkg_details.php?id=4797
o Pacote tgz para o SVN, caso alguém não queria "perder" tempo com a compilação. João, o artigo está irado! Vamos participar da equipe de tradução do livro da O'Reilly de tradução?