quarta-feira, 19 de setembro de 2007

Instalar e configurar um servidor Subversion, (SVN), no Windows – Parte 2

Bem pessoal, estou dando continuidade ao assunto sobre Subversion onde prometi um tutorial sobre instalação e configuração da referida aplicação no Microsoft Windows.

Para este procedimento serão necessários os softwares Apache 2.0.59 e Subversion 1.4.5.

O Apache você pode baixar aqui.
O Subversion você pode baixar aqui.

Concluído o download dos softwares vamos a instalação e configuração.

1 - Instale o Apache 2.0.59, este processo é bastante simples, apenas aceite as definições padrão, típica instalação NNF, (Next - Next - Finish).
Para ver se o apache foi instalado com sucesso, abra o browser e no endereço digite http://localhost/, se tudo estiver certo deverá ser apresentada uma página com informações sobre o Apache.

2 - Instale o Subversion 1.4.5, processo simples também, aceite as opções padrão, mais uma típica instalação NNF, (Next - Next - Finish).

3 - Crie um diretório onde serão hospedados os projetos, por exemplo "C:\SVN", este será o repositório central e os projetos ficarão hospedados em subdiretórios deste.

4 - Abra o console de comandos do DOS, (abra o Executar e digite cmd ou command seguido de Enter), navegue até o diretório onde foi instalado o Subversion, comumente o diretório será "C:\Arquivos de Programas\Subversion" para SO em Português e "C:\Program Files\Subversion" para SO em Inglês.

4.1 - Ainda no console do DOS navegue para o subdiretório \Bin e execute o comando "svnadmin create C:\SVN\<projeto>" sem as aspas, note que onde consta <projeto> você deverá informar o nome de um diretório, neste diretório é onde ficarão hospedados os arquivos do referido projeto, cada projeto ficara em um subdiretório específico, todos estes subdiretórios deverão estar obrigatoriamente dentro do diretório criado no passo 2, onde como exemplo utilizamos o nome de "SVN" passando como caminho "C:\".
EX.: "svnadmin create C:\SVN\FS" onde "C:\SVN\" é o caminho do repositório "pai" e "FS" é o diretório onde ficarão os arquivos do projeto FS.

5 - Concluído o passo 4 devemos criar um serviço no Windows para que o processo de start do serviço do Subversion seja automático toda vez que o servidor seja reiniciado, para isso faça o seguinte;

Crie um arquivo <qualquercoisa.bat>, edite esse arquivo e insira o seguinte comando:

sc create SVNservice binpath= "\"c:\Arquivos de programas\Subversion\bin\svnserve.exe\" --service --root C:\SVN" displayname= "SVNservice" depend= Tcpip
pause

Note que o comando que inicia com "sc" deve estar em uma única linha, o comando "pause" serve para pausar o script e permitir que seja verificada qualquer mensagem de erro que possa ocorrer.

Desmontando o comando:

sc create = Comando nativo do Windows responsável por criar serviços
SVNservice = Este será o nome interno do service para o Windows
binpath = Variável onde é informado a localização do executável do Servidor do Subversion compreendido por: "\"c:\Arquivos de programas\Subversion\bin\svnserve.exe\"
O parâmetro "--service" que informa ao comando que o executável deve ser tratado como um serviço do Windows
O parâmetro "--root C:\SVN" que indica onde será o diretório raiz dos projetos, diretório criado no passo 2
O parâmetro "displayname= "SVNservice"", responsável por dar um nome ao serviço, neste caso o serviço irá aparecer na lista de serviços do Windows com o nome "SVNservice"
E por fim o parâmetro "depend= Tcpip" indicando que o serviço depende do bom funcionamento de outro serviço, o serviço do protocolo TCP/IP

Feito este processo salve o arquivo <qualquercoisa.bat> e execute-o para criar definitivamente o serviço.

6 - Abra o gerenciador de serviços do Windows, para isso abra o Executar e digite o comando services.msc e clique em OK.
Localize o serviço que acabamos de criar, ele dever estar com o nome "SVNservice", clique com o botão direito do mouse no mesmo, na caixa de diálogo clique em propriedades e altere o campo Tipo de Inicialização para Automático, clique no botão Iniciar, clique em Aplicar e em OK.

7 - Baixe o arquivo "mod_auth_sspi.so" que você encontra em http://www.gknw.net/development/apache/httpd-2.0/win32/modules/
e salve ele no diretório \modules que encontra-se no diretório de instalação do Apache, este arquivo é um script que permite ao Apache integrar o servico de autenticação de usuários com os usuários de Rede do Windows.

7.1 - Edite o arquivo "httpd.conf" que está no diretório \conf dentro do diretório de instalação do Apache.

7.2 - Adicione a linha

LoadModule sspi_auth_module modules/mod_auth_sspi.so

acima da linha

LoadModule auth_module modules/mod_auth.so

7.3 - Descomente, (remova o símbolo '#'), da frente das linhas

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

7.4 - No mesmo arquivo de configuração adicione após a última linha o seguinte grupo de string

<Location /SVN>
DAV svn
SVNListParentPath on
SVNParentPath C:\SVN
AuthType SSPI
AuthName "Subversion repositories"
#AuthUserFile passwd
AuthzSVNAccessFile "<caminho>\svnaccessfile.conf"
Require valid-user
SSPIAuth On
SSPIAuthoritative On
SSPIDomain <domínio>
SSPIOfferBasic On
</Location>

Altere a linha "<Location /SVN>", onde consta "SVN" você deve informar o diretório raiz do repositório no Servidor do Subversion, observe que deve existir uma "/" antes do nome do diretório.

Altere a linha "SVNParentPath C:\SVN", onde consta "C:\SVN" você deve informar o caminho do diretório raiz do repositório no Servidor do Subversion.

Altere a linha "SSPIDomain <domínio>", onde consta <domínio> você deve informar a sigla do domínio de sua empresa.

7.4.1 - Crie um arquivo chamado "svnaccessfile.conf" dentro do diretório \conf no diretório de instalação do Apache, o conteúdo deste arquivo deverá ser composto pelas seguintes instruções:

#=========================================================
# Bloco onde são criados grupos, nestes grupos colocam-se
# os
usuários de rede do domínio Windows, estes grupos é
# que
terão permissões nos diretórios dos projetos, os
# nomes de usuário
deverão ser compostos por
# <DOMINIO>\<usuário>

[groups]
admin = <DOMINIO>\user.admin
devteam = <DOMINIO>\devenv.um, <DOMINIO>\desenv.dois, <DOMINIO>\desenv.tres

# Regra de acesso default para TODOS([/]) os repositórios
# TODOS(*) usuários podem ler(r = read), admins podem
# modificar(rw = read write), usuário dangerman possui
# privilégio algum(permissão em branco)
[/]
* = r
@admin = rw
dangerman =

# Regra de permissão ao grupo devteam, eles poderão
# alterar
o projeto Teste2 e seus subdiretórios
[Teste2:/]
@devteam = rw
#=========================================================

Obs.: Nas regras acima deve-se levar em conta que a estrutura de diretórios no servidor Subversion é composta da seguinte maneira:

C:\
|_SVN
|_Teste2

Onde SVN é o repositório central e [/] é igual a SVN
Onde Teste2 é o diretório de um projeto e [Teste2:/] é igual a Teste2

Altere a linha "AuthzSVNAccessFile..." do bloco de códigos criado no passo 7.4, você deve informar o caminho onde você salvou o arquivo "svnaccessfile.conf" criado no passo 7.4.1

7.5 - Salve os arquivos e feche-os.
Reinicie o servidor Apache.

Caso no restart o Apache apresente mensagens de erro, provavelmente o arquivo "httpd.conf" possua alguma string com erro, existe um utilitário que é encontrado em "Iniciar -> Programas -> Apache -> Configurar Servidor Apache -> Testar Configuração" que verifica a integridade do arquivo em questão e mostra onde está o erro, em caso de problemas utilize-o.

Concluo aqui mais uma parte das matérias sobre Subversion, num próximo post falarei sobre a instalação, configuração e utilização de um cliente que fará o acesso ao servidor da aplicação e consequentemente a sincronia dos arquivos.

Fui! :-))

16 comentários:

Rafael disse...

Caro Moises,

Vc salvou minha vida! tava dando murro em ponta de faca, o tutorial deu um baita help!

obrigado,

Rafael F. R

MoisesFontana disse...

Rafael, fico feliz que estas informações tenham te auxiliado.

Abraço!

Diego disse...

Realizei as etapas e o Apache não inicia dando o seguinte erro=> Unknown DAV provider: svn

Lenilson disse...

amigo.. fiz tudo como descrito mas ta dando o seguinte erro... DAV SVN...

se puder me ajudar... lenilson_lucena@hotmail.com

Azhhael disse...

fiz tudo certinho, mas dá erro no teste do apache: unknown DAV svn.... fala que é na linha 488 do httpd.conf ... pode me ajudar? azhhael@yahoo.com.br

Alexandre Ponte disse...

Esta dando o erro

Unknown DAV provider: svn


Gostaria de saber como resolver este problema. Aguardo contato.


caalpone@gmail.com

Anônimo disse...

To com o mesmo erro. Alguém resolveu? luciano_ca@hotmail.com

Taborda disse...

Boa Tarde,

também estou com o problema: unknow DAV svn..

Alguem tem idéia??

Obrigado

Anônimo disse...

Boa noite!
Alguém conseguiu resolver o problema "unknown DAV provider: svn"?
Estou precisando muito dessa resposta!

Obrigada!
Márcia

Alessandro disse...

Problema "Unknown DAV provider: svn" resolvido, solução:
baixar e extrair de http://www.tomdonovan.net/download/mod_dav_svn-1.3.2.x-w32.zip o arquivo "mod_dav_svn.so" para a pasta modules do apache, em httpd.conf adicionar a linha "LoadModule dav_svn_module modules/mod_dav_svn.so", por[em agora estou com um erro na linha seguinte: "InvalidCommand AuthzSVNAccessFile"

Cosmolense disse...

Pessoal, estou com problemas nesse ponto aqui:

LoadModule sspi_auth_module modules/mod_auth_sspi.so

acima da linha

LoadModule auth_module modules/mod_auth.so

Nao tenho essa linha com o "auth_module" no arquivo. Adicionei a outra mesmo assim, mas na hora de iniciar ele reclama de nao encontrar o modulo (mesmo o modulos estando na pasta)

Alguem teve algum problema semelhante?

Valeu!

Pedrim.. disse...

srs,

Estou com um windows 2008 Server e não consigo criar este SC.. por favor.. alguem sabe me ajudar ?

a linha que estou colocando é:

sc create SVNservice binpath= "C:\Prog
ram Files\Subversion\bin>svnserve.exe" --service --root= d:\Dados\Softbox\SVN displayname= "SVNservice" depend= Tcpip

Playmaster disse...

Para esse erro:

-----
Problema "Unknown DAV provider: svn" resolvido, solução:
baixar e extrair de http://www.tomdonovan.net/download/mod_dav_svn-1.3.2.x-w32.zip o arquivo "mod_dav_svn.so" para a pasta modules do apache, em httpd.conf adicionar a linha "LoadModule dav_svn_module modules/mod_dav_svn.so", por[em agora estou com um erro na linha seguinte: "InvalidCommand AuthzSVNAccessFile"
"
-----

Basta copiar os dois arquivos(mod_authz_svn.so e mod_dav_svn.so) para dentro do diretório de modules do apache.
Depois adicionar uma linha para cada módulo:

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

H. Nunes disse...

Olá pessoal!

Pedrin, passei por isso também:
---
Estou com um windows 2008 Server e não consigo criar este SC.. por favor.. alguem sabe me ajudar ?---

Onde é:sc create SVNservice binpath= "C:\Prog
ram Files\Subversion\bin>svnserve.exe" --service --root= d:\Dados\Softbox\SVN displayname= "SVNservice" depend= Tcpip

Mude para:sc create SVNservice binpath= "C:\Program Files\Subversion\bin\svnserve.exe --service -r d:\Dados\Softbox\SVN" displayname= SVNservice depend= Tcpip start= auto

Eu uso sem espaço:sc create SVNservice binpath= "C:\Suporte\Aplicativos\Subversion\bin\svnserve.exe --service -r C:\Suporte\SVN" displayname= SVNservice depend= Tcpip start= auto

Parece algo com a sintaxe:1. Tem um '>' onde dever ser uma '\';
2. O parametro -r não precisa do '=';

Fico contente se ajudei!

Abraços

Ricardo Plansky disse...

Olá,

Estou com problemas para carregar o módulo mod_auth_sspi.so.
Diz que não pode ser encontrado ("The specified module could not be found"). Mas acontece que o arquivo está na pasta modules do apache, o caminho está certinho.

Tive o mesmo problema com os múdulos DAV-SVN. Nesse caso adicionei as .dlls na system32 e resolveu.

Para carregar o mod_auth_sspi.so eu também preciso de alguma outra dll?
Existe algum módulo que deve ser carregado antes?



Obrigado,
Ricardo Plansky - rplansky@rplansky.com

Valéria disse...

SSPIDomain "domínio"

esse dominio eh o de rede??? empaquei nesta parte da instalação....

alguem pode me ajudar??

valeriaparajara@gmail.com

Obrigada...