quarta-feira, 30 de julho de 2008

Apache + SVN no Debian

Esse tutorial mostra como instalar e configurar o Apache com o SVN(Subversion) no Debian.


Para instalação e configuração no fedora Clique Aqui


Segue a instalação e configuração do Apache com o SVN(Subversion) no Debian

1 - Logar como root

Instalar o apache o SVN e o módulo de comunicação(libapache2-svn) entre eles.

Execute o comando:

# apt-get install apache2 subversion libapache2-svn

Para testar o apache basta abrir em um browser o endereço http://localhost/. Você será redirecionado para http://localhost/apache2-default/, pois a configuração padrão do Apache2 redireciona o caminho raiz do servidor para o seu site padrão. Para alterar essa configuração você deve alterar o arquivo /etc/apache2/sites-available/default e comentar a linha "RedirectMatch ^/$ /apache2-default/", algo do tipo:

...

Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
# RedirectMatch ^/$ /apache2-default/

...

Reinicie o Apache2 e acesse o endereço http://localhost para ver o efeito da alteração.

Vale ressaltar que no Debian (e distribuições baseadas nele), a instalação do pacote do Apache2 organiza os arquivos de configuração de módulos e sites de uma maneira bem simples e funcional. Todos os arquivos de configuração ficam no diretório /etc/apache2, veja abaixo:

-/etc/apache2
|-apache2.conf
|-/conf.d
|-envvars
|-httpd.conf
|-/mods-available
|-/mods-enabled
|-ports.conf
|-/sites-available
|-/sites-enabled

Por enquanto o que importa saber é que os diretórios *-available e *-enabled, servem para os módulos/sites disponíveis e módulos/sites habilitados.


2 - Criar um repositório


Crie um diretório para o repositório que será criado

# mkdir /var/svn-repos

Agora basta criar o repositório com o utilitário svnadmin

# svnadmin create --fs-type fsfs /var/svn-repos/projeto

Após criar o repositório é necessário montar a estrutura inicial para o repositório

# svn mkdir file:///var/svn-repos/projeto/trunk file:///var/svn-repos/projeto/branches file:///var/svn-repos/projeto/tags -m "Criando estrutura inical do repositório"

Este comando irá criar os diretório trunk, tags e branches no repositório, os mesmos são necessário para controlar o código e as releases do projeto.


3 - Configurar o repositório

No diretório /var/svn-repos/projeto você encontrará a seguinte estrutura:

-/var/svn-repos/projeto
|-/conf
|-/dav
|-/db
|-/hooks
|-/locks
|-format
|-README.txt

Neste momento o mais importante é o diretório conf, onde temos o arquivo de configuração do repositório. Edite o svnserve.conf:

# nano /var/svn-repos/projeto/conf/svnserve.conf

e deixe o seu conteúdo da seguinte forma:

[general]
# Defini permissão de leitura para usuários anônimos
anon-access = read

# Defini permisão deescrita para usuário autenticados
auth-access = write

# Defini o arquivo de usuários e senhas
# password-db = passwd

# Defini as regras de autorização nos diretórios do repositório
# authz-db = authz

# Defini o nome do Repositório
realm = Repositório Subversion


4 - Integrar o Apache2 com o Subversion

Essa integração é feita pelo módulo libapache2-svn do Apache2, já instalado anteriormente.

É necessário alterar o arquivo de configuração deste módulo e indicar qual o diretório do repositório Subversion que deve ser disponibilizado através do Apache2. Então edite o arquivo /etc/apache2/mods-available/dav_svn.conf e altere seu conteúdo para que fique da seguinte forma:



DAV svn

# O SVNPath indica qual o diretório específico de um repositório Subversion
# SVNPath /var/lib/svn

# O SVNParentPath indica qual o diretório raiz de todos os repositórios Subversion
SVNParentPath /var/svn-repos

AuthType Basic
AuthName "Repositório Subversion"
AuthUserFile /etc/apache2/dav_svn.passwd
# AuthzSVNAccessFile /etc/apache2/dav_svn.authz
Require valid-user
# SSLRequireSSL



Agora, salve o arquivo e volte a linha de comando.

Criando um usuário para acessar o SVN:

# htpasswd -cm /etc/apache2/dav_svn.passwd 'username' (
Ex:'username' pode ser admin, ao executar o comando será pedido a senha do usuário admin).
# htpasswd -cm /etc/apache2/dav_svn.passwd admin
New password:
Re-type new password:
Adding password for user admin

* O parâmetro -c só é necessário para o primeiro usuário, pois é usado para criar o arquivo.
Para os seguintes apenas o -m resolve, que é usado para criptografar a senha com o MD5.

Após isso, altere as permissões deste diretório e do arquivo de senhas:

# chown www-data:www-data /etc/apache2 -R

Reinicie o servidor Apache:

# /etc/init.d/apache2 restart

Para testar as alterações acesse o endereço http://localhost/svn/projeto. Lembre que foi criado um repositório no diretório /var/svn-repos/projeto e este link faz referência a este repositório.

Digite o e a senha que você escolheu.

Pronto você acaba de configurar a integração entre o Apache 2 e o Subversion.



5 - Adicionar arquivos(import) e realizar checkout e commit



Vamos criar um pequeno projeto na pasta /tmp/projeto, com alguns arquivos de exemplo que podem ser textos simples. Vamos colocá-lo no repositório.

O nosso repositório é o /var/svn-repos/projeto dê permissão de Leitura e Escrita a essa pasta:

$ chmod -R o+w /var/svn-repos/projeto/


para importar arquivos execute o comando:

$ svn import /tmp/projeto http://localhost/svn/projeto/ -m "Testando"

onde localhost eh o servidor svn e /tmp/projeto é onde está o cliente.

Pronto, os arquivos foram importado acesse: http://localhost/svn/projeto/ ou liste como o comando:

$ svn list http://localhost/svn/projeto


OBS: Para acesso remoto localhost deve ser substituído pelo IP de sua máquina. Ex:

http://192.168.0.35/...

Agora vamos baixar os arquivos do repositório /var/svn-repos/projeto para a máquina local para que possamos trabalhar com esses arquivos e depois mandar de volta ao servidor, após modificá-los.

Se executa localmente, dê premissão para o seu usuário na pasta em que deseja baixar o arquivo. Exemplo:

$ chown -R "usuário" /project/

Agora saia do usuário root, mas continue no console com o "usuário" que deu permissão e faça o checkout para outra pasta local. Exemplo:

$ svn checkout http://localhost/svn/projeto/ /project/teste/

Acesse algum arquivo da pasta /project/teste modifique o arquivo salve e mande de volta ao servidor. Entre no diretório do projeto:

$ cd /project/teste

e depois execute:

$ svn commit --message "Testando novamente"

Pronto, o arquivo modificado foi enviado ao servidor e uma nova REVISION foi incrementada.


O que é um Branch?
-Seria uma cópia de uma versão de revisão de um ou vários arquivos. Com ele é possível fazer desenvolvimento paralelo dos mesmos fontes.
Isso é bastante útil quando você está com a versão de desenvovimento relativamente boa, mas tem a intenção de fazer grandes mudanças, ou pequenas
mudanças que causam grande impacto em todo o projeto. Assim, é possível essa segunda linha de desenvolvimento paralela a versão quente,
e depois quando você for fazer um merge das alterações, fica bem mais fácil. Principalmente se for utilizado um comparador de texto, como o BeyondCompare.

O que é uma TAG?
-Diferentemente de um Branch, uma TAG cria uma versão estática, que não pode mais ser alterada. Isto serve bastante para uma versão final,
quando você for liberar o seu projeto.

Nenhum comentário: