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.
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 3.8.1 Subversion, um sistema de controle de versões.
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
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.
# <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 SVNListParentPath On # [...] # 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> Order allow,deny Allow from 192.168.1.0/24 # Allow from All </Location>
A opção Allow from 192.168.1.0/24
limita o acesso apenas a partir da rede interna. Caso se pretenda aceder a partir de qualquer endereço, basta especificar Allow from All
.
Antes de poder aceder ao servidor subversion, deverão ser definidos os utilizadores e respetivas 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
A configuração acima restringe os acessos apenas a utilizadores autenticados. Opcionalmente, pode-se permitir o acesso anónimo apenas em leitura, abrindo exceções para as operações GET PROPFIND OPTIONS REPORT:
# [...] # 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> # [...]
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.