Tabela de Conteúdos

Página desactualizada Esta página contém uma versão anterior deste guia que pode estar desatualizada. Para a consultar a versão mais recente clique aqui.

4.4.1 SVN via HTTP(S)

Objectivo

Por vezes é mais prático aceder a um repositório svn através do protocolo https, podendo assim ser utilizado um simples browser com cliente svn.

A configuração do servidor svn via http(s) depende da instalação prévia do pacote de software Subversion, um sistema de controle de versões.

Instalação

A instalação do pacote libapache2-svn fornece o módulo dav_svn para que o apache possa funcionar como servidor svn via http ou https:

root@server:~# aptitude install libapache2-svn

Configuração

Verificar que o módulo dav_svn do apache2 está ligado:

root@server:~# a2enmod dav_svn

O módulo de autenticação auth_digest também deve estar activo:

root@server:~# a2enmod auth_digest

Na configuração deverá ser indicada a URL do repositório e a localização dos repositórios no sistema. O acesso aos repositórios será também restringido a utilizadores autorizados. O mecanismo de autenticação será do tipo “Digest”.

A configuração é mantida no ficheiro /etc/apache2/mods-available/dav_svn.conf.

/etc/apache2/mods-available/dav_svn.conf
# <Location URL> ... </Location>
# URL controls how the repository appears to the outside world.
# In this example clients access the repository as http://hostname/svn/
# Note, a literal /svn should NOT exist in your document root.
<Location /svn>

  # Uncomment this to enable the repository
  DAV svn

  # Set this to the path to your repository
  #SVNPath /var/lib/svn
  # Alternatively, use SVNParentPath if you have multiple repositories under
  # under a single directory (/var/lib/svn/repo1, /var/lib/svn/repo2, ...).
  # You need either SVNPath and SVNParentPath, but not both.
  SVNParentPath /var/lib/svn

# [...]

  # Basic Authentication is repository-wide.  It is not secure unless
  # you are using https.  See the 'htpasswd' command to create and
  # manage the password file - and the documentation for the
  # 'auth_basic' and 'authn_file' modules, which you will need for this
  # (enable them with 'a2enmod').
  #AuthType Basic
  AuthType Digest
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd

# [...]

  # The following three lines allow anonymous read, but make
  # committers authenticate themselves.  It requires the 'authz_user'
  # module (enable it with 'a2enmod').
  #<LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
  #</LimitExcept>

</Location>

Criação de utilizadores

Antes de poder aceder ao servidor subversion, deverão ser definidos os utilizadores e respectivas palavras-passe, que serão guardadas no ficheiro /etc/apache2/dav_svn.passwd. Ao criar o primeiro utilizador deverá ser criado o ficheiro, o que é conseguido com a opção -c:

root@server:~# htdigest -c /etc/apache2/dav_svn.passwd "Subversion Repository" fribeiro
Adding password for fribeiro in realm Subversion Repository.
New password:
Re-type new password:

Para adicionar os utilizadores seguintes, não usar a opção -c, pois iria criar um novo ficheiro, eliminando os utilizadores anteriores:

root@server:~# htdigest /etc/apache2/dav_svn.passwd "Subversion Repository" user2
Adding user user2 in realm Subversion Repository
New password:
Re-type new password:

Reiniciar o servidor apache2:

root@server:~# /etc/init.d/apache2 restart

Opção: Acesso anónimo em leitura

A configuração acima restringe os acessos apenas a utilizadores autenticados. Opcionalmente, pode-se permitir o acesso anónimo apenas em leitura, abrindo excepções para as operações GET PROPFIND OPTIONS REPORT:

/etc/apache2/mods-available/dav_svn.conf
# [...]

  # The following three lines allow anonymous read, but make
  # committers authenticate themselves.  It requires the 'authz_user'
  # module (enable it with 'a2enmod').
  <LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
  </LimitExcept>

# [...]

Verificação

Num browser inserir a URL de um repositório:

O repositório estará também acessível a partir de um cliente svn que suporte o protocolo https, como por exemplo o TortoiseSVN.

Referências: