Como comecei a trabalhar com projetos em Java a pouco tempo comecei a sentir uma certa dificuldade para hospedar meus projetos. Não que não existem bons hosts java, mas estava começando a ficar preocupado com a dispersão das minhas coisas: eu tinha um provedor para os sites em asp.net, tenho projetos hospedados no Google App Engine e pagava um serviço para hospedar meus fontes SVN.
Somado à necessidade de poder fazer alguns testes mais hardcore, resolvi contratar um VPS (virtual private server) em Linux e centralizar nele os sites asp.net, java e os meus fontes SVN.
Você deve estar pensando: “como assim? sites asp.net em Linux?”. Sim, para quem ainda não conhece, isso é possível com o Projeto Mono que hoje é mantido pela Novell.
Vou relatar nesse post um pouco sobre minha aventura.
1a Etapa: escolher um serviço de host VPS
Eu sei que a qualidade dos serviços é diretamente proporcional ao custo da hospedagem, não vou enganar pensando que existe milagre, então o que procurei foi um equilíbrio entre preço e confiabilidade.
Existem muitos serviços de VPS nos Estados Unidos mas não me sentia muito seguro pois sei que alguns são revenda da revenda.
No Brasil eu conhecia o serviço da Locaweb. Eles disponibilizam um serviço que eles classificam como “Cloud Computing”, o que tecnicamente discordo que seja cloud. É apenas o antigo VPS com outro termo. Não é objetivo desse post explicar as diferenças entre VPS e Cloud, mas o que posso adiantar é que hoje os outros serviços de Cloud Computing que seguem a risca a definição são o Microsoft Azure e o Google App Engine.
Procurando por “opiniões cloud locaweb” no Twitter acabei encontrando uma referência ao serviço de “cloud” da tecla.com.br que vim a descobrir é um braço da http://www.alog.com.brALOG que conheço de longa data, desde a época da Comdomonio (o nome era assim mesmo, com “m”). Sempre gostei muito da qualidade do serviço deles e não tive dúvidas em fechar um VPS, ops, “cloud” com eles. Escolhi o pacote mais básico, que contempla 2 processadores de 300 Mhz, 512 de RAM e 40 Gb de disco. Fechei a compra umas 3 da tarde, paguei o boleto, enviei o comprovante via email e no final da tarde já estava com meu server no ar (obrigado ao pessoal do suporte que teve paciência com a minha ansiedade!)
Agora começava a…
2a. Etapa: configurações básicas
Eu escolhi um servidor com Ubuntu 9 pré-instalado, mas sem nenhum pacote adicional.
A primeira coisa que precisei fazer foi entrar no painel de controle deles e conectar via ssh através do applet java que está no painel. Essa é a única forma de se conectar inicialmente já que o server vem bloqueado por questões de segurança e você precisa alterar a senha para liberar o acesso remoto.
Liberado o acesso, pude começar a conectar remotamente via ssh.
Primeiramente instalei o famoso pacote Apache + PHP + MySql. Você pode ver um tutorial básico aqui: http://www.ubuntugeek.com/how-to-install-apache2-webserver-with-phpcgi-and-perl-support-in-ubuntu-server.html e aqui: http://www.vivaolinux.com.br/dica/Instalando-servidor-Apache-+-PHP-+-MySQL-+-phpMyadmin-+-noip-no-Ubuntu-6.10-Server
(nesse post não vou entrar em detalhes, mas vou deixar links com as informações)
Java
Para meus projetos em Java eu instalei o Tomcat, seguindo as dicas deste tutorial:
Installing Tomcat 6 on Ubuntu: http://www.howtogeek.com/howto/linux/installing-tomcat-6-on-ubuntu/
3a. Etapa: migrando o servidor de SVN
Até o momento utilizava o serviço da www.codespaces.com . O serviço é excelente, só estou tirando de lá por uma questão de centralização e racionalização de custos com hospedagem.
Para montar um servidor SVN segui os passos descritos nesse link: http://stackoverflow.com/questions/60736/how-to-setup-a-subversion-svn-server-on-gnu-linux-ubuntu. Como não tenho um certificado de segurança recebo sempre uma observação nos clientes de que o certificado não é confiável, vou tentar resolver isso mais adiante.
Servidor instalado, subi o backup dos repositórios do SVN que a codespaces disponibiliza.
Nas estações onde desenvolvo usei o comando Relocate para apontar para a nova localização e fazer uma migração transparente.
Ao fazer o primeiro commit no novo local descobri que a codespaces.com usa um hook de post-commit que acaba gerando um warning no novo local pois ele não vem no backup. Para resolver isso basta entrar em cada repositório no diretório hooks e comentar dentro do arquivo post-commit a linha que chama o hook.
4a. Etapa: instalando o Mono
Tentei instalar o Mono de várias formas. O Ubuntu que é instalado pela Alog possui um Mono muito antigo.
Alternativamente pode-se tentar instalar via http://badgerports.org/o que comigo não funcionou muito bem.
Tentei instalar baixando o trunk dos fontes do Mono, mas como era de se esperar, existem muitos erros.
Por último, resolvi baixar os tarballs com fontes estáveis: http://ftp.novell.com/pub/mono/sources-stable/ as instruções para compilar você pode encontrar em “compiling mono from tarball” . Tenha paciência, o processo de compilação pode demorar bastante tempo dependendo da configuração da máquina.
5a. Etapa: migrando os sites
Essa etapa irá demorar um pouco. Meus sites atuais estão no BlogEngine e quero mudar para um engine próprio baseado em asp.net MVC e algum banco NoSQL.