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 /
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
SVNPath /opt/repositorio
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /etc/svn/auth/svn-auth-file
Require valid-user
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:
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?
Postar um comentário