Guia de tecnologias

Instalar Redmine no Rocky Linux com PostgreSQL

10 min read Tutoriais Atualizado 22 Oct 2025
Instalar Redmine no Rocky Linux com PostgreSQL
Instalar Redmine no Rocky Linux com PostgreSQL

Important: leia as seções de segurança, solução de problemas e critérios de aceitação antes de colocar a instância em produção.

O que é o Redmine

Redmine é um sistema livre e open source para gerenciamento de projetos e rastreamento de issues, escrito principalmente em Ruby on Rails. É multiplataforma, suporta vários bancos de dados e oferece recursos como wiki por projeto, fóruns, controle de versões e gestão de permissões.

Fact box: redmine 4.2.3, ruby 2.7, bancos suportados: PostgreSQL, MySQL, SQLite; idiomas: cerca de 49.

Principais funcionalidades do Redmine

  • Suporte a múltiplos projetos
  • Wiki e fóruns por projeto
  • Gerenciamento de documentos e arquivos
  • Notícias, feeds e notificações por e-mail
  • Controle de tempo (time tracking)
  • Integração com vários SCM (SVN, Git, CVS, Mercurial, Bazaar)
  • Suporte a LDAP

Pré-requisitos do ambiente de exemplo

  • Sistema operacional: Rocky Linux 8.4 (Green Obsidian)
  • IP: 192.168.1.10
  • Privilégios de root
  • Domínio: redmine.example.com

Objetivos deste guia:

  • Instalar Ruby via RVM
  • Configurar banco PostgreSQL para Redmine
  • Instalar e integrar Passenger
  • Configurar virtual host Apache (com/sem SSL)
  • Instalar e configurar Redmine

Antes de começar: recomenda-se ter o PostgreSQL já instalado e funcionando. Consulte: Como instalar PostgreSQL no Rocky Linux.

Imagens de referência

Logotipo e interface inicial do Redmine com tela de login

Instalar dependências

Execute os comandos com sudo ou como root. Todos os pacotes listados são necessários para compilar, instalar gemas nativas e integrar Passenger.

  1. Adicione o repositório EPEL:
sudo dnf install epel-release -y
  1. Instale pacotes de compilação e bibliotecas necessárias:
sudo dnf install curl gpg gnupg2 gcc gcc-c++ make patch autoconf automake bison ImageMagick libffi-devel libtool patch redhat-rpm-config readline-devel postgresql-devel zlib-devel openssl-devel -y
  1. Instale pacotes necessários para integrar Passenger/Apache:
sudo dnf install libcurl-devel httpd-devel httpd apr-devel apr-util-devel -y

Após instalar httpd, habilite e inicie o serviço:

sudo systemctl enable --now httpd

Verifique o status do serviço:

sudo systemctl status httpd

Serviço httpd ativo e executando com status

Se tudo estiver ok, prossiga para instalar RVM e Ruby.

Instalar RVM e Ruby

A versão do Redmine usada aqui requer Ruby 2.7. Usaremos RVM (Ruby Version Manager) para instalar e gerenciar a versão do Ruby.

  1. Importe as chaves GPG dos desenvolvedores do RVM:
curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -  
curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -
  1. Instale o RVM e carregue o ambiente:
curl -L get.rvm.io | bash -s stable  
source /etc/profile.d/rvm.sh

Instalando o RVM Ruby Version Manager no sistema

Recarregue e instale requisitos do sistema:

rvm reload  
rvm requirements run

Instalando dependências necessárias para RVM

  1. Instale Ruby 2.7:
rvm install 2.7

Aguarde a conclusão. Em seguida, verifique as versões instaladas:

rvm list  
ruby --version

Verificar instalação do RVM e Ruby 2.7

Você deverá ver algo semelhante a ruby 2.7.2 sendo usada.

Configurar o banco de dados PostgreSQL para Redmine

Antes: confirme que o PostgreSQL já foi instalado e está ativo.

  1. Entre no shell do PostgreSQL:
sudo -u postgres psql
  1. Crie usuário e base para o Redmine (substitua a senha pela sua):
CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'StrongPasswordRedmine' NOINHERIT VALID UNTIL 'infinity';  
CREATE DATABASE redminedb WITH ENCODING='UTF8' OWNER=redmine;

Saia do psql com:

\q

Criar banco de dados PostgreSQL para Redmine

Notas importantes:

  • Use uma senha forte e guarde-a em um cofre de senhas.
  • Se o PostgreSQL estiver em outro host, ajuste host e firewall (port 5432).

Instalar e configurar o Redmine

Este guia instala Redmine 4.2.3 em /var/www/redmine.

  1. Baixe a release e extraia:
cd /var/www/  
wget https://www.redmine.org/releases/redmine-4.2.3.tar.gz

Extraia e renomeie:

tar -xzvf redmine-4.2.3.tar.gz  
mv redmine-*/ redmine
  1. Crie o arquivo de configuração do banco: no diretório do Redmine crie config/database.yml
export REDMINE=/var/www/redmine  
cd $REDMINE

nano config/database.yml

Cole e ajuste conforme suas credenciais:

production:  
  adapter: postgresql  
  database: redminedb  
  host: localhost  
  username: redmine  
  password: "StrongPasswordRedmine"  
  encoding: utf8
  1. Instale dependências Ruby com bundler:
gem install bundler

bundle config set --local path 'vendor/bundle'  
bundle config set --local without 'development test'

bundle install

Configurando dependências Ruby do Redmine com bundle

  1. Gere token secreto e migre o banco:
bundle exec rake generate_secret_token  
RAILS_ENV=production bundle exec rake db:migrate

Gerar token secreto e migrar o banco de dados do Redmine

  1. Ajuste permissões (usuario apache):
sudo chown -R apache:apache $REDMINE

Observação: dependendo da política da sua distribuição, o usuário do serviço Apache pode ser httpd, www-data ou apache. Ajuste conforme necessário.

Instalar e configurar Phusion Passenger

Passenger é um módulo de aplicação web para Ruby/Phusion frequentemente usado em produção com Apache ou Nginx.

  1. Instale o gem passenger globalmente:
gem install passenger

Instalação do Passenger via gem

  1. Instale o módulo Apache do Passenger:
passenger-install-apache2-module

Siga as instruções do instalador (pressione Enter quando solicitado). Escolha “Ruby” como tipo de aplicação quando perguntado.

Instalando o módulo Apache do Phusion Passenger

O instalador mostrará blocos de configuração a serem adicionados ao Apache.

Crie o arquivo /etc/httpd/conf.d/passenger.conf e cole o trecho recomendado. Exemplo do instalador:

   LoadModule passenger_module /usr/local/rvm/gems/ruby-2.7.2/gems/passenger-6.0.12/buildout/apache2/mod_passenger.so  
     
     PassengerRoot /usr/local/rvm/gems/ruby-2.7.2/gems/passenger-6.0.12  
     PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.7.2/wrappers/ruby  
   

Salve e reinicie o httpd:

sudo systemctl restart httpd

Configuração do Apache para o Passenger aplicada e serviço reiniciado

Se o instalador não reportar erros, o Passenger está pronto.

Instalação do Phusion Passenger concluída com sucesso

Configurar virtual host Apache para Redmine

  1. Crie /etc/httpd/conf.d/redmine.conf com a configuração HTTP (ajuste ServerName):
PassengerRuby /usr/local/rvm/gems/ruby-2.7.2/wrappers/ruby  
  
  
    ServerName redmine.example.io  
    DocumentRoot "/var/www/redmine/public"   
  
    ErrorLog logs/redmine_error_log  
    LogLevel warn  
  
      
        Options Indexes ExecCGI FollowSymLinks  
        Require all granted  
        AllowOverride all  
      
 
  1. Exemplo para habilitar HTTPS (ajuste caminhos de certificados):
PassengerRuby /usr/local/rvm/gems/ruby-2.7.2/wrappers/ruby  
  
  
  ServerName redmine.example.io  
  Redirect permanent / https://redmine.example.io/  
  
  
  
  
  ServerName redmine.example.io  
  
  Protocols h2 http/1.1  
  
    
    Redirect permanent / https://redmine.example.io/  
    
  
  DocumentRoot "/var/www/redmine/public"   
   
  ErrorLog /var/log/httpd/redmine.example.io-error.log  
  CustomLog /var/log/httpd/redmine.example.io-access.log combined  
  
  SSLEngine On  
  SSLCertificateFile /etc/letsencrypt/live/redmine.example.io/fullchain.pem  
  SSLCertificateKeyFile /etc/letsencrypt/live/redmine.example.io/privkey.pem  
  
    
    Options Indexes ExecCGI FollowSymLinks  
    Require all granted  
    AllowOverride all  
    
  

Habilite mod_ssl se necessário (instale/ative openssl/letsencrypt conforme política da sua infra).

Verifique a configuração e reinicie:

apachectl configtest  
sudo systemctl restart httpd

Configuração de Virtual Host Apache para Redmine aplicada

Verificar instalação do Redmine

Abra no navegador:

https://redmine.example.io/login

  1. Login inicial: usuário admin / senha admin. Após entrar, o Redmine solicitará alteração da senha admin.

Tela de login do Redmine mostrando usuário admin

  1. Altere a senha padrão admin para uma senha forte.

Alterar senha padrão do admin

  1. Verifique os detalhes da conta e o painel de administração.

Detalhes da conta de administrador configurados

  1. Carregue a configuração padrão de idioma e verifique usuários.

Painel de administração do Redmine com menus e estatísticas iniciais

  1. Confira a lista de usuários e as informações de instalação:

Lista de usuários do Redmine

Detalhes da instalação do Redmine

Se tudo corresponder ao esperado, a instalação básica foi concluída.

Critérios de aceitação (Kriterien de aceitação)

  • A página /login abre via HTTPS sem erros de certificado.
  • Login com admin/admin funciona e é possível alterar a senha.
  • Criação de projeto e issue funciona (criar > salvar sem erro).
  • Migração do banco (db:migrate) foi concluída sem erros.
  • Logs do Apache e Redmine não apresentam erros críticos nas primeiras 10 minutos após o deploy.

Testes e casos de aceitação

  • Teste 1: Acessar /login e obter 200 OK (SSL válido).
  • Teste 2: Criar projeto, adicionar membro e criar uma issue; verificar que a issue aparece na listagem.
  • Teste 3: Enviar notificação por e-mail ao criar uma issue (requer SMTP configurado).
  • Teste 4: Reiniciar httpd e confirmar que o serviço volta sem erros.

Checklist de funções por papel

Administrador sistema:

  • Atualizar sistema e pacotes
  • Configurar firewall (abrir 80/443)
  • Configurar backups regulares do DB e do diretório files
  • Configurar monitoramento e alertas

Administrador Redmine:

  • Criar projetos e definir roles/permissões
  • Instalar plugins testados em ambiente de staging
  • Gerenciar usuários e autenticação (LDAP/SSO)

Desenvolvedor / DevOps:

  • Testar atualizações em staging
  • Automatizar deploys e migrações
  • Validar compatibilidade das gemas com a versão do Ruby

Gerente de projeto:

  • Criar trackers, workflows e campos personalizados
  • Validar notificações e templates de email

Segurança e boas práticas

  • Sempre habilite HTTPS (Let’s Encrypt ou certificados comerciais).
  • Não use a conta admin padrão em produção; crie contas com MFA se possível.
  • Limite acesso ao banco de dados via firewall e, preferencialmente, mantenha o banco em rede privada.
  • Faça backup diário do banco e dos diretórios: config, files, plugins e public/system.
  • Considere rodar SELinux em modo enforcing; documente e ajuste políticas para Passenger/Apache.
  • Use usuários e permissões mínimas (principle of least privilege).
  • Atualize o Ruby/Gems/Passenger com testes em staging antes de aplicar em produção.

GDPR e privacidade

  • Revise quais dados pessoais são armazenados (usuários, e-mails, históricos de tickets).
  • Documente retenção de dados e procedimentos para exclusão de dados pessoais sob solicitação.
  • Use conexões seguras (TLS) para proteger dados em trânsito.
  • Controle acesso administrativo e registre auditorias quando possível.

Troubleshooting comum

Problema: Passenger falha ao carregar mod_passenger.so

  • Verifique se o caminho em passenger.conf corresponde ao instalado pelo RVM.
  • Execute passenger-config validate-install para verificar problemas.

Problema: Erros de permissão 500

  • Confira ownership: sudo chown -R apache:apache /var/www/redmine
  • Verifique SELinux: sudo ausearch -m avc -ts recent ou temporariamente setenforce 0 para testar (não deixar assim em produção).

Problema: Erros de gemas durante bundle install

  • Verifique versões do Ruby e gemset; rvm use 2.7
  • Instale dependências nativas (postgresql-devel, imagemagick, libxml2-devel etc.)

Comandos úteis para depuração:

systemctl status httpd
journalctl -u httpd -e
tail -n 200 /var/www/redmine/log/production.log
passenger-status
passenger-config validate-install

Alternativas e quando escolher outra abordagem

  • Docker: se prefere containerização, há imagens oficiais e não oficiais do Redmine. Ideal para ambientes isolados e deploys reproducíveis.
  • Nginx + Passenger: alternativa ao Apache com melhor desempenho em alguns cenários.
  • Puma/Unicorn: servidores de aplicação Ruby que podem ser usados em vez do Passenger; requer configuração de reverse proxy (Nginx/Apache).
  • Sistema Ruby do OS ou rbenv: em vez de RVM, use rbenv ou Ruby distribuído pelo sistema se preferir não instalar gestores de versões em /usr/local/rvm.

Contraexemplo (quando NÃO usar esta configuração):

  • Pequenos ambientes de teste com baixo tráfego e simplicidade desejada: usar SQLite para testes locais é mais rápido.
  • Ambientes com políticas corporativas que proíbem instalação via RVM: prefira pacotes gerenciados pela distribuição ou rbenv.

Migração e atualização

  • Para atualizar Redmine: faça backup do banco e dos diretórios (files, plugins), atualize o código, execute bundle install e RAILS_ENV=production bundle exec rake db:migrate.
  • Teste atualizações em um ambiente de staging idêntico ao de produção antes de aplicar.

Mini metodologia de atualização (playbook):

  1. Fazer backup completo (DB + arquivos) e verificar integridade.
  2. Reproduzir update em staging, executar migrações e testes automatizados.
  3. Agendar janela de manutenção.
  4. Aplicar update em produção e executar migrações.
  5. Validar funcionalidades críticas e monitorar logs por 30–60 minutos.
  6. Se falha grave: executar rollback (restaurar DB e arquivos a partir do backup) e reverter código.

Rollback / runbook rápido:

  • Parar httpd: sudo systemctl stop httpd
  • Restaurar banco: psql -U postgres -d redminedb -f backup.sql (ajuste conforme arquivo)
  • Restaurar diretório public/files e plugins
  • Reiniciar httpd

Cheat sheet / comandos rápidos

  • Reiniciar Apache: sudo systemctl restart httpd
  • Ver logs Apache: tail -f /var/log/httpd/error_log
  • Ver logs Redmine: tail -f /var/www/redmine/log/production.log
  • Executar migração: RAILS_ENV=production bundle exec rake db:migrate
  • Gerar token: bundle exec rake generate_secret_token

Comparação curta: Apache+Passenger vs Nginx+Passenger vs Docker

  • Apache+Passenger: integração direta, boa para administradores confortáveis com httpd.
  • Nginx+Passenger: melhor desempenho em alguns workloads estáticos e proxy; recomendado em infra orientada a Nginx.
  • Docker: maior isolamento e portabilidade; requer pipelines CI/CD e orquestração para produção.

Glossário (1 linha)

  • Passenger: módulo servidor de aplicação para Ruby/Rails que integra com Apache/Nginx.
  • RVM: gerenciador de versões do Ruby (Ruby Version Manager).
  • Bundle: gerenciador de dependências Ruby (Bundler).
  • db:migrate: comando Rails para aplicar migrações de banco de dados.

Galeria de edge-cases

  • Erros relacionados a encoding do banco: confirme ENCODING=’UTF8’ no database.yml.
  • Incompatibilidade de versões de gemas: use a versão de Ruby exigida pelo Redmine e faça bundle update com cautela.
  • SELinux bloqueando escrita em public/system: ajuste contexts com semanage fcontext e restorecon.

Boas práticas de operação

  • Automatize backups e testes de restauração (restore drills) mensalmente.
  • Monitore logs e métricas: tempo de resposta, uso de memória, filas de e-mail.
  • Aplique atualizações de segurança no SO e no Ruby/Gems regularmente.

Conclusão

Parabéns — você instalou o Redmine 4.2.3 com Ruby 2.7 e PostgreSQL, integrado ao Apache via Passenger no Rocky Linux. Próximos passos recomendados: configurar SMTP (para notificações), instalar plugins necessários em ambiente de teste, e criar um pipeline de backup e atualizações controladas.

Resumo das ações imediatas pós-instalação:

  • Configurar SMTP
  • Habilitar HTTPS com certificados válidos
  • Agendar backups e testes de restauração
  • Migrar plugins e customizações via staging

Extras:

  • Se preferir containerização, avalie uma imagem Docker oficial ou personalizada.
  • Para alto tráfego, considere escalabilidade horizontal e balanceadores de carga.
Autor
Edição

Materiais semelhantes

Instalar e usar Podman no Debian 11
Containers

Instalar e usar Podman no Debian 11

Apt‑pinning no Debian: guia prático
Administração de sistemas

Apt‑pinning no Debian: guia prático

Injete FSR 4 com OptiScaler em qualquer jogo
Tecnologia

Injete FSR 4 com OptiScaler em qualquer jogo

DansGuardian e Squid com NTLM no Debian Etch
Infraestrutura

DansGuardian e Squid com NTLM no Debian Etch

Corrigir erro de instalação no Android
Android

Corrigir erro de instalação no Android

KNetAttach: Pastas de Rede remota no KDE
KDE

KNetAttach: Pastas de Rede remota no KDE