Hoje precisei configurar um novo repositório SVN  em um servidor Ubuntu Server 13.04 para a empresa em que trabalho. Vou mostrar abaixo o processo que utilizei para isso, caso alguém precise de algo parecido.

Seguindo  esta documentação do ubuntu  e esta outra documentação do  subversion  configurei o servidor da seguinte maneira.

Instalação subversion

sudo apt-get install subversion

Diretórios para armazenar os repositórios

sudo mkdir /home/svn

cd /home/svn

sudo mkdir projeto-a

sudo mkdir projeto-b

Criando os repositórios

sudo svnadmin create /home/svn/projeto-a

sudo svnadmin create /home/svn/projeto-b

Passando a propriedade dos diretórios para o Subversion e para o Apache que será utilizado para acessar os dados do repositório.

sudo chown -R www-data:subversion /home/svn

sudo chmod -R g+rws  /home/svn/projeto-a

sudo chmod -R g+rws  /home/svn/projeto-b

O acesso ao svn será feito via protocolo  WebDAV  através do Apche, apra isso precisamos instalar o libapache2-svn, o que pode ser feito via apt-get

sudo apt-get install libapache2-svn

Como o repositório ficará em um servidor aberto na web  por questões de segurança vamos configurar para que o acesso aos projetos utilizarão autenticação  Digest  e também iremos instalar e configurar o  Fail2ban  para prevenir tentativas consecutivas de acesso não autorizado ao servidor.

Adicione o seguinte código no arquivo /etc/apache2/mods-available/dav_svn.conf

sudo vim /etc/apache2/mods-available/dav_svn.conf

<Location /svn/projeto-a>
DAV svn
SVNPath /home/svn/projeto-a
AuthType Digest
AuthName "Projeto A"
AuthUserFile /home/svn/users/projeto-a.htdigest
Require valid-user
</Location>
 
<Location /svn/projeto-b>
DAV svn
SVNPath /home/svn/projeto-b
AuthType Digest
AuthName "Projeto B"
AuthUserFile /home/svn/users/projeto-b.htdigest
Require valid-user
</Location>

Agora você precisa criar os aquivos de autenticação de cada repositório e adicionar os usuários a eles com os comandos abaixo.

sudo htdigest -c /home/svn/users/projeto-a.htdigest "Projeto A" jaspion

A opção -c é a que cria o arquivo para adicionar outro usuário no mesmo aquivo ela não é necessária ficando como abaixo.

sudo htdigest  /home/svn/users/projeto-a.htdigest "Projeto A" jaspion2

Pronto, caso tudo tenha ocorrido como esperado agora você já pode acessar a url do seu servidor (Ex: http://seuservidor.com/svn/projeto-a ) que será solicitado o usuário e senha que você criou e ao preencher estes campos será exibida uma pagina com o nome do repositório dizendo que está na revisão 0.

Configurando o  Fail2ban  para evitar muitas tentativas de acesso inválido ao servidor vamos utilizar o Fail2ban para que a cada 5 tentativas de login incorretas consecutivas ele bloqueie o acesso do ip da onde partiram as requisições por 10 minutos.

sudo apt-get install fail2ban

Para Ativar o monitoramento do Apache edite o arquivo /etc/fail2ban/jail.conf deixando a sessão do Apache como o seguinte.

sudo vim /etc/fail2ban/jail.conf

[apache]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache*/*error.log
maxretry = 6

Inicie o serviço com o comando.

sudo fail2ban start

Agora caso alguém tente logar 5 vezes consecutivas com usuário e senha incorreto seu ip ficará bloqueado por 10 minutos no servidor.

Para fazer checkout do projeto em sua máquina basta utilizar o seguinte comando.

svn co http://seudominio.com.br/svn/projeto-a --username usuario

Bom é isso espero que tenha sido útil, qualquer dúvida é só deixar nos comentários.