Configurando servidor Subversion com Apache no Windows (Parte I)

Objetivo

Criar uma estrutura capaz de controlar versões de arquivos-fonte em rede local e pela internet, mesmo sem ip fixo ou uma hospedagem com suporte ao subversion.

Downloads

Para atingir nosso objetivo precisamos fazer os seguintes downloads:

  1. Apache HTTP Server (fazer download) *
  2. Subversion (fazer download)
  3. TortoiseSVN (download para 32bit | download para 64bit)
  4. No-IP.com Dynamic DNS Update Client (fazer download)

* Enfrentei alguns problemas ao tentar instalar na versão 2.2, mas não investi o tempo suficiente para descobrir a causa, por isso da versão 2.0.

Instalando o Apache

A instalação do apache é bastante nnf (next, next, finish), não tem muito mistério. Onde pedir domínios e nome do servidor informe localhost. De preferência para instalá-lo como serviço para garantir que o subversion funcione mesmo sem usuário logado.

Instalando o Subversion

Aqui há um detalhe muito importante! No final do assistente de instalação do subversion existe uma opção para ativar os módulos do svn no apache. Isso facilita bastante as coisas porque alguns módulos possuem dependência e configurar isso na mão pode não ser agradável.

Preparando para as configurações

O primeiro passo é criar nosso repositório, faremos isso através do comando svnadmin. Todas as nossas configurações e repositórios ficarão no diretório C:\Svn, mas se preferir você pode alterá-lo inclusive para outra unidade.

$ svnadmin create C:\Svn\Nome_Projeto

Localize o arquivo de configurações do apache e insire a linha abaixo no final do arquivo Apache2\conf\httpd.conf:

Include "C:/Svn/subversion.conf"

A maioria dos roteadores de ADSL, os D-Link principalmente, reservam a porta 80 para o acesso a suas configuração. Para contornar isso, você pode configurar seu apache para utilizar a porta 8080. Ainda no httpd.conf localize as seguintes linhas e altere o número da porta:

Listen 8080
...
ServerName locahost:8080

Navegue até a pasta Apache2\bin, onde se encontra o htpasswd.exe. Utilizaremos o comando htpasswd para criar usuários e atribuir suas senhas. Exemplo:

$ htpasswd -cm C:\Svn\svn-auth-file thiagob
$ New password: *****
$ Re-type new password: *****
$ Adding password for user thiagob

Para adicionar outros usuários o procedimento é o mesmo. A única mudança está no parâmetro -c que impõe a criação / substituição do arquivo svn-auth-file. Ou seja, após a primeira execução o comando passa a ser:

$ htpasswd -m C:\Svn\svn-auth-file joao

Configurando o repositório

Neste ponto já possuímos um repositório Nome_Projeto, o apache funcionando na porta 8080 e dois usuário: thiagob e joao. Porém ainda não temos como acessar o repositório, pois precisamos atribuir uma url para ele e dizer que usuários possuem quais permissões. Bom, então vamos lá…

Crie um arquivo com o nome de svn-acl na pasta C:\Svn e adicione as seguintes linhas:

[nome_projeto:/]
thiagob = rw
joao = r

Traduzindo estas três linhas: no repositório nome_projeto thiagob lê e escreve, enquanto que joao apenas lê o repositório. Por fim, abra o arquivo C:\Svn\subversion.conf e adicine as seguintes linhas:

<Location /nome_projeto>
DAV svn
SVNPath C:/Svn/nome_projeto

AuthType Basic
AuthName “Subversion Nome Projeto repository”
AuthUserFile C:/Svn/svn-auth-file

Require valid-user

AuthzSVNAccessFile C:/Svn/svn-acl
</Location>

Isso deve ser o suficiente para você acessar o repositório pelo browse através da url http://localhost:8080/nome_projeto. Informe o usuário e senha e verique se retornou “Revision 1: /”.

Esta é apenas a primeira parte, configuramos as coisas no lado servidor. Na parte II configuraremos o TortoiseSVN e veremos alguns dos recursos do svn para o controle de versão. Espero ter ajudado e até a próxima…

Bookmark the permalink. Follow any comments here with the RSS feed for this post. Post a comment or leave a trackback: Trackback URL.

41 Comments

  1. Hélio Frota
    Posted 31 de maio de 2007 at 9:03 | Permalink

    Olá , o seguinte trecho:
    “Aqui há um detalhe muito importante! No final do assistente de instalação do subversion existe uma opção para ativar os módulos do svn no apache.”

    Tem certeza que existe essa opção ? Fiz o download e aqui não aparece nada disso.

  2. thiagob
    Posted 31 de maio de 2007 at 9:27 | Permalink

    Tens razão Hélio, a opção não se encontra no final do assistente e sim junto das opções de criação de atalhos.

    Assim que possível corrigirei o post.
    Obrigado

  3. Romulo
    Posted 17 de junho de 2007 at 10:21 | Permalink

    Hélio,

    Talvez você não tenha instalado ou ocorreu algum erro na instalação do Apache. Essa opção somente aparece se o Apache estiver instalado corretamente.

  4. Posted 3 de julho de 2007 at 13:56 | Permalink

    Thiago,

    Instalei conforme o seu procedimento, mas no diretório do subversion não encontrei o subversion.conf, eu teria que criar este arquivo e com quais linhas de comando?
    Aguardo o seu retorno.

    Desde já agradeço,
    David

  5. David
    Posted 3 de julho de 2007 at 14:36 | Permalink

    Onde fica o arquivo subversion.conf no diretorio do SVN?
    Obrigado

  6. thiagob
    Posted 8 de julho de 2007 at 20:34 | Permalink

    Sim, este arquivo não existe… É preciso criá-lo. As configurações poderiam ser adicionadas nos arquivos de configuração do apache, mas para facilitar backup e também para manter as coisas separadas achei por bem colocá-lo em outro diretório.

    Abraço

  7. Rsc
    Posted 22 de julho de 2007 at 1:57 | Permalink

    Thiago,

    Instalei o repositorio no dir

    e:\svn\monografia

    meu apache2 e svnserve estão no:
    c:\arquivos de programas

    teoricamente coloquei todas as configurações necessárias. Mas o apache agora não está levantando mais, dá msg: “Requested operation has failed”

  8. Amroth
    Posted 26 de julho de 2007 at 15:42 | Permalink

    Lembrando que no arquivo subversion.conf precisa-se carregar esses dois so:
    LoadModule dav_module modules/mod_dav.so
    LoadModule auth_module modules/mod_auth.so

  9. erick
    Posted 11 de agosto de 2007 at 15:13 | Permalink

    Fiz todos os procedimentos, mas no final retornou Revision 0:/.

    O que aconteceu?

  10. Posted 12 de agosto de 2007 at 22:23 | Permalink

    Isso quer dizer que está tudo ok! Aparece Revision Zero porque nenhum arquivo foi adicionado ao repositório… Na Parte II deste tutorial demonstro como adicionar arquivos ao repositório.

    Continue assim que está indo bem!

  11. Raphael Souza
    Posted 22 de agosto de 2007 at 22:50 | Permalink

    Boa noite, eu realizei todos os passos conforme descritos, porém, qdo acesso o laclhost:8080/projeto uma tela me retorna com a seguinte mensagem, após digitar corretamente login e senha:
    You don’t have permission to access /Projeto on this server.

  12. Posted 23 de agosto de 2007 at 6:09 | Permalink

    Verifique se o arquivo de configuração “C:/Svn/svn-acl” foi criado corretamente no momento que criastes os usuários

  13. Paripe
    Posted 24 de agosto de 2007 at 12:08 | Permalink

    Muito bom cara… parabens

  14. Raphael Souza
    Posted 26 de agosto de 2007 at 14:42 | Permalink

    Thiago, o problema não estava na autenticação do usuário.. Deve ter sido algo que fiz incorretamente na instalação do SVN. Recomeçei do Zero através do seu tutorial e obtive sucesso!!!
    Muito obrigado…

  15. Ernaldo
    Posted 17 de novembro de 2007 at 20:00 | Permalink

    Oi thiago,

    quando coloquei a url ele pede a senha e o usuario, eu coloquei e ele
    retorna o http 500 - erro interno do servidor, onde foi que eu errei?

    Obrigado.

  16. Ernaldo
    Posted 17 de novembro de 2007 at 21:00 | Permalink

    Thiago,

    tirei a opcao de mensagens amigáveis
    do ie e agora a mensagem é esta:

    -

    Could not open the requested SVN filesystem

    obrigado.

  17. Ernaldo
    Posted 17 de novembro de 2007 at 21:02 | Permalink

    Repetindo:

    -

    Could not open the requested SVN filesystem


    obrigado.

  18. Vanessa Michele
    Posted 11 de janeiro de 2008 at 6:25 | Permalink

    Thiago,

    Fiz todos os passos que você indicou, mas no momento em que chamo a url “http://localhost:8080/nome_projeto” dá uma mensagem de que nome_projeto não foi encontrado. O que poderá ser?

    Obrigada.

  19. Posted 16 de janeiro de 2008 at 8:34 | Permalink

    Bom Dia Thiago,

    Eu não consegui encontrar esse arquivo “subversion.conf”, e toda vez que vou reiniciar o Apache, ele dá pau.

    É assim mesmo, ou não preciso reiniciar o apache depois.

    Obrigado,

    Wanderson Barrence

  20. Andre Luiz
    Posted 28 de janeiro de 2008 at 8:02 | Permalink

    Thiago,

    Instalei o repositorio no dir

    c:\svn\trac

    meu apache2 e svnserve estão no:
    c:\arquivos de programas

    segui a risca seu tuto. Mas o apache não está levantando mais, dá msg: “Requested operation has failed”, já identifiquei que o proble esta no conteúdo do arquivo subversion.conf, pois qdo comento a linha de include, o Apache levanta..
    desde já agradeço… aguardo resposta

  21. Posted 28 de janeiro de 2008 at 18:49 | Permalink

    Ola,

    Muito bom seu tutorial. Já baixei tudo aqui!!! Parabéns!!!

  22. Posted 30 de janeiro de 2008 at 23:58 | Permalink

    Os módulos estão dentro da pasta bin do svn

    C:\Arquivos de programas\Subversion\bin

    por exemplo.

    Lembrar também de dar os dois LoadModule’s no http.conf

    LoadModule dav_module modules/mod_dav_svn.so
    LoadModule auth_module modules/mod_authz_svn.so

  23. Posted 31 de janeiro de 2008 at 0:06 | Permalink

    Além do mais, a opção de configurar o apache para o svn só aparece se o apache instalado for versão 2.0.x

    Se for a versão 2.2 não vai funcionar…

  24. Cassio
    Posted 21 de fevereiro de 2008 at 10:02 | Permalink

    Olá. Preciso fazer funcionar o subversion para acesso remoto.
    Segui todos os passos do tutorial. Quando coloco a linha Include “C:/Svn/subversion.conf” no arquivo httpd.conf meu apache não start mais.. o que pode ser?

  25. Jaqueline
    Posted 21 de fevereiro de 2008 at 15:04 | Permalink

    Olá Thiago,
    Estou com o seguinte problema, após seguir todos os seus passos, não consigo mais restartar o Apache.
    Da erro de syntaxe na linha 2 do arquivo C:/SVN/subversion.conf
    A linha é: DAV svn (Unknown DAV provider: svn)

    O que eu posso ter feito de errado?

    Obrigada!

  26. Henrique
    Posted 26 de fevereiro de 2008 at 7:16 | Permalink

    .

    parabens

    .

  27. João Marcelo
    Posted 2 de março de 2008 at 16:58 | Permalink

    Olá, já uso o subversion a algum tempo, mas não integrado com o Apache. O seu tutorial foi de grande ajuda!

    É o seguinte, tb tive problemas na instalaçaõ, mas consegui contornar da seguinte maneira:

    Quando inclui o arquivo “subversion.conf” no Apache o serviço parou de funcionar.

    Syntax error on line 6 of G:/Repositorio/subversion.conf:
    AuthName takes one argument, The authentication realm (e.g. “Members Only”).

    Mudei essa linha para:
    AuthName “SubversionProjetoRepository”

    e o Apache parou de dar erro.

    Abraços

  28. Luciano
    Posted 29 de março de 2008 at 11:53 | Permalink

    Caro Thiago!

    Infelizmente fiz e refiz todos os passo várias vezes e o resultado é sempre o mesmo:

    “Forbidden You don’t have permission to access /sisloca on this server.”

    Obs.:
    Conteúdo do arquivo svn-acl:
    [sisloca:/]
    usuario = rw

    Conteúdo do arquivo subversion.conf:

    DAV svn
    SVNPath E:/Svn/sisloca
    AuthType Basic
    AuthName “Subversion SisLoca Repository”
    AuthUserFile E:/Svn/svn-auth-file
    Require valid-user
    AuthzSVNAccessFile E:/Svn/svn-acl

    *Os modulos do subversion estão sendo carregados no apache que foi instalado corretamente sem erros.
    *A Include do arquivo subversion.conf foi colocada corretamente.

    Tentativas usadas:
    -Adicionei o /sisloca como diretorio virtual Resultado: “O mesmo”.
    -Adicionei permissao na tag com o parametro Allow from all Resultado: “O mesmo”.

    Não sei mais o que fazer, preciso de ajuda.
    Mesmo assim agradeço pelo bom tutorial, pois não encontrei nada melhor apesar de ainda não ter funcionado aqui, “Fico feliz por aqueles que disseram ‘Apareceu Revision 0′ ”

    Aguardo Resposta…

  29. Posted 23 de abril de 2008 at 9:12 | Permalink

    Quem fizer a configuração manual precisa remover # da frente das seguintes linhas:

    LoadModule dav_module modules/mod_dav.so
    LoadModule dav_fs_module modules/mod_dav_fs.so

    e adicionar as seguintes linhas

    LoadModule dav_svn_module modules/mod_dav_svn.so
    LoadModule authz_svn_module modules/mod_authz_svn.so

  30. Jose Kismajoros
    Posted 23 de abril de 2008 at 18:56 | Permalink

    Boa Noite,

    Configurei o subversion no servidor 2003 server com o apache e consigo acessa-lo via browser, porem quando vou acessar localmente ou nas estações da um erro de conectividade, dizendo que não é possivel conectar com o localhost ou o ip do servidor.

    Error: Can’t connect to host ‘localhost’: Nenhuma conexão pôde ser feita porque a máquina de destino as recusou ativamente.

    Alguém poderia me ajudar.

    Obrigado.

  31. Andre Luiz
    Posted 27 de maio de 2008 at 7:04 | Permalink

    Thiago, gostaria de saber se já existe algum meio de integrar o trac com o svn de forma remota?

    Obrigado…

  32. Posted 2 de junho de 2008 at 13:35 | Permalink

    Ola,
    tive problemas ao seguir o tuto ‘a risca’. Meu apache(que ja estava instalado) não subia mais…

    apos colocar as linhas:
    LoadModule dav_svn_module modules/mod_dav_svn.so
    LoadModule authz_svn_module modules/mod_authz_svn.so

    no httpd.conf. Depois disso, meu apache voltou a funcionar e rolou a mensagem: ‘Revision 0: /’

    Abraços!

  33. Luciano
    Posted 13 de junho de 2008 at 15:16 | Permalink

    Notei que o diretório do projeto (remoto-server) fica de tamanho bem inferior ao tamanho do diretório original (repositório local-cliente). Os arquivos são armazenados todos na pasta do projeto publicado ou há outro local? Ele usa algum tipo de compactação?

    Obrigado.

  34. Felipe
    Posted 27 de junho de 2008 at 20:54 | Permalink

    Olá Thiago,

    primeiramente parabens pelo seu tutorial, segui a risca, porem a autenticacao no arquivo subversion.conf nao esta funcionando, se eu colocar no subversion.conf assim:

    LoadModule dav_module modules/mod_dav.so
    LoadModule auth_module modules/mod_auth.so
    LoadModule dav_fs_module modules/mod_dav_fs.so

    DAV svn
    SVNPath C:/Svn/imove

    #AuthType Basic
    #AuthName “Subversion iMove repository”
    #AuthUserFile C:/Svn/svn-auth-file

    #Require valid-user

    #AuthzSVNAccessFile C:/Svn/svn-acl

    Funciona legal, porem se eu tiro o # das linhas da erro quando tento restartar o apache:

    Erro especifico do servico: 1
    Digite HELPMSG 3521.

    O que pode ser ???

    Obrigado.

  35. Felipe Carvalho
    Posted 10 de julho de 2008 at 8:04 | Permalink

    achei uma versão um pouco mais completa, esta em inglês.

    http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-serversetup.html#tsvn-serversetup-apache

  36. Alessandro
    Posted 30 de setembro de 2008 at 5:49 | Permalink

    Thiago, fora o erro de que deveria ser criado o arquivo subversion ao invéz de adicionar algumas linhas está tudo perfeito, tutorial claro e bem intiuitivo nos passo-a-passo. Meus parabéns.
    Estou indo pra parte 2 agora.

  37. Gabriela
    Posted 28 de outubro de 2008 at 10:10 | Permalink

    instalei e configurei tudo conforme o tutorial,
    porém após digitar usuário e senha retorna

    Forbidden
    You don’t have permission to access /tcc on this server.
    Apache/2.0.63 (Win32) SVN/1.5.3 DAV/2 Server at localhost Port 8080

    já conferi e refiz criação e configuração de usuários..
    o que mais pode ser???

  38. Posted 10 de março de 2009 at 7:35 | Permalink

    se eu coloco esse linha no httpd.conf meu apache não inicializa:

    DAV svn
    SVNPath C:/SVN/Teste

    AuthType Basic
    AuthName “SVN”
    AuthUserFile C:/SVN/svn-auth-file

    Require valid-user

    AuthzSVNAccessFile C:/SVN/svn-acl
    /Location>

    o que pode ser

  39. Marcelo
    Posted 7 de junho de 2009 at 8:08 | Permalink

    O SVN funciona com o Apache 2.2 sim. Instalei a versão 1.6.2 do subversion e tudo está funcionando como deveria. O Apache usado foi o 2.2.10.

  40. Gilson
    Posted 4 de dezembro de 2009 at 12:57 | Permalink

    Segui o tutorial a risca exceto pelo número da porta, mas quando incluo a linha com Include do subversion.conf o apache não sobe mais.

    Tentei incluir :

    LoadModule dav_module modules/mod_dav.so
    LoadModule auth_module modules/mod_auth.so

    ou

    LoadModule dav_svn_module modules/mod_dav_svn.so
    LoadModule authz_svn_module modules/mod_authz_svn.so

    em ambos os casos o apache deixa de subir também

  41. Fillipe
    Posted 31 de dezembro de 2009 at 15:00 | Permalink

    Eu fiz tudo isso, mas quando eu abro o prompt de comando e digito:

    svnadmin create C:\Svn\Nome_Projeto ele diz que não achou o caminho…

    Mas eu pensei que fosse pq eu tinha que criar a pasta C:/Svn primeiro… daí eu criei ela, mas quando eu dou depois o:

    svnadmin create C:\Svn\Nome_Projeto no prompt de comanto, ele não cria na pasta Svn o arquivo subversion.conf…

    Não sei o que faço pra fazer essa parada rodar… Alguem sabe?

2 Trackbacks

  1. [...] na documentação do projeto Trac e 2º) o ambiente onde vamos instalar o Trac já possui o Subversion instalado e configurado com [...]

  2. [...] entrarei em detalhes sobre a instalação do apache porque você pode obter estas informações no tutorial de instalação do subversion. O que cabe detalhar agora é que assim como acontece com outras linguagens, tais como php, ruby e [...]

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*