Central de Ajuda

Guia da Central de Ajuda

Como instalar e publicar Ruby on Rails em VPS Linux ou cPanel/WHM

Publicar uma aplicação Ruby on Rails exige mais do que instalar a gem rails: é necessário escolher versões compatíveis, preparar banco de dados, variáveis secretas, servidor de aplicação, proxy HTTPS, processos auxiliares, logs, backup e uma forma segura de atualizar ou reverter. Este guia apresenta dois cenários atuais: cPanel com Application Manager/Passenger e VPS administrado diretamente.

Evite tutoriais antigos. Comandos como /scripts/installruby, versões antigas do Rails e pacotes ea-ruby2*-mod_passenger não representam a instalação moderna em sistemas atuais. Confirme sempre a matriz de compatibilidade do sistema operacional, do cPanel, do Ruby e da aplicação.

Antes de começar

  • faça backup ou snapshot e tenha acesso ao console do provedor;
  • use um usuário de aplicação sem privilégios de root;
  • confira no Gemfile e em .ruby-version a versão exigida;
  • prepare domínio, DNS, certificado TLS e banco compatível;
  • separe produção de desenvolvimento e homologação;
  • registre um procedimento de rollback antes da primeira publicação.

1. Instalar Ruby no VPS

O gerenciador de pacotes da distribuição é simples e recebe atualizações do sistema, mas pode oferecer uma versão mais antiga. Quando a aplicação exige uma versão específica, use um gerenciador como rbenv, asdf ou mise seguindo a documentação do projeto escolhido. Não misture instalações globais e por usuário sem documentar os caminhos.

ruby -v
gem -v
bundle -v

Instale também as bibliotecas de compilação e os clientes de banco exigidos pelas gems nativas, usando os nomes de pacote da distribuição suportada. Em seguida, instale Bundler na versão compatível com o Gemfile.lock e execute a instalação como o usuário da aplicação:

bundle config set without 'development test'
bundle config set path 'vendor/bundle'
bundle install

2. Preparar a aplicação para produção

Envie o código por Git ou por um processo de implantação reproduzível. Nunca publique .env, chave mestra, credenciais ou dumps no repositório. Configure RAILS_ENV=production, RAILS_MASTER_KEY ou as variáveis equivalentes no ambiente protegido, além de DATABASE_URL, URL pública, e-mail e armazenamento usados pelo projeto.

RAILS_ENV=production bin/rails db:prepare
RAILS_ENV=production bin/rails assets:precompile
RAILS_ENV=production bin/rails runner 'puts Rails.version'

db:prepare pode criar ou migrar o banco conforme o estado encontrado. Em uma base crítica, revise as migrations, faça backup consistente e execute mudanças potencialmente bloqueantes em janela planejada. Teste a aplicação em homologação com dados anonimizados.

3. Publicar pelo Application Manager do cPanel

Esse menu só aparece se o provedor o habilitou no Feature Manager e instalou Passenger. Em servidores atuais, o pacote principal é ea-apache24-mod-passenger; ele não instala Ruby automaticamente. O administrador deve instalar um Ruby compatível e configurar o executável que o Passenger utilizará. Em hospedagem compartilhada, confirme previamente se o plano oferece essa função e qual versão está disponível.

  1. No cPanel, abra Software > Application Manager.
  2. Escolha Register Application.
  3. Defina domínio, URL base e caminho da aplicação fora de diretórios públicos desnecessários.
  4. Selecione o ambiente de produção e informe o arquivo de inicialização quando a interface solicitar.
  5. Cadastre somente variáveis necessárias; use o mecanismo de segredos recomendado pelo provedor.
  6. Registre a aplicação, revise o log indicado pela interface e teste uma rota de saúde.

Para Rails com Passenger, mantenha o arquivo config.ru da aplicação e assegure que o usuário do cPanel consegue ler o código e gravar apenas nos diretórios necessários. Depois de uma atualização, use o mecanismo de reinicialização suportado pelo Passenger/Application Manager em vez de matar processos indiscriminadamente.

4. Alternativa em VPS: Puma, serviço e proxy reverso

Em um VPS sem Application Manager, uma arquitetura comum executa Puma como serviço não privilegiado, com Apache ou NGINX terminando HTTPS e encaminhando para um socket Unix ou porta local. Crie uma unidade systemd específica, defina diretório de trabalho, usuário, ambiente e política de reinício. Não exponha a porta interna do Puma à internet.

Valide a configuração do proxy antes de recarregar o serviço, limite tamanho e tempo de requisição conforme a aplicação e preserve os cabeçalhos de protocolo e endereço do cliente. Configure renovação automática do certificado e teste a partir de uma rede externa.

5. Filas, tarefas agendadas e armazenamento

Workers de Active Job, Sidekiq ou outra fila devem ser processos separados, supervisionados e monitorados. Agendamentos precisam impedir sobreposição quando necessário e registrar saída sem expor segredos. Se a aplicação recebe arquivos, use armazenamento persistente ou objeto externo; diretórios dentro de uma nova release podem desaparecer no próximo deploy.

6. Permissões e segurança

  • não execute servidor web, Bundler, migrations ou aplicação como root;
  • mantenha sistema, Ruby, Rails e gems em versões com suporte;
  • revise vulnerabilidades com ferramentas do ecossistema e aplique correções;
  • restrinja banco e Redis à rede local ou privada;
  • use firewall, MFA, chaves SSH e princípio do menor privilégio;
  • não grave tokens, cookies ou dados pessoais nos logs;
  • defina limites de memória, CPU, processos e disco.

7. Implantação com baixa indisponibilidade

  1. Execute testes e análise de segurança no commit que será publicado.
  2. Crie uma release imutável e instale dependências com lockfile.
  3. Faça backup do banco antes de migrations destrutivas.
  4. Compile assets e valide a inicialização fora do tráfego.
  5. Aplique migrations compatíveis com a versão anterior quando houver implantação gradual.
  6. Troque a release ativa e reinicie os processos de forma controlada.
  7. Teste login, gravação, upload, e-mail, jobs e rota de saúde.
  8. Monitore erros, latência e consumo; reverta se os critérios falharem.

Diagnóstico rápido

SintomaVerifique
Application Manager não apareceFeature Manager, plano e instalação do Passenger pelo administrador
Erro de versão do Ruby.ruby-version, Gemfile, caminho do executável e ambiente do serviço
Gem não compilaBiblioteca de desenvolvimento, compilador, arquitetura e versão compatível
Erro 500 ao iniciarlog do Passenger/Puma, credenciais, chave mestra, banco e permissões
Assets ausentescompilação em produção, URL base, permissões e configuração do proxy/CDN
Jobs não executamworker, fila, credenciais, serviço e política de reinício

Backup e recuperação

Mantenha cópias externas e testadas do banco, arquivos enviados, configuração e segredos cifrados. O repositório não substitui o backup de dados. Registre RPO e RTO, automatize verificações e faça restaurações periódicas em ambiente isolado. Um snapshot facilita rollback do servidor, mas não substitui uma cópia consistente do banco.

Referências oficiais: Application Manager do cPanel, aplicações Passenger no cPanel, instalação do Ruby e configuração do Rails.

Se você precisa controlar runtime, proxy, workers e banco, conheça o servidor VPS com acesso root ou o serviço de gerenciamento de servidores.

Recursos relacionados

Continue com materiais e serviços relacionados ao tema deste guia.

Este guia resolveu sua dúvida? Seu retorno ajuda a priorizar as próximas revisões.
Atendimento técnico

Não encontrou o resultado esperado?

Abra um chamado e envie a mensagem de erro completa, o domínio ou serviço afetado, o horário do teste e capturas de tela sem senhas.