Colocando o Tomcat no ar
Como já contei no texto anterior, este blog esta rodando em cima do Tomcat 6, para isso contratei um serviço de VPS.
Ter uma VPS quer dizer que vocë tem a senha de root do servidor e tem que instalar e configurar tudo por si só. Oba, legal, era isso mesmo que eu queria.
Instalar o Tomcat não tem segredo, praticamente descompacta-lo em uma pasta e executar o startup.sh. Mas eu queria que o Tomcat subisse na porta 80 e não queria roda-lo usando um usuário privilegiado (root), e como voês sabem, no Linux apenas um usuário privilegiado (root) pode abrir uma porta abaixo da 1024.
Ótimo, para isso temos a solução do jsvc do projeto Daemon, que é um projeto do Jakarta Commons (sempre ele). Básicamente o que o jsvc é faz é dar suporte para você rodar daemons em Java em um ambiente Unix like. A sua funcionalidade que me interessa é poder subir o processo como root e trocar o owner do processo, desta forma poderia abrir a porta 80 e usar outro usuário como owner do processo do Tomcat, tudo que eu precisava.
Mas como nem tudo são flores, tive alguns probleminhas ao usar o jsvc, e acredito que este problema possa ocorrer com qualquer um que tenha baixado a JRE da SUN e compilou o jscv.
O jsvc não estava localizando a minha JRE, e minha JRE estava instalada e funcionando belezinha, tanto é que o Tomcat subia sem problemas pelo script startup.sh.
Li e reli a documentação e não tinha nada de errado com a minha linha de comando. Não tinha outro jeito, teria que ler os fontes (o poder esta nos fontes).
Pronto, encontrei o problema!. O jsvc valida se no diretório passado como JAVA_HOME realmente existe uma instalação de uma JRE ou JDK. Para isso ele valida algumas estruturas de diretórios, e elguns nomes destes diretórios é o nome da plataforma que ele esta rodando (i386,amd64, etc). Estes diretórios da JRE da Sun tem o nome de i386, mas o meu servidor é amd64, então o jsvc estava procurando estes diretórios como amd64.
Bem, dei uma solução meio POG. O nome da platamorma é informado no momento da compilação do jsvc, no Makefile.in tem a definição da constante CPU. O que eu fiz foi alterar o Makefile.in para CPU=i386 e recompilar o jsvc. Pronto ! Problema resolvido e Tomcat no ar. :)
Não fou detahei muitas coisas aqui no texto. Se alguém tiver com um problema semelhante, relate nos comentários que terei o prazer de ajudar com mais detalhes.