segunda-feira, 15 de agosto de 2011

Configurando Archiva Standalone com Apache

Depois de desistir do Archiva no Glassfish e instá-lo standalone, faltou configurá-lo para rodar com o Apache.

Como não poderia deixar de ser, é muito mais simples sem o Glassfish. Na prática o que foi feito foi configurar o mod_proxy do Apache 2 para rodar com o Jetty, essa configuração se mostrou muito mais simples de ser feita e estável que o mod_proxy.

A primeira coisa a ser feita é habilitar o mod_proxy, caso ainda não esteja:

root@reckless:~# a2enmod proxy

Isso vai criar os arquivos proxy.conf e proxy.load em /etc/apache2/mods-enabled. Depois, basta editar o arquivo /etc/apache2/sites-enabled/000-default e adicionar as diretivas no VirtualHost.

<VirtualHost>
       (...)
       <Proxy *>
                Order deny,allow
                Allow from all
       </Proxy *>
       ProxyPass /archiva http://localhost:8080/archiva
       ProxyPreserveHost On
       ProxyStatus On
</VirtualHost>

Salve o arquivo e recarregue o Apache:

root@reckless:~# /etc/init.d/apache2 reload

Depois disso o seu Apache irá redirecionar todas as requisições feitas em /archiva para o Jetty local. Bem simples, não?

quarta-feira, 10 de agosto de 2011

Instalando o Archiva como serviço no Ubuntu

Não vou dizer que também odeio o Archiva (apesar disso ser verdade) para não me acharem ranzinza demais. Vamos dizer que eu desgosto muito dele. A documentação é muito fraca, e ele com a solução atual que estou usando (com Glassfish) é muito lento.

Então resolvi instalá-lo standalone para ver se fica mais espertinho.

Vamos ao passo a passo, já que como citei, a documentação dele é horrível. Lembrando que estou utilizando o archiva 1.3.5 e o Ubuntu 10.04.1 LTS.

Baixe o archiva em http://archiva.apache.org/download.html e certifique-se de baixar a versão "standalone" em formato "tar.gz".

Como root crie o diretório /opt/archiva e extraia o conteúdo do arquivo dentro de /opt/archiva, criando depois um link simbólico chamado "current" apontando para o diretório extraido.

root@reckless: mkdir /opt/archiva
root@reckless: cd /opt/archiva
root@reckless: tar -zxvf ~/apache-archiva-1.3.5-bin.tar.gz
root@reckless: ln -s ./apache-archiva-1.3.5 ./current

Ainda como root, crie o diretório /var/log/archiva. Remova a pasta /opt/archiva/current/logs e dentro de /opt/archiva/current crie um link simbólico chamado "logs" apontando para /var/log/archiva

root@reckless: mkdir /var/log/archiva
root@reckless: cd /opt/archiva/current
root@reckless: rm -rf ./logs
root@reckless: ln -s /var/log/archiva ./logs

Ainda como root, crie o diretório /etc/archiva. Mova o diretório /opt/archiva/current/conf para /etc/archiva e crie um link simbólico chamado "conf" dentro de /opt/archiva/current apontando para /etc/archiva/conf

root@reckless: mkdir /etc/archiva
root@reckless: cd /opt/archiva/current
root@reckless: mv ./conf /etc/archiva/
root@reckless: ln -s /etc/archiva/conf .

Copie agora o arquivo /opt/archiva/current/bin/archiva para /etc/init.d (ou faça um link simbólico para ele).
Depois disso é necessário editar o arquivo /etc/init.d/archiva e setar a propriedade ARCHIVA_BASE="/opt/archiva/current".

root@reckless: cp /opt/archiva/current/bin/archiva /etc/init.d/
root@reckless: vim /etc/init.d/archiva


#! /bin/sh

(...)


# These settings can be modified to fit the needs of your application

# Application
APP_NAME="archiva"
APP_LONG_NAME="Apache Archiva"

# Forcando o ARCHIVA_BASE
ARCHIVA_BASE="/opt/archiva/current"

if [ "X$ARCHIVA_BASE" = "X" ]; then
  ARCHIVA_BASE=..
fi
(...)


Feito isso, podemos inicializar o archiva rodando:

root@reckless: /etc/init.d/archiva start


Claro que não! Ele explode com um lindo erro (tá vendo como eu gosto do Archiva...):
Starting Apache Archiva...
eval: 1: /opt/archiva/apache-archiva-1.3.5/bin/./wrapper-linux-x86-32: not found




Porque diabos ele está tentando executar esse wrapper se meu Linux é 64 bits? Não faço a menor ideia. O fato é que de acordo com esse post http://old.nabble.com/Archiva-not-working-on-64-bit-Linux-td25789891.html foi só remover o arquivo /opt/archiva/current/wrapper-linux-x86-32 que ele funciona.

Excute agora o archiva como console e veja se está tudo ok:


root@reckless: /etc/init.d/archiva console

Se estiver, pare o serviço (Ctrl+c) e adicione o script do archiva à inicialização do sistema (runlevel)

root@reckless: update-rc.d -f archiva enable

A partir daí, o archiva irá inicar automaticamente quando a máquina iniciar e será possível iniciá-lo e pará-lo através do comando "service"

root@reckless: service archiva stop
root@reckless: service archiva start

No próximo post, configuração.