Copyright © 2004-2005 Leonardo Serra Maciel de Campos
Este documento é licenciado sobre a licença de Atribuição-Compartilhamento da Creative Commons. Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-sa/2.0/ ou envie uma carta para Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
| Histórico de Revisões | ||
|---|---|---|
| Revisão 0.1 | 2004-09-15 11:23:14 -0300 | Leonardo Serra Maciel de Campos |
| Revisão 0.2 | 2004-09-20 20:59:24 -0300 | Leonardo Serra Maciel de Campos |
| Revisão 0.3 | 2004-09-20 23:37:12 -0300 | Leonardo Serra Maciel de Campos |
| Revisão 0.4 | 2004-09-22 10:03:18 -0300 | Leonardo Serra Maciel de Campos |
| Revisão 0.5 | 2004-10-04 12:04:39 -0300 | Leonardo Serra Maciel de Campos |
| Revisão 0.6 | 2004-10-28 11:58:39 -0300 | Leonardo Serra Maciel de Campos |
| Revisão 0.7 | 2004-12-09 20:22:13 -0300 | Leonardo Serra Maciel de Campos |
| Revisão 0.8 | 2005-01-17 17:16:08 -0300 | Leonardo Serra Maciel de Campos |
Resumo
Este documento visa ensinar como instalar o Subversion integrado com o Apache2 no Debian GNU/Linux realizando as autenticações em um servidor LDAP.
Índice
Será presumido que o seu sistema Debian GNU/Linux e o aptitude estão corretamente configurados. Também estaremos acreditando que o Apache2 e o seu servidor de LDAP já se encontrem instalados, configurados e sendo executados de maneira correta.
Estaremos acessando o servidor do Subversion pelo protocolo WebDAV, pois este é o metodo de acesso que mais recursos permite.
Estaremos criando dois repositorios, um onde iremos colocar nossos arquivos fontes e outro onde iremos colocar nossas documentações.
Todos os comandos deverão ser executados pelo usuário root!
A tabelo abaixo mostra as versões de cada logicial usado.
Tabela 1. Versão dos logiciais
| Logicial | Versão |
|---|---|
| Debian GNU/Linux | Sarge |
| apache2 | 2.0.50-12 |
| subversion | 1.0.6-2 |
| libapache2-svn | 1.0.6-2 |
A tabelo abaixo mostra as principais caracteristicas do ambiente onde foi feito esta documentação.
Tabela 2. Ambiente
| Dominio da rede | exemplo.com.br |
| Pasta principal dos repositorios | /var/lib/svn/ |
| Pasta do repositorio para codigos fontes | /var/lib/svn/fontes/ |
| Caminho externo do repositorio para codigos fontes | /svn/fontes |
| Pasta do repositorio para documentacao | /var/lib/svn/documentacao/ |
| Caminho externo do repositorio para documentacao | /svn/documentacao |
| Usuario que roda o Apache2 | www-data |
| Grupo do usuario que roda o Apache2 | www-data |
| Endereco do servidor LDAP | ldap.exemplo.com.br |
| Entrada no LDAP onde será feita a autenticação | ou=People,dc=exemplo,dc=com,dc=br |
No caminho externo do repositorio não use / no fim.
Usaremos palavras desta maneira para indicar substituição.
Não será abordado detalhes referentes a autenticação, para maiores é recomendado a leitura da documentação oficial do Apache2 referente a autenticação.
É necessario instalar o pacote Debian para o Subversion e seu modulo para o Apache2, para isto execute:
# aptitude install subversion subversion-tools libapache2-svn
É necessario abilitar o modulo do Apache2 responsavel por fazer as autenticações no servidor LDAP, para isto execute.
# a2dismod ldap # a2enmod auth_ldap
O comando a2dismod ldap, foi executado para garantir que o modulo responsavel pela conexao com servidores LDAP seja carregado apenas uma vez, pois o comando a2enmod auth_ldap informa ao Apache2 para carregar o modulo de conexao e o modulo de autenticacao em servidores LDAP.
Edite o arquivo /etc/apache2/mods-enabled/dav_svn.conf. O arquivo deverá estar identico ao exemplo abaixo, exceto quando estiver indicado.
<Location /svn/fontes> DAV svn SVNPath /var/lib/svn/fontes/ AuthType Basic AuthName "Repositorio de codigos fontes (Subversion)" AuthLDAPURL ldap://ldap.exemplo.com.br/ou=People,dc=exemplo,dc=com,dc=br?uid <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> </Location> <Location /svn/documentacao> DAV svn SVNPath /var/lib/svn/documentacao/ AuthType Basic AuthName "Repositorio de documentacao (Subversion)" AuthLDAPURL ldap://ldap.exemplo.com.br/ou=People,dc=exemplo,dc=com,dc=br?uid <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> </Location>
Nesta configuração, o acesso de leitura dos repositorios é publica e o acesso de escrita só é permitida para usuarios autenticados. Caso queira retirar o acesso publico de leitura dos repositorios, altere as seguintes linhas;
<LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept>
Para:
Require valid-user
Não esqueça que isto deve ser feito para cada bloco de <Location>
É necessario criar a pasta onde firacam armazenados nossos repositoris, para isto execute:
# mkdir /var/lib/svn/
É necessario criar os repositorios, para isto execute:
# svadmin create /var/lib/svn/fontes/ # svadmin create /var/lib/svn/documentacao/
É necessario garantir que o Apache2 poderar ter acesso completo aos repositorios, para isto execute:
# find /var/lib/svn/fontes/ -type d -exec chmod 700 {} \;
# find /var/lib/svn/fontes/ -type f -exec chmod 600 {} \;
# chown -R www-data:www-data /var/lib/svn/fontes/
# find /var/lib/svn/documentacao/ -type d -exec chmod 700 {} \;
# find /var/lib/svn/documentacao/ -type f -exec chmod 600 {} \;
# chown -R www-data:www-data /var/lib/svn/documentacao/
Caso queira aumentar a segurança do repositorio e garantir que somente o Apache2 podera ter acesso ao repositorio utilize 700 ao invez de 755
É necessario reiniciar o Apache2, para isto execute:
# invoke-rc.d apache2 restart
Caso acontece alguma interrupção no repositorio, ele podera ficar corrompido. Para diagnosticar se realmente o repositorio se encontra corrompido execute:
# svn list file:///caminho/do/repositorio/
Seu repositorio estara corrompido caso o retorno seja isto:
svn: Unable to open an ra_local session to URL svn: Unable to open reposition 'file:///caminho/do/repositorio/' svn: Berkeley DB error while opening environment for file system '/.../svnroot/db' Invalid argument
É necessario parar o Apache2 para recuperar o repositorio, pois é necessario que nenhum processo esteja fazendo acesso ao repositorio, para isto execute:
# invoke-rc.d apache2 stop
O proximo comando é a parte principal da recuperação, será ele que ira recuperar o repositorio, para isto execute:
# svnadmin recover /caminho/do/repositorio/
Caso a execução do comando demore, verifique se não há nenhum processo fazendo acesso direto ao repositorio atraves do comando lsof!
A execução do comando svnadmin recover altera as permissoes do repositorio. É necessario garantir que o Apache2 poderar ter acesso completo ao repositorio, para isto execute:
# find /caminho/do/repositorio/ -type d -exec chmod 700 {} \;
# find /caminho/do/repositorio/ -type f -exec chmod 600 {} \;
# chown -R www-data:www-data /caminho/do/repositorio/
É necessario iniciar o Apache2 para voltar o acesso ao repositorio, para isto execute:
# invoke-rc.d apache2 start
Criar repositorio
# svadmin create /caminho/do/repositorio/
Recuperar repositorio corrompido
# svnadmin recover /caminho/do/repositorio/
Os seguintes sítios foram usados como base para a criação desta documentação
Livro sobre o Subversion. http://svnbook.red-bean.com/.
Perguntas e respostas sobre o Subversion. http://subversion.tigris.org/project_faq.html.
Referencia para autenticações no Apache2. http://httpd.apache.org/docs-2.0/howto/auth.html.
O Debian é um sistema operacional (SO) livre para seu computador. Um sistema operacional é um conjunto de programas básicos e utilitários que fazem seu computador funcionar. O Debian usa o kernel (núcleo de um sistema operacional), Linux, mas a maior parte das ferramentas do SO vêm do projeto GNU; daí o nome GNU/Linux.
Conjunto de instruções lógicas. Na informática designa um conjunto de instruções lógicas e suas dependências, também conhecido como programa ou sistema de computador.
Esta palavra é pouco usada no Brasil, onde se usa muito a expressão "Software".
Origem: Wikipédia, a enciclopédia livre.