Skip to content

Instantly share code, notes, and snippets.

@dimoreira
Last active December 20, 2015 04:39
Show Gist options
  • Save dimoreira/6072710 to your computer and use it in GitHub Desktop.
Save dimoreira/6072710 to your computer and use it in GitHub Desktop.
Configuração de Produção com RVM + Nginx + Unicorn no Ubuntu

Configuração de Produção com RVM + Nginx + Unicorn no Ubuntu


Comece instalando os linux headers necessários

$ sudo apt-get update
$ sudo apt-get install build-essential vim git-core curl
$ sudo apt-get install libcurl4-openssl-dev libx11-dev libffi-dev tcl-dev tk-dev

Em seguida instale o RVM

$ \curl -L https://get.rvm.io | bash -s

E adicione o seguinte ao seu ~/.profile:

$ vim .profile
...

# Load RVM into a shell session *as a function*
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

Rode o RVM Requirements:

$ rvm requirements

E instale todos os sources que o RVM necessita.

Compile e instale o Ruby

$ rvm install 2.0.0 # or another ruby version (1.9.2, 1.9.3)

Instale a gem do Rails

$ gem install rails # a última versão estável é a 4.0.0

# para outras versões rode
$ gem install rails --version=3.2.13

Instale o Nginx (atualizado e estável)

Primeiramente instale as dependencias para o repositório ppa:

$ sudo apt-get install python-software-properties

Então adicione o repositório para o apt-get, atualize os pacotes e instale:

$ sudo add-apt-repository ppa:nginx/stable
$ sudo apt-get update 
$ sudo apt-get install nginx

Remova a configuração do site default em /etc/nginx/sites-available/default e /etc/nginx/sites-enabled/default:

$ sudo rm -f /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default

Crie um projeto rails com arquivos de configuração

Para efeito de testes, crie um projeto rails e adicione arquivos de configuração para o nginx e unicorn:

$ rails new blog

Adicione o unicorn no Gemfile e rode o bundle install:

# Gemfile
gem 'unicorn'
$ bundle install

Após o bundle completar a instalação da gem, crie 2 arquivos de configuração:

# config/nginx.conf
upstream unicorn {
  server unix:/caminho/para/sua/aplicacao/tmp/unicorn.blog.sock fail_timeout=0;
}

server {
  listen 80 default;
	root /caminho/para/sua/aplicacao/public;
	
	keepalive_timeout 10;
	
	try_files $uri/index.html $uri @unicorn;
	location @unicorn {
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header Host $http_host;
		proxy_redirect off;
		proxy_pass http://unicorn;
	}
}
# config/unicorn.rb
root = "/caminho/para/sua/aplicacao/"
working_directory root
pid "#{root}/tmp/pids/unicorn.pid"
stderr_path "#{root}/log/unicorn_error.log"
stdout_path "#{root}/log/unicorn_out.log"

listen "#{root}tmp/sockets/unicorn.sock"
worker_processes 4 
timeout 30

Crie um link simbólico do arquivo config/nginx.conf para a pasta sites-enabled no diretório de configurações do nginx:

$ sudo ln -s /path/to/your/application/config/nginx.conf /etc/nginx/sites-enabled/blog

Reinicie o WebServer

Agora que a configuração está finalizada, reinicie o Nginx:

$ sudo service nginx restart
 * Restarting nginx nginx

Agora abra a url da aplicação no browser e veja funcionando.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment