Esta imagem de máquina virtual possui um servidor instalado com as mesmas configurações de produção. A infraestrutura existente é a seguintes:
- nginx
- Servindo os arquivos estáticos
- Funcionando como proxy para o passenger
- passenger
- Servindo a aplicação
- MySQL
Os arquivos estáticos são servidos através do ngnix na porta 3000 (da máquina virtual) e aplicação através do Passenger na porta 80.
Para instalar o Vagrant siga os passos descritos em no README. Graças a conflitos nas versões das dependedências do Vagrant e do Redu não é possível adicioná-lo ao Gemfile do projeto. Uma ideia é instalar no Gemset global do RVM.
Basta adicionar uma cópia da máquina virtual ao vagrant. Para ter acesso a esta cópia entre em contato com guilhermec [at] redu.com.br ou o líder técnico do seu time.
$ vagrant box add redu package.box
Em seguida incialize a máquina virtual e crie uma base de dados e crie database.yml
para o ambiente de performance. Também é necessário processar os arquivos estáticos utilizando o jammit.
$ vagrant up
$ vagrant ssh
vagrant@lucid32:~$ cd /vagrant/
vagrant@lucid32:/vagrant$ cp config/database.yml.example config/database.yml
Faça o setup do Redu normalmente:
vagrant@lucid32:/vagrant$ bundle exec rake db:create RAILS_ENV=performance
vagrant@lucid32:/vagrant$ bundle exec jammit -c config/assets-performance.yml
vagrant@lucid32:/vagrant$ RAILS_ENV=performance script/delayed_job restart --queues=email,general,general -n 3
Baixe um dump do banco de produção de salve dentro da pasta do Redu. Para carregar o dump no MySQL da VM rode o comando:
vagrant@lucid32:/vagrant$ mysql -u root redu_performance < redu_rails3.2012-07-09T02-10-09
No primeiro acesso é necessário instalar o script que inicializa o nginix no init.d do sistema:
vagrant@lucid32:/vagrant$ sudo cp config/vagrant/nginx /etc/init.d/
vagrant@lucid32:/vagrant$ sudo chmod +x /etc/init.d/nginx
Para iniciar o servidor:
vagrant@lucid32:/vagrant$ sudo cp config/vagrant/nginx /etc/init.d/
vagrant@lucid32:/vagrant$ sudo /etc/init.d/nginx start
Pronto. A aplicação funcionará na porta 8080 da máquina host (porta 80 da VM).
vagrant@lucid32:/vagrant$ sudo /etc/init.d/nginx stop
$ vagrant halt