Você já viu esses tutoriais ...
Background: Estou desenvolvendo um aplicativo da Web Ruby e decidi mudar para o JRuby por vários motivos que não vou mencionar aqui. Tenho experiência com servidores como Apache e Lighttpd, mas não tenho experiência com Java nem implemente aplicativos da Web baseados em Java.
Qual seria a melhor configuração para uma aplicação Web JRuby em termos de software de servidor? (E qualquer outra coisa que eu possa precisar.) Quais opções de servidor eu tenho? O que há de diferente entre configurar um servidor baseado em Java e, digamos, o Apache? Em outras palavras, como eu começo?
Obrigado por ajudar um novato. :)
PS: Eu não sei se isso faz diferença, já que o Java é multi-plataforma, mas minha máquina de desenvolvimento roda o Vista, então seria ótimo se eu também pudesse usar a mesma configuração no Windows para desenvolvimento.
Posso sugerir que você experimente a recente versão beta 4.0 do Passenger Phusion for Open Source? Ele se integra ao Apache e permite que você instale aplicativos baseados no JRuby Rack em um dos seus sites habilitados.
e
Faça o download do tarball do Google Code aqui:
$ curl -O http://phusion-passenger.googlecode.com/files/passenger-3.9.2.beta.tar.gz
$
$ JRUBY_OPTS="-Xcext.enabled=true" jruby ./bin/passenger-install-apache2-module
$ jgem install rack # Or jruby -S gem install rack
Em seguida, adicione as seguintes linhas ao seu arquivo de configuração do Apache (apache.conf ou o arquivo de configuração habilitado para sites):
LoadModule passenger_module /usr/local/lib/passenger-3.9.2.beta/libout/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/passenger-3.9.2.beta
PassengerRuby /usr/java/jruby/bin/jruby
PassengerSpawnMethod direct
Aparentemente, ele também pode se integrar ao nginx, mas não posso confirmar isso, já que não o tentei.
A integração do Apache realmente funciona bem para mim. Por favor, note que isso pode não ser uma configuração empresarial ideal. Primeiro, é uma versão beta. Em segundo lugar, entendo que a versão não empresarial deste mod de passageiros não será multi-threaded. O que isso significa precisamente com relação a um aplicativo JVM não faz sentido para mim, mas eu não pesquisei o suficiente para determinar se é realmente um problema. Observe também que estou fazendo essa recomendação para aqueles que estão interessados em obter algo com configuração rápida e especificamente usando uma instalação existente do Apache.
Eu tenho procurado fazer isso sozinho, e estou em um barco semelhante ao cartaz original - muita experiência na execução de uma pilha LAMP, mas precisando migrar para o JRuby e ter precisamente uma experiência Java nula.
Eu decidi ficar muito perto de como meus aplicativos atuais do Rails são executados (por trás do Apache e mod_proxy_balancer), colocando um Jetty 6 exemplo por trás do Apache e mod_proxy.
Eu olhei para o GlassFish, e embora fosse muito fácil de configurar e rodar, é demais para as minhas necessidades - a única parte da pilha Java EE que eu realmente preciso é o container do servlet.
Isso ainda não está em produção, mas o que devo fazer é o Apache ser executado pelos scripts de inicialização da minha distro, Jetty iniciado por capistrano e / ou scripts de inicialização e tudo assistido por monit. Isso é semelhante o suficiente para como as coisas funcionam atualmente que eu me sinto confortável com isso, e o único momento real "eww, Java" que tive foi trabalhar com o arquivo de configuração XML do Jetty.
Tags java web-server deployment