Гид по технологиям

Установка Redmine 4.2.3 на Rocky Linux с PostgreSQL и Apache

8 min read Инфраструктура Обновлено 22 Oct 2025
Установка Redmine 4.2.3 на Rocky Linux с PostgreSQL и Apache
Установка Redmine 4.2.3 на Rocky Linux с PostgreSQL и Apache

О чем эта статья

Эта подробная инструкция предназначена для системных администраторов и инженеров DevOps, которые разворачивают Redmine в продакшн-среде на Rocky Linux. Вы получите пошаговые команды, проверочные списки, рекомендации по безопасности, отладке и поддержке, а также чеклисты по ролям.

Важно: в примерах использованы значения (IP, домен, пароли). Замените их на реальные для вашей среды.

Основные цели установки

  • Установка Ruby 2.7 через RVM
  • Настройка PostgreSQL и создание базы для Redmine
  • Установка Phusion Passenger и интеграция с Apache/httpd
  • Разворачивание Redmine 4.2.3 в /var/www/redmine
  • Настройка виртуального хоста для HTTP и HTTPS

Краткое описание Redmine

Redmine — это бесплатный open-source инструмент управления проектами и отслеживания задач, написанный на Ruby on Rails. Поддерживает несколько проектов, вики, форумы, уведомления по e‑mail, интеграцию с SCM (Git, SVN и др.), а также аутентификацию LDAP.

Логотип Redmine и интерфейс установки

Предварительные требования

  • ОС: Rocky Linux 8.4 (Green Obsidian)
  • IP: 192.168.1.10 (пример)
  • root или sudo права
  • домен: redmine.example.com (пример)
  • заранее установлен PostgreSQL (см. ссылки и инструкции по установке PostgreSQL на Rocky Linux)

Совет: поддерживайте систему обновлённой и используйте отдельный инстанс или контейнер для Redmine в продакшне.

Содержание (навигация)

  • Установка зависимостей
  • Установка RVM и Ruby
  • Настройка PostgreSQL для Redmine
  • Установка и конфигурация Redmine
  • Установка Passenger и модуль Apache
  • Конфигурация виртуального хоста (HTTP/HTTPS)
  • Проверка установки
  • Постустановочные задачи и рекомендации по безопасности
  • Отладка и распространённые проблемы
  • Чеклисты по ролям, критерии приёмки, тесты
  • Краткое резюме

Установка зависимостей

Все команды выполняйте с правами root или через sudo.

  1. Добавьте репозиторий EPEL:
sudo dnf install epel-release -y
  1. Установите требуемые пакеты для сборки и работы Ruby/Passenger/Redmine:
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. Установите пакеты для интеграции с Apache/httpd:
sudo dnf install libcurl-devel httpd-devel httpd apr-devel apr-util-devel -y
  1. Запустите и включите httpd:
sudo systemctl enable --now httpd
sudo systemctl status httpd

Запуск и включение httpd

Примечание: если планируете использовать SELinux в режиме Enforcing, учтите дополнительные правила (см. раздел безопасность).

Установка RVM и Ruby

Redmine 4.2.3 требует Ruby 2.7. В этом руководстве Ruby устанавливается через RVM (Ruby Version Manager).

  1. Импорт GPG ключей разработчиков RVM:
curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -
  1. Установка RVM и загрузка окружения:
curl -L get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh

Установка RVM и загрузка окружения

  1. Перезагрузите источник RVM и установите системные требования:
rvm reload
rvm requirements run

Проверка зависимостей RVM

  1. Установите Ruby 2.7 через RVM:
rvm install 2.7

После установки проверьте версии:

rvm list
ruby --version

Проверка установки Ruby

Если установлено несколько версий Ruby, укажите используемую версию по умолчанию:

rvm use 2.7 --default

Настройка PostgreSQL для Redmine

Перед началом убедитесь, что PostgreSQL установлен и запущен. Если нет — установите и настройте его согласно официальной инструкции для Rocky Linux.

  1. Войдите в psql под пользователем postgres:
sudo -u postgres psql
  1. Создайте роль и базу данных для Redmine (замените пароль на надёжный):
CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'StrongPasswordRedmine' NOINHERIT VALID UNTIL 'infinity';
CREATE DATABASE redminedb WITH ENCODING='UTF8' OWNER=redmine;

Затем выйдите:

\q

Создание базы данных PostgreSQL для Redmine

Подсказка: для продакшна используйте отдельный сервер БД с бэкапами и репликацией.

Установка и конфигурация Redmine

В примере разворачивается Redmine 4.2.3 в /var/www/redmine.

  1. Скачайте и распакуйте исходники:
cd /var/www/
wget https://www.redmine.org/releases/redmine-4.2.3.tar.gz

tar -xzvf redmine-4.2.3.tar.gz
mv redmine-*/ redmine
  1. Настройте соединение с базой данных: создайте файл config/database.yml
export REDMINE=/var/www/redmine
cd $REDMINE
nano config/database.yml

Вставьте (замените имя БД, логин и пароль):

production:
  adapter: postgresql
  database: redminedb
  host: localhost
  username: redmine
  password: "StrongPasswordRedmine"
  encoding: utf8

Сохраните файл.

  1. Установите Bundler и зависимости gem:
gem install bundler
bundle config set --local path 'vendor/bundle'
bundle config set --local without 'development test'
bundle install

Конфигурация зависимостей Redmine

  1. Сгенерируйте секретный токен и проведите миграции:
bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate

Генерация секрета и миграция базы

  1. Установите владельца каталога Redmine на пользователя Apache (или www-data в других дистрибутивах):
sudo chown -R apache:apache $REDMINE

После этого Redmine готов на уровне файловой структуры — переходим к установке Passenger.

Установка и конфигурация Phusion Passenger

Passenger — рекомендуемый аппли-кейшн сервер для Rails в связке с Apache или Nginx.

  1. Установите passenger как Ruby gem:
gem install passenger

Установка Phusion Passenger

  1. Установите Apache модуль для Passenger:
passenger-install-apache2-module

Во время установки выберите “Ruby” как тип приложения и следуйте подсказкам.

Установка модуля Passenger для Apache

Инсталлятор покажет фрагмент конфигурации, который нужно добавить в /etc/httpd/conf.d/passenger.conf.

  1. Создайте конфиг Passenger:
nano /etc/httpd/conf.d/passenger.conf

Пример, который может показать инсталлятор (путь зависит от версии Ruby и RVM):

   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
   

Сохраните и перезапустите httpd:

sudo systemctl restart httpd

Настройка Apache для Passenger

Если инсталлятор Passenger не нашёл модуль — проверьте пути RVM и версию Ruby, затем повторите установку.

Конфигурация виртуального хоста Apache для Redmine

  1. Создайте файл /etc/httpd/conf.d/redmine.conf:
nano /etc/httpd/conf.d/redmine.conf

Пример HTTP-конфига:

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
    

Пример HTTPS-конфига (с Let’s Encrypt):

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
  

  1. Проверьте конфигурацию Apache и перезапустите:
apachectl configtest
sudo systemctl restart httpd

Настройка виртуального хоста Apache для Redmine

Примечание: если используете SELinux, потребуется выставить контексты для каталогов и разрешить подключение к сети для httpd. Например:

semanage fcontext -a -t httpd_sys_content_t "/var/www/redmine(/.*)?"
restorecon -Rv /var/www/redmine
setsebool -P httpd_can_network_connect on

Проверка установки

Откройте в браузере:

https://redmine.example.io/login

  1. Войдите под аккаунтом по умолчанию:
  • Логин: admin
  • Пароль: admin

Страница входа Redmine admin

  1. Сразу смените пароль администратора:

Смена пароля администратора

  1. Проверьте информацию об установке и языковые настройки, загрузите конфигурацию по умолчанию и создайте пользователей.

Данные аккаунта администратора

Панель администратора Redmine

Список пользователей Redmine

Информация об установке Redmine

Если вы видите стандартную панель и можете зайти под admin, установка прошла успешно.

Постустановочные задачи и рекомендации по безопасности

  • Смените пароль администратора сразу после входа.
  • Настройте SMTP для отправки почты (админ → Настройки → Электронная почта).
  • Подключите HTTPS через Let’s Encrypt или операторский сертификат.
  • Настройте политику резервного копирования базы данных и каталога files, а также config (database.yml, secrets).
  • Ограничьте доступ к панели администратора по IP (если возможно) или включите двухфакторную аутентификацию через плагины.
  • Обновляйте Redmine и gems регулярно, тестируя на стейджинге прежде чем в продакшн.

Пример резервной копии БД PostgreSQL:

sudo -u postgres pg_dump -Fc redminedb > /var/backups/redmine_redminedb_$(date +%F).dump

Пример бэкапа файлов Redmine:

tar -czf /var/backups/redmine_files_$(date +%F).tar.gz /var/www/redmine/files

Плагины, миграции и обновления

  • Для установки плагина клонируйте репозиторий в каталог plugins и запустите:
cd /var/www/redmine
git clone  plugins/
bundle install
RAILS_ENV=production bundle exec rake redmine:plugins:migrate
  • Тестируйте плагины в копии окружения.
  • Перед обновлением Redmine прочитайте release notes и выполните резервное копирование.

Отладка и распространённые проблемы

  • Ошибка 500 на странице: проверьте логи Apache (/var/log/httpd/*), логи Redmine (log/production.log) и права на файлы.
  • Passenger не загружается: проверьте соответствие путей PassengerRoot и PassengerDefaultRuby с установленной версией RVM.
  • Ошибки bundle install: проверьте установленные системные dev-пакеты (openssl-devel, libffi-devel и т. п.).
  • Проблемы с загрузкой файлов: проверьте права на /var/www/redmine/files и SELinux-контексты.

Если логи не дают подсказки, попробуйте запустить Redmine через встроенный сервер Puma/WEBrick в тестовой среде:

RAILS_ENV=production bundle exec rails server -b 0.0.0.0

Это поможет понять, связана ли проблема с Apache/Passenger.

Роль‑ориентированные чеклисты

Чеклист для системного администратора

  • Установлены системные зависимости
  • Настроен пользователь и права для /var/www/redmine
  • Установлен и настроен PostgreSQL
  • Настроены SELinux/Firewall правила
  • Настроены бэкапы БД и файлов

Чеклист для DevOps инженера

  • Установлен RVM и Ruby, проверены версии
  • Установлен и протестирован Passenger + Apache
  • Настроено CI/CD обновлений для плагинов и Redmine

Чеклист для администратора Redmine (аппликация)

  • Сменён пароль admin
  • Настроен SMTP
  • Загружена локализация и настройки по умолчанию
  • Добавлены пользователи и роли

Критерии приёмки

  • Система отвечает по HTTPS на домене и страница /login загружается.
  • Вход admin/admin успешен, пароль сменён.
  • Создана тестовая задача, отображается в списке.
  • Выполнены резервные копии базы и файлов.
  • Логи не содержат критических ошибок (500/503) в момент проверки.

Тестовые сценарии

  1. Вход в систему
  • Ожидаемый результат: успешный вход, перенаправление на главную.
  1. Создание проекта и задачи
  • Ожидаемый результат: проект и задача создаются, отображаются в UI, записываются в БД.
  1. Отправка уведомления по электронной почте (при необходимости)
  • Ожидаемый результат: тестовый email доставлен, в логах отправка отмечена.
  1. Загрузка вложения
  • Ожидаемый результат: файл загружается в /var/www/redmine/files и доступен через UI.

Методика принятия решения при выборе среды размещения

  • Небольшая команда (<10 человек): можно использовать один сервер с базой и приложением.
  • Средняя/большая организация: выделить отдельный сервер для PostgreSQL, настроить бэкап и репликацию.
  • Требования к высокой доступности: рассмотреть кластеризацию БД, балансировщик и несколько приложений Passenger/Nginx.

Ментальные модели и подсказки

  • Разделяйте слои: приложение (Redmine), БД (PostgreSQL), веб-сервер (Apache/Passenger). Это упрощает масштабирование.
  • Плагины — «третья сторона», которые могут ломать апгрейды. Тестируйте в staging.
  • Регулярные бэкапы и возможность отката — критичны для продакшна.

Риски и смягчения

  • Риск: несовместимость плагина после обновления Redmine. Митигирование: тестирование на отдельном стенде.

  • Риск: утечка паролей или конфигов. Митигирование: храните конфигурации вне VCS, используйте секреты и шифрование.

  • Риск: потеря данных при обновлении. Митигирование: обязательный бэкап БД и файлов перед миграцией.

Краткий список команд-«шпаргалка» (cheat sheet)

  • Установка зависимостей: см. раздел Установка зависимостей.
  • Скачивание Redmine и подготовка каталога:
cd /var/www
wget https://www.redmine.org/releases/redmine-4.2.3.tar.gz
tar -xzvf redmine-4.2.3.tar.gz
mv redmine-*/ redmine
  • Установка gems и миграции:
gem install bundler
bundle install
bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate
  • Перезапуск Apache:
sudo systemctl restart httpd
  • Резервная копия БД PostgreSQL:
sudo -u postgres pg_dump -Fc redminedb > /var/backups/redmine_redminedb_$(date +%F).dump

Глоссарий (1 строка)

  • RVM: Ruby Version Manager, менеджер версий Ruby.
  • Passenger: приложение‑сервер для Ruby/Rails, интегрируется с Apache/Nginx.
  • Bundler: менеджер зависимостей Ruby gems.
  • Rails: фреймворк Ruby on Rails, на котором построен Redmine.

Советы по миграции и обновлению

  • Перед обновлением сделайте бэкап БД и каталога files.
  • Отключите пользователей (maintenance page) на период миграции.
  • Выполните миграции в тестовой среде, затем в проде.
  • Проверьте совместимость плагинов с версией Redmine.

Краткое резюме

Redmine успешно установлен и доступен через веб-интерфейс. Вы настроили Ruby через RVM, создали PostgreSQL базу, установили зависимости, Passenger и виртуальный хост Apache. В завершение — смените административный пароль, настройте резервное копирование и SMTP, протестируйте плагины и обновления в staging.

Important: обязательно проверяйте логи (/var/log/httpd и /var/www/redmine/log) при отладке и после внесения изменений.

Notes: для больших инсталляций рассмотрите использование Nginx + Passenger, горизонтальное масштабирование и HA‑решения для БД.


Краткие советы по развитию: добавляйте мониторинг (Nagios/Prometheus), регламентируйте обновления gems и Redmine, и внедрите процесс CI для установки плагинов.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Исправить «Требуется проверка» при загрузке приложений
Руководства

Исправить «Требуется проверка» при загрузке приложений

Как перевести страницу в Microsoft Edge
браузер

Как перевести страницу в Microsoft Edge

Увеличить органический трафик сайта
SEO

Увеличить органический трафик сайта

Tap-to-Pay в Индии: GPay и Paytm — настройка NFC
Финтех

Tap-to-Pay в Индии: GPay и Paytm — настройка NFC

Как использовать смартфон как веб‑камеру на ПК
Руководство

Как использовать смартфон как веб‑камеру на ПК

Как исправить WhatsApp Web в Chrome
Руководство

Как исправить WhatsApp Web в Chrome