linux:rails_with_puma_deploy

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
Próxima revisão Ambos lados da revisão seguinte
linux:rails_with_puma_deploy [2017/09/05 11:43]
1891982 [Coloque o puma para ser iniciado automaticamente no boot da máquina]
linux:rails_with_puma_deploy [2017/09/20 09:53]
1891982 [Configurando SSL (opcional)]
Linha 148: Linha 148:
  
 <code> <code>
-$ sudo apt-get install libpq-dev imagemagick git-core+$ sudo apt-get install libpq-dev imagemagick git-core redis-server
 </code> </code>
  
Linha 154: Linha 154:
  
 Crie o Banco de Dados do Sistema no Postgresql Crie o Banco de Dados do Sistema no Postgresql
 +
 +Caso queira configura o Postgresql na mesma máquina do sistema, siga esse tutorial clicando
 +[[https://www.digitalocean.com/community/tutorials/como-instalar-e-utilizar-o-postgresql-no-ubuntu-16-04-pt|aqui]].
 +
  
  
Linha 483: Linha 487:
  
 <code> <code>
-cap production deploy:initial+cap production deploy
 </code> </code>
  
Linha 490: Linha 494:
 <code> <code>
 mkdir /mnt/apps/<app_name>/shared/config mkdir /mnt/apps/<app_name>/shared/config
 +cd /mnt/apps/<app_name>/shared/config
 touch database.yml touch database.yml
 touch secrets.yml touch secrets.yml
Linha 615: Linha 620:
 </code> </code>
  
 +* Configurando logrotate para rotacionar os logs da aplicação. Coloque o seguinte código no arquivo: /etc/logrotate.d/<app_name>
 +
 +<code>
 +/mnt/apps/<app_name>/shared/log/*.log {
 +  daily
 +  nomissingok
 +  rotate 7
 +  compress
 +  delaycompress
 +  notifempty
 +  copytruncate
 +}
 +</code>
 +
 +==== Configurando SSL (opcional) ====
 +
 +* Crie o arquivo .key, trocando <seu_dominio> pelo domínio da sua aplicação (Pode ser executado da sua máquina local)
 +
 +<code>
 +openssl genrsa -des3 -out <seu_dominio>.orig.key 2048
 +</code>
 +
 +* Remova a senha da .key, trocando <seu_dominio> pelo domínio da sua aplicação (Pode ser executado da sua máquina local)
 +
 +<code>
 +openssl rsa -in <seu_dominio>.orig.key -out server.key
 +</code>
 +
 +* Crie o arquivo .csr, trocando <seu_dominio> pelo domínio da sua aplicação (Pode ser executado da sua máquina local)
 +
 +<code>
 +openssl req -new -key <seu_dominio>.key -out <seu_dominio>.csr
 +</code>
 +
 +* Envie o arquivo .key e .csr para a geração do certificado. Após o certificado ser emitido, crie o arquivo: <seu_dominio>.crt
 +
 +* Crie a o diretório certs dentro da raiz do seu projeto rails:
 +
 +<code>
 +mkdir certs
 +</code>
 +
 +* Copie os arquivos .key e .crt do certificado para esse diretório recém-criado
 +
 +<code>
 +cp www.seu-dominio.ifce.edu.br.key certs
 +cp www.seu-dominio.ifce.edu.br.crt certs
 +</code>
 +
 +* Troque a configuração do nginx em config/nginx.conf para usar essa nova configuração que suporta ssl, trocando <app_name> pelo nome da sua app:
 +
 +<code>
 +upstream puma {
 +  server unix:///mnt/apps/<app_name>/shared/tmp/sockets/<app_name>-puma.sock;
 +}
 +
 +# for redirecting to https version of the site
 +server {
 +  listen 80;
 +  rewrite ^(.*) https://$host$1 permanent;
 +}
 +
 +# for redirecting to non-www version of the site
 +server {
 +  listen  80;
 +  server_name  www.<app_name>.ifce.edu.br;
 +  rewrite ^(.*) http://<app_name>.ifce.edu.br$1 permanent;
 +}
 +
 +server {
 +  listen  443 default ssl;
 +  server_name <app_name>.ifce.edu.br;
 +  root /mnt/apps/<app_name>/current/public;
 +
 +  ssl on;
 +  ssl_certificate /mnt/apps/<app_name>/current/certs/www.<app_name>.ifce.edu.br.crt;
 +  ssl_certificate_key /mnt/apps/<app_name>/current/certs/www.<app_name>.ifce.edu.br.key;
 +
 +  ssl_session_timeout  5m;
 +
 +  # modern configuration. tweak to your needs.
 +  ssl_protocols TLSv1.2;
 +  ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
 +  ssl_prefer_server_ciphers on;
 +
 +  location ^~ /assets/ {
 +    gzip_static on;
 +    expires max;
 +    add_header Cache-Control public;
 +  }
 +
 +  try_files $uri/index.html $uri @puma;
 +  location @puma {
 +    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 +    proxy_set_header Host $host;
 +    proxy_set_header X-Forwarded-Proto https;
 +    proxy_redirect off;
 +    proxy_pass http://puma;
 +  }
 +
 +  error_page 500 502 503 504 /500.html;
 +  client_max_body_size 10M;
 +  keepalive_timeout 10;
 +}
 +</code>
 +
 +* Modifique a configuração do config/environments/production.rb e adicione a seguinte linha:
 +
 +<code>
 +config.force_ssl = true
 +</code>
 +
 +* Modifique a configuração do enviroment de produção da sua app, provavelmente o config/enviroments/production.rb. Adicione ou modifique as duas linhas conforme abaixo para ficarem com https ao invés de http
 +
 +<code>
 +config.action_mailer.default_url_options = { host: 'https://<seu_dominio>' }
 +config.action_mailer.asset_host = "https://<seu_dominio>"
 +</code>
 +
 +* Agora comite tudo e faça um novo deploy
 +
 +<code>
 +git add -A .
 +git commit -m "Adicionando suporte a ssl"
 +git push origin master
 +cap production deploy
 +</code>
 +
 +* Após o deploy terminar logue no servidor via ssh e reinicie o nginx:
 +
 +<code>
 +sudo service nginx restart
 +</code>
 +
 +* PRONTO! Sua app já deve responder via https://seu-dominio.ifce.edu.br bem como redirecionar o tráfego http para https.
  • linux/rails_with_puma_deploy.txt
  • Última modificação: 2021/08/25 10:33
  • (edição externa)