Instalando Apache2, WebDav, Svn e SSL no Ubuntu

Standard

Desteto receitas de bolo, excessão seja feita para as receitas de bolo que realmente realmente servem para fazer bolos. Tudo tem uma excessão. Todas as vezes que tenho que instalar um servidor svn acabo gastando horas e horas tentando de memória e depois horas e horas procurando uma receita de bolo que funcione. Ontem passei por isso novamente e resolvi escrever a minha própria receita de bolo para a instalação do svn.

Mr. Bigfont
 photo credit: jm3

Vou usar o Ubuntu Server 9.04 que tenho disponível hoje e que gosto de usar. Eu trabalho como root. Você se não tiver a senha de root ou não gostar de trabalhar como root, coloque sudo na frente de cada comando

1: Instale o Ubuntu Server

Baixe a iso diretamente de http://www.ubuntu.com/getubuntu/download-server observe apenas a arquitetura da sua máquina. Neste caso específico fui forçado a utilizar a versão de 32 bits.

Faça a instalação padrão. Não esqueça de selecionar o apache2 para instalação.

O único cuidado que deve tomar durante a instalação é criar uma partição para montagem do /var separada da partição onde será montado o /.  Tomo esse cuidado para facilitar o uso com sistemas operacionais multiplos, para isolar os dados do sistema operacional e para dividir a carga entre discos diferentes.

Quando reiniciar a máquina faça uma atualização, na linha de comando execute:

$ apt-get update && apt-get upgrade

Uma vez terminada a instalação e a atualização, você terá o apache2 instalado, configurado e rodando. Terá outras coisas também mas por hoje só nos interessa o apache2.

2: Instale o Subversion

Chamo tanto de svn que acabo esquecendo que o nome do programa é subversion. Para instalar o subversion (ou svn) e as bibliotecas que o apache vai precisar, na janela terminal digite:

$ apt-get install subversion libapache2-svn apache2 ssl-cert

Se seu servidor foi instalado corretamente o apt vai indicar que você já está com a versão mais recente do apache2 e instalar os outros pacotes. Se não instalará tudo.

3. Torne seu ambiente seguro

Vamos precisar instalar um certificado de segurança e criar um acesso seguro para isso digite os seguintes comandos:

a) Para criar o diretório

$ mkdir /etc/apache2/ssl

b) Para criar o certificado

$ /usr/sbin/make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem

c) Para garantir que o só o proprietário pode escrever e ler o certificado

$ chmod 600 /etc/apache2/ssl/apache.pem

d) Para fazer o apache ouvir a porta segura (443 por padrão) edite o arquivo /etc/apache2/ports.conf e adicione a linha Listen 443 se ela não existir.

e) Habilite o suporte SSl no apache rodando o comando:

$ a2enmod ssl

4. Crie um virtual host para acessar seu servidor de forma segura

Primeiro vamos copiar o arquivo de configuração do virtual host padrão do apache criando um arquivo de configuração chamado svn. Para tal:

$ cp /etc/apache2/sites-available/default /etc/apache2/sites-available/svn

Agora vamos editar esse arquivo para que ele reflita nossas intenções (seguro, porta, etc…) o arquivo final deve ficar assim:

[php]
NameVirtualHost *:443
<VirtualHost *:443>
ServerAdmin webmaster@localhost

SSLEngine on
ServerSignature on
SSLCertificateFile /etc/apache2/ssl/apache.pem
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>
[/php]

Observe que é o mesmo arquivo com as correções dos paths, das portas e com o acréscimo das linhas específicas para o ssl:
SSLEngine on
ServerSignature On
SSLCertificateFile /etc/apache2/ssl/apache.pem

Por fim, ative esse virtual host (site) no apache e reinicie o bicho.
$ a2ensite svn
$ /etc/init.d/apache2 restart

5. Criando o repositório

a) criando o repositório

$ mkdir /var/svn
$ svnadmin create /var/svn/teste

b) Garanta que o usuário apache vai poder lidar com o repositório

$ chown -R www-data:www-data /var/svn/teste
$ chmod -R g+ws /var/svn/teste

6. WebDav e svn trabalhando juntos

a) Habilite a autenticação no Apache2

$ htpasswd -c -m /etc/apache2/dav_svn.passwd admin

b) Para configurar o Webdav e o svn para trabalharem juntos você vai precisar editar o arquivo /etc/apache2/mods-available/dav_svn.conf e descomentar algumas linhas, no fimal o aquivo deverá ficar assim:

[php]
<Location /svn>
DAV svn
SVNParentPath /var/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
SSLRequireSSL
</Location>
[/php]

c) Reinicie o Apache2

$ /etc/init.d/apache2 restart

7. Criando os usuários.

Para criar um usuário use o seguinte comando:
$ htpasswd -m /etc/apache2/dav_svn.passwd nomenovousuario

Repita esse procedimento para todos os usuários que desejar substituíndo admin pelo nome do usuário. e pronto!

Quando testar o svn via browser, não esqueça de usar https e não se assuste com a mensagem de certificado desconhecido que o browser ira apresentar. Essa mensagem irá surgir por que você instalou um certificado próprio e não um emitido por alguma entidade certificadora. O browser conhece apenas algumas entidades certificadoras e você, provavelmente não é uma delas. 🙂

5 thoughts on “Instalando Apache2, WebDav, Svn e SSL no Ubuntu

  1. vanesnuness

    Tutorial muito bom! Já tinha um bom tempo que eu procurava um passo a passo para configurar o svn no Ubuntu, e vc foi direto ao ponto! Obrigada!

  2. moises

    Boa noite irmão, fiz todo o procedimento, meu servidor apache carrega normalmente mas meu https: não dá sinal de vida… tem alguma ideia do que pode estar faltando ?

    Obrigado!

Comments are closed.