Há muito tempo atrás, eu precisei fazer meu servidor rodar aplicações PHP com CakePHP / Laravel e Ruby com Rails, ao mesmo tempo. Costumo usar Debian e NGINX em todos os servidores que configuro, e aí veio aquele desafio de sempre, de criar um rewrite para rodar o projeto em um subdiretório.
A configuração é um pouco diferente do que costumo fazer para os projetos de PHP, porque para o Rails, eu usei o Unicorn por trás do NGINX, através de socket. Na configuração do NGINX, fica assim:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
location ^~ /myapp { alias /home/heitor/public_html/my_app/public; try_files $uri/index.html $uri.html $uri @my_app; } location @my_app { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://app_server; } upstream app_server { server unix:/home/heitor/public_html/my_app/tmp/sockets/my_app.sock fail_timeout=0; } |
No arquivo de configuração do Unicorn, a gente faz o seguinte:
1 2 3 4 5 6 7 |
working_directory "/home/heitor/public_html/my_app" pid "/home/heitor/public_html/my_app/pids/unicorn.pid" stderr_path "/home/heitor/public_html/my_app/log/unicorn.log" stdout_path "/home/heitor/public_html/my_app/log/unicorn.log" listen "/home/heitor/public_html/my_app/tmp/sockets/my_app.sock" worker_processes 2 timeout 30 |
Pronto… Basta iniciar o Unicorn como um daemon (unicorn_rails -c config/unicorn.rb -D) e dar um reload no NGINX (sudo /etc/init.d/nginx reload).