Instalação fácil de uma aplicação Rails – Parte 1
Como todos já sabem, agora a Locaweb suporta Ruby on Rails nas hospedagens Linux compartilhada. Recentemente finalizamos a atualização da maioria das máquinas.
Para saber se sua conta tem o novo suporte ou não, basta digitar o comando ‘rails -v’. Se o resultado for 2.1.0 ou superior, é porque sua hospedagem conta com Phusion Passenger. Caso contrário, será necessário abrir um chamado para migrar para as novas máquinas.
Finalmente, o objetivo deste post é fazer com que você, que já tem sua aplicação pronta ou está para começar uma, consiga rapidamente colocá-la em produção. A primeira coisa a fazer é configurar no Painel de Controle da Locaweb o apontamento do seu domínio (ex. railsdemo.tecnologia.ws) para a pasta na sua hospedagem (ex. /public_html/demo). Veja neste outro arquivo para mais detalhes sobre o Painel de Controle.
Feito isso, estou considerando que você não é um usuário já avançado em Rails – por isso esse artigo se chama “Parte 1″. Além disso, estou assumindo que você está utilizando algum ambiente Linux ou Mac. Para Windows depois faço outro post. Pretendo colocar pelo menos mais um ou dois artigos nesta série sobre deployment. O ponto chave se chama Capistrano
Agora, na sua máquina local execute os seguintes passos:
Para começar, instale o capistrano:
sudo gem install capistrano
Agora, instale uma nova gem que eu mesmo acabei de colocar no ar, da seguinte forma:
gem sources -a http://gems.github.com
sudo gem install akitaonrails-locarails
Pronto, agora crie um novo projeto Rails ou então entre no seu projeto já pronto e de lá digite o seguinte comando:
locarails .
Ele irá fazer uma série de perguntas sobre sua hospedagem. No caso: seu usuário da conta no Linux, o dominio que registrou no painel de controle, o diretorio (nome da aplicacao) que tambem apontou no Painel e os dados do MySQL (usuario, senha, servidor, nome do banco). Por enquanto ainda não coloquei suporte ao Postgres, mas isso virá em breve.
Se terminar tudo bem, agora execute este comando:
cap deploy:setup
Isso irá preparar o ambiente na sua conta Linux remota. Provavemente ele pedirá a senha da sua conta Linux, tenha ela em mãos.
Finalmente, basta executar este comando:
cap deploy
E tudo estará no ar no dominio que voce pediu – salvo em caso de ainda ter o tempo de propagação do DNS ou o Apache ainda não ter sido recarregado (ele é recarregado a cada 2 horas).
A gem locarails deve ser instalada somente na sua máquina local!
E toda vez que precisar colocar uma nova versão da sua aplicação em produção, simplesmente execute o comando ‘cap deploy’ e ele fará todo o necessário. O mais interessante: se em algum momento você subir um código com erros na sua hospedagem, seu site sair do ar por causa disso e você não souber como consertar rapidamente, execute este comando:
cap deploy:rollback
E isso voltará seu site exatamente à versão anterior que estava funcionando, em segundos!!
Observação Importante: a gem akitaonrails-locarails ainda é experimental! Somente a utilize se sua aplicação não for crítica! Qualquer feedback, sugestões ou reportar bugs nesta gem em específico, enviem e-mail diretamente para mim em fabio.akita@locaweb.com.br. Este procedimento não tem suporte oficial ainda.
Tags: capistrano, deployment, instalacao, linux, rubyonrails
20 de agosto de 2008 às 14:13
Akita.
Estou iniciando em JRuby no NetBeans, em Windows. Quando você abordar o deploy no Windows será possivel fazê-lo também com JRuby?
Abraços
Rafael
25 de agosto de 2008 às 9:38
Rafael, nossas hospedagens tem o serviço de JVM Dedicado. Como o JRuby roda sobre Java, o produto correto seria esse. Nesse artigo estou falando de Ruby puro sobre Apache. Para entender mais sobre deployment de JRuby veja este link:
http://www.javaworld.com/community/?q=node/1270
No caso o artigo fala de Tomcat. Será necessário adaptar um pouco para rodar sobre Tomcat ou JBoss, no caso, basta pegar o arquivo .war gerado pelo warble e jogar na pasta de deployment do tomcat para que ele faça auto-depoy.
31 de agosto de 2008 às 21:53
Olá estou tentando fazer o deploy de uma aplicação usando este plugin, mas quando uso o cap deploy ele começa a fazer o upload mas nao encotra as pastas dentro do release (images, javascripts, stylesheets e database.yml) da pasta public e config.
Ele mostra que criou mas na verdade nao cira e acaba dando erro.
O que poderia fazer para arrumar?
1 de setembro de 2008 às 10:53
Provavelmente você instalou o novo Capistrano 2.5.0, que foi lançado poucos dias atrás. Digite ‘cap -v’ para ter certeza. Se aparecer ‘Capistrano v2.5.0′ faça o seguinte:
sudo gem uninstall capistrano –version=2.5.0
Se você ainda não tinha instalado o Capistrano anterior, instale desta forma:
sudo gem install capistrano –version=2.4.3
Existe alguma diferença entre essas duas versões que torna meu script incompatível. Vou investigar e criar a correção, mas enquanto isso, se manter no Capistrano 2.4.3 resolve o problema.
16 de setembro de 2008 às 16:20
Funcionou perfeitamente, uma duvida caso eu crie sub-pastas na pasta public tenho que rodar o setup novamente ou apenas deploy montará corretamente ?
17 de setembro de 2008 às 11:01
@Daniel, não entendi. Cada aplicação Rails tem uma pasta public onde ficam somente arquivos que podem ser acessados diretamente (como imagens, stylesheets, javascript, html estático). Não se deve colocar código Ruby ou mesmo outra aplicação Rails dentro do public.
Não sei se entendi direito, mas se criar sub-pastas no public, elas estão automaticamente disponíveis para acessar via browser. O setup deve ser rodado apenas uma vez, e depois não precisa mais.
20 de outubro de 2008 às 21:53
cap deploy:setup
the task `deploy:setup’ does not exist
sabe pq isto pode estar acontecendo ?
4 de novembro de 2008 às 10:03
Olá,
Estou tentando instalar a gem locarails n minha hospedagem, porém aparece a seguinte mensagem:
[ideiasoftware@hm1429 ~]$ gem install akitaonrails-locarails –source=http://gems.github.com
ERROR: While executing gem … (Errno::EACCES)
Permission denied – /usr/lib/ruby/gems/1.8/cache/akitaonrails-locarails-1.1.6.gem
como solucionar?
6 de janeiro de 2009 às 22:13
Akita,
Eu fiz a minha aplicação em rails 1.2.6.
Quando eu executo o comando cap deploy ele aborta no final, está aparecendo o seguinte:
executing “cd /home/patrickespake/rails_app/irai/releases/20090107010417 && rake db:migrate RAILS_ENV=production”
servers: ["www.patrickespake.com"]
[www.patrickespake.com] executing command
*** [err :: http://www.patrickespake.com /home/patrickespake/rails_app/irai/releases/20090107010417/config/boot.rb:20:Warning: Gem::SourceIndex#search support for String patterns is deprecated
*** [err :: http://www.patrickespake.com
*** [err :: http://www.patrickespake.com /usr/lib/ruby/gems/1.8/gems/actionmailer-1.3.6/lib/action_mailer/vendor/tmail/mailbox.rb:225: [BUG] object allocation during garbage collection phase
*** [err :: http://www.patrickespake.com ruby 1.8.6 (2008-08-08) [i386-linux]
*** [err :: http://www.patrickespake.com
** [out :: http://www.patrickespake.com (in /home/patrickespake/rails_app/irai/releases/20090107010417)
*** [err :: http://www.patrickespake.com sh: line 1: 18194 Aborted rake db:migrate RAILS_ENV=production
command finished
*** [before_symlink] rolling back
*** [deploy:update_code] rolling back
* executing “rm -rf /home/patrickespake/rails_app/irai/releases/20090107010417; true”
servers: ["www.patrickespake.com"]
[www.patrickespake.com] executing command
command finished
command “cd /home/patrickespake/rails_app/irai/releases/20090107010417 && rake db:migrate RAILS_ENV=production” failed on http://www.patrickespake.com
17 de janeiro de 2009 às 22:12
@Clovis digite “cap -v” a versão precisa ser 2.5. Parece que você está com uma antiga.
@Ricado, você precisa instalar na sua máquina local e não dentro da hospedagem!
@Patrick, leia o log: ele diz que o rake db:migrate falhou. Pode ser que seu config/database.yml esteja mal configurado. Por exemplo, veja se o ítem ‘host’ aponta para um endereço de mysql que realmente existe (tente pingá-lo por exemplo).
4 de março de 2009 às 12:25
Olá Akita,
gostaria de saber se posso utilizar esse método para fazer deploy que não seja de um aplicativo rails, no meu caso me refiro a uma site (php) armazenado em um repositorio git da minha hospedagem.
abs!
4 de março de 2009 às 18:18
@Ludy com certeza, o capistrano é uma ferramenta genérica para deployments. Muita gente usa com PHP, se você procurar no google por “capistrano php” vai achar vários tutoriais como este:
http://devblog.imedo.de/2008/6/23/wordpress-deployment-with-capistrano-2-and-git
1 de abril de 2009 às 17:28
Salve, @akitaonrails.
Muito obrigado por todo seu esforço.
Estou tentando dar deploy com o locarails 1.11, cap 2.5 e rails 2.3.2, tanto local quanto em mino hospedagem linux compartilhada.
o cap deploy:setup ocorre sem problemas, mas no cap deploy chega as seguintes linha e trava:
* executing `deploy:restart’
* executing “chmod -R 655 ~/rails_app/projetos/releases/20090401202653″
servers: ["www.bsconsult.com.br"]
[www.bsconsult.com.br] executing command
*** [err :: http://www.bsconsult.com.br chmod: `/home/bsconsult1/rails_app/projetos/releases/20090401202653′: Permission denied
command finished
failed: “sh -c \”chmod -R 655 ~/rails_app/projetos/releases/20090401202653\”" on http://www.bsconsult.com.br
Interessante que mesmo via ssh não consigo rodar o chmod com 655, já com 777 consigo…
Help!
Abrs,
Hélio
1 de abril de 2009 às 17:48
Em tempo: estou em um mac os x leopard.
abs,
Hélio
14 de abril de 2009 às 13:54
A Locaweb anda péssima para hospedagem em Rails.
Tem vezes que são problemas de load no servidor, tem vezes que são problemas de permissões, tem vezes que são problemas de atendimento…
A qualidade dos serviços está lá embaixo.
1 de maio de 2009 às 9:06
Estou com dificuldades para seguir os passos colocados por você LocaRails + Capistrano.
Meu maior problema está sendo com o Capistrano. Após fazer o procedimento de instalação, nenhum problema é apresentado. Quando eu dou um “cap -v”, a próxima linha aparece vazia, ou seja, a versão não é exibida.
Quando eu executo o “locarails .”, todos as configurações são feitas (domínio,banco,etc), porém no final, é retornado o seguinte ERRO: Você provavelmente não tem o Capistrano instalado. Já removi e instalei a gem diversas vezes, em versões diferentes, porém o problema persiste.
Pode me ajudar?
2 de maio de 2009 às 23:47
Já consegui resolver…
6 de junho de 2009 às 22:45
Tiago, como conseguiu resolver seu problema com o Capistrano?
Tambem estou com o mesmo problema, quando rodo o Locarails ocorre o mesmo erro:
ERRO: Você provavelmente não tem o Capistrano instalado
Alguem pode ajudar?
6 de junho de 2009 às 23:08
Tiago, achei seu post no Forum. Executei o ‘capify .’ como vc tinha feito mas, só consegui rodar o ‘locarails .’ depois que apaguei o deploy.rb criado na pasta config do meu projeto.
De qualquer forma, fica o registro…
23 de junho de 2009 às 21:03
Olá,
Estou tentando colocar uma app no ar com locarails, tudo parece funcionar, porém quando tento acessar a aplicação recebo o seguinte erro:
Error message:
no such file to load — application (MissingSourceFile)
Exception class:
Passenger::UnknownError
Estou usando o rails 2.3.2 congelado na app.
Alguém poderia me ajudar a resolver isso?
Obrigado!
25 de junho de 2009 às 1:50
@Diego no Rails 2.3 o app/controllers/application.rb agora precisa ser app/controllers/application_controller.rb. está assim na sua aplicação? Se estiver vamos checar internamente o que pode ser.
26 de agosto de 2009 às 21:55
Estou com o mesmo problema do Diego, e sim Akita meu controller está como application_controller.rb
Fico no aguardo de uma solução.
27 de agosto de 2009 às 8:07
Olá,
o problema foi resolvido ao criar um link simbólico application.rb apontando para o application_controller.rb