Установка 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.
Предварительные требования
- ОС: 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.
- Добавьте репозиторий EPEL:
sudo dnf install epel-release -y
- Установите требуемые пакеты для сборки и работы 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
- Установите пакеты для интеграции с Apache/httpd:
sudo dnf install libcurl-devel httpd-devel httpd apr-devel apr-util-devel -y
- Запустите и включите httpd:
sudo systemctl enable --now httpd
sudo systemctl status httpd
Примечание: если планируете использовать SELinux в режиме Enforcing, учтите дополнительные правила (см. раздел безопасность).
Установка RVM и Ruby
Redmine 4.2.3 требует Ruby 2.7. В этом руководстве Ruby устанавливается через RVM (Ruby Version Manager).
- Импорт GPG ключей разработчиков RVM:
curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -
- Установка RVM и загрузка окружения:
curl -L get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh
- Перезагрузите источник RVM и установите системные требования:
rvm reload
rvm requirements run
- Установите Ruby 2.7 через RVM:
rvm install 2.7
После установки проверьте версии:
rvm list
ruby --version
Если установлено несколько версий Ruby, укажите используемую версию по умолчанию:
rvm use 2.7 --default
Настройка PostgreSQL для Redmine
Перед началом убедитесь, что PostgreSQL установлен и запущен. Если нет — установите и настройте его согласно официальной инструкции для Rocky Linux.
- Войдите в psql под пользователем postgres:
sudo -u postgres psql
- Создайте роль и базу данных для Redmine (замените пароль на надёжный):
CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'StrongPasswordRedmine' NOINHERIT VALID UNTIL 'infinity';
CREATE DATABASE redminedb WITH ENCODING='UTF8' OWNER=redmine;
Затем выйдите:
\q
Подсказка: для продакшна используйте отдельный сервер БД с бэкапами и репликацией.
Установка и конфигурация Redmine
В примере разворачивается Redmine 4.2.3 в /var/www/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
- Настройте соединение с базой данных: создайте файл 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
Сохраните файл.
- Установите Bundler и зависимости gem:
gem install bundler
bundle config set --local path 'vendor/bundle'
bundle config set --local without 'development test'
bundle install
- Сгенерируйте секретный токен и проведите миграции:
bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate
- Установите владельца каталога Redmine на пользователя Apache (или www-data в других дистрибутивах):
sudo chown -R apache:apache $REDMINE
После этого Redmine готов на уровне файловой структуры — переходим к установке Passenger.
Установка и конфигурация Phusion Passenger
Passenger — рекомендуемый аппли-кейшн сервер для Rails в связке с Apache или Nginx.
- Установите passenger как Ruby gem:
gem install passenger
- Установите Apache модуль для Passenger:
passenger-install-apache2-module
Во время установки выберите “Ruby” как тип приложения и следуйте подсказкам.
Инсталлятор покажет фрагмент конфигурации, который нужно добавить в /etc/httpd/conf.d/passenger.conf.
- Создайте конфиг 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
Если инсталлятор Passenger не нашёл модуль — проверьте пути RVM и версию Ruby, затем повторите установку.
Конфигурация виртуального хоста Apache для Redmine
- Создайте файл /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
- Проверьте конфигурацию Apache и перезапустите:
apachectl configtest
sudo systemctl restart httpd
Примечание: если используете 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
- Войдите под аккаунтом по умолчанию:
- Логин: admin
- Пароль: admin
- Сразу смените пароль администратора:
- Проверьте информацию об установке и языковые настройки, загрузите конфигурацию по умолчанию и создайте пользователей.
Если вы видите стандартную панель и можете зайти под 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) в момент проверки.
Тестовые сценарии
- Вход в систему
- Ожидаемый результат: успешный вход, перенаправление на главную.
- Создание проекта и задачи
- Ожидаемый результат: проект и задача создаются, отображаются в UI, записываются в БД.
- Отправка уведомления по электронной почте (при необходимости)
- Ожидаемый результат: тестовый email доставлен, в логах отправка отмечена.
- Загрузка вложения
- Ожидаемый результат: файл загружается в /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 для установки плагинов.
Похожие материалы

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

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

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

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

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