Configurando Um VPS para o Rails
Configurando Um VPS para o Rails
Configurando Um VPS para o Rails
Instale o yarn
npm install --global yarn
Configure o Git
$ git config --global user.name '<seu nome>'
$ git config --global user.email <seu email>
Testando as vairáveis
echo $LC_ALL
echo $RAILS_ENV
Instalando o RVM
$ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
$ curl -sSL https://get.rvm.io | bash
Instale o bundler
$ gem install bundler
Reinicie o servidor
sudo reboot
Instale o NGINX
$ sudo apt-get update
$ sudo apt-get install nginx
Acesse o seu servidor via browser para confirmar se está tudo funcionando
$ http://ip_do_seu_servidor
Instalando o MySQL
sudo apt-get install -y mysql-client mysql-server libmysqlclient-dev
-------------------
-----------------
No seu projeto, mova o arquivo database.yml para o gitignore e crie uma cópia para o mesmo.
cp config/database.yml config/database.yml.example
echo config/database.yml >> .gitignore
production:
adapter: mysql2
encoding: utf8
reconnect: true
database: <bd-da-app>
pool: 5
username: root
password: <senha-do-mysql>
socket: /var/run/mysqld/mysqld.sock
------------------------------------------------
Credentials no Rails...
local$ cat config/master.key
------------------------------------------------
------------------------------------------------
# Gemfile
group :development do
gem 'capistrano', '~> 3.10'
gem 'capistrano-rvm'
gem 'capistrano-bundler', '~> 1.5'
gem 'capistrano-rails', '~> 1.4'
end
group :production do
gem ‘mysql2’ # , '~> 0.3.18'
end
Rode o comando
bundle install
# Capfile
require 'capistrano/bundler'
require 'capistrano/rvm'
require 'capistrano/rails'
---------------------------
-------------------------------------------------
-------------------------------------------------
-------------------------------------------------
-------------------------------------------------
Configurando o NGINX
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
sendfile on;
keepalive_requests 10;
keepalive_timeout 60;
tcp_nodelay off;
tcp_nopush on;
server_tokens off;
client_header_timeout 60;
client_body_timeout 60;
ignore_invalid_headers on;
send_timeout 60;
server_name_in_redirect off;
gzip on;
gzip_http_version 1.0;
gzip_comp_level 6;
gzip_proxied any;
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss
text/javascript;
gzip_disable "MSIE [1-6] \.";
include /etc/nginx/sites-enabled/*;
}
upstream <seu_app> {
server unix:/tmp/<seu_app>.sock fail_timeout=0;
}
server {
listen 80;
server_name <seu_app>.com.br;
root /var/www/<seu_app>/current/public;
index index.html index.htm;
client_max_body_size 10M;
location / {
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_set_header X-FORWARDED_PROTO $scheme;
proxy_redirect off;
if ($request_uri ~* "\.(ico|css|js|gif|jpe?g|png)\?[0-9]+$") {
access_log off;
add_header Cache-Control public;
expires max;
break;
}
if (!-f $request_filename) {
proxy_pass http://<seu_app>;
break;
}
}
Reinicie o NGINX
sudo systemctl nginx restart
----------------------------------------------------------------
Configurando o Unicorn
group :development do
gem "capistrano3-unicorn"
end
bundle install
namespace :deploy do
task :restart do
invoke 'unicorn:stop
invoke 'unicorn:start'
end
end
pid "#{root}/tmp/pids/unicorn.pid"
stderr_path "#{root}/log/unicorn.log"
stdout_path "#{root}/log/unicorn.log"
worker_processes 4
timeout 30
preload_app true
Faça um commit
git add .
git commit -m "Adicionando o Unicorn."
git push origin master
-----------
Adicione a gem
group :production do
gem 'mailgun-ruby', '~>1.1.6'
end
bundle
Abra a credentials do rails e adicione a chave
EDITOR=vim rails credentials:edit
MAILGUN_KEY: asdfasdfasdfasdf
# Mailgun Config
config.action_mailer.delivery_method = :mailgun
config.action_mailer.mailgun_settings = {
api_key: Rails.application.credentials.MAILGUN_KEY,
domain: 'mg.<seu_site>.com.br'
}
Lembe-se que a gem mailgun geralmente precisa de 2GB no servidor para poder se instalada. Se
for o caso, faça um resize em seu droplet
Teste a aplicação. Neste momento já deve ser possível recuperar senha através do site.