Установка Redmine на Rocky Linux 8
Что такое Redmine
Redmine — это бесплатное и открытое ПО для управления проектами и трекинга задач, написанное на фреймворке Ruby on Rails. Поддерживает интеграцию с системами контроля версий, имеет браузер репозитория, просмотр различий (diff), вики, форумы, учёт времени и ролевой доступ. Совместимо с разными ОС и СУБД, локализовано на 49 языков.
Краткое определение: Redmine — веб‑приложение для совместной работы над проектами и задачами с гибкой конфигурацией прав доступа.
TL;DR (короткий список шагов)
- Обновите систему и отключите SELinux при необходимости.
- Откройте порты в firewalld (80/443/3000 для теста).
- Установите Apache, MySQL, Ruby 2.7 и зависимости.
- Скачайте Redmine, настройте database.yml и выполните bundle install и миграции.
- Установите Phusion Passenger и подключите его к Apache.
- Выпустите SSL-сертификат через Certbot и настройте Nginx как reverse‑proxy с HTTPS.
Основные требования
- Сервер с Rocky Linux 8.
- Пользователь без sudo с root‑привилегиями (или привилегии через sudo).
- SELinux отключён (или настроен корректно для веб‑сервера).
- Система обновлена.
Пример обновления:
$ sudo dnf update
Шаг 1 — Настройка брандмауэра
Rocky Linux использует firewalld. Проверьте состояние:
$ sudo firewall-cmd --state
running
Откройте порт 3000 (удобно для тестового запуска Rails):
$ sudo firewall-cmd --permanent --add-port=3000
Разрешите HTTP и HTTPS:
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
Примените изменения:
$ sudo firewall-cmd --reload
Шаг 2 — Установка Apache
Мы будем использовать Apache для запуска в связке с Passenger.
$ sudo dnf install httpd
Включите и запустите службу Apache:
$ sudo systemctl enable --now httpd.service
Добавьте текущего пользователя в группу apache, чтобы обеспечить доступ к каталогу /var/www/redmine (при необходимости):
$ sudo usermod -aG $USER apache
Примечание: после этой команды возможно потребуется выход и повторный вход в систему, чтобы членство в группе вступило в силу.
Шаг 3 — Установка и настройка MySQL
В качестве СУБД используем MySQL (в AppStream доступна актуальная версия).
$ sudo dnf install mysql-server
Включите и запустите MySQL:
$ sudo systemctl enable mysqld --now
Запустите безопасную настройку:
$ sudo mysql_secure_installation
При настройке вам предложат включить Validate Password Plugin. Рекомендуется выбрать Y, затем уровень 2 (STRONG) — это потребует пароль минимум из 8 символов, с заглавными, строчными, цифрами и спецсимволами.
Пример диалога (сокращённо):
Press y|Y for Yes, any other key for No: Y
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Please set the password for root here.
New password:
Re-enter new password:
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
... Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
... Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
... Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
... Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
All done!
Войдите в MySQL:
$ mysql -u root -p
Создайте пользователя и базу для Redmine (замените пароли на надёжные):
mysql> CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'Your_password2';
mysql> CREATE DATABASE redmine CHARACTER SET utf8mb4;
mysql> GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
mysql> exit
Совет: используйте парольный менеджер и храните креды в защищённом виде.
Шаг 4 — Установка репозитория EPEL
Некоторые пакеты требуются из EPEL:
$ sudo dnf install epel-release
Включите PowerTools (требуется для сборки некоторых пакетов):
$ sudo dnf config-manager --set-enabled powertools
Шаг 5 — Установка Ruby и зависимостей
Rocky Linux 8 предлагает несколько потоков Ruby. Redmine совместим с версиями 2.5–2.7; в этой инструкции используем Ruby 2.7.
Просмотрите доступные модули:
$ dnf module list ruby
Сбросьте выбранные потоки и включите 2.7:
$ sudo dnf module reset ruby
$ sudo dnf module enable ruby:2.7
Установите Ruby и dev‑пакеты:
$ sudo dnf install ruby ruby-devel
Проверьте версию:
$ ruby -v
ruby 2.7.4p191 (2021-07-07 revision a21a3b7d23) [x86_64-linux]
Установите остальные зависимости, требуемые для сборки гемов и работы Redmine:
$ sudo dnf install rpm-build wget libxml2-devel make automake libtool ImageMagick ImageMagick-devel mariadb-devel httpd-devel openssl-devel libcurl-devel gcc gcc-c++
Шаг 6 — Установка Redmine
Перейдите на страницу загрузок Redmine и определите последнюю стабильную версию. В примере использована 4.2.3. Скачайте архив:
$ wget https://redmine.org/releases/redmine-4.2.3.tar.gz
Распакуйте и переместите в каталог для веб‑приложений:
$ tar xfz redmine-4.2.3.tar.gz
$ sudo mv redmine-4.2.3 /var/www/redmine
Перейдите в каталог приложения:
$ cd /var/www/redmine
Создайте конфигурационные файлы на основе примеров:
$ cp config/configuration.yml.example config/configuration.yml
$ cp config/database.yml.example config/database.yml
$ cp public/dispatch.fcgi.example public/dispatch.fcgi
Откройте config/database.yml и укажите параметры подключения к MySQL (пример):
production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
password: "Your_password2"
# Use "utf8" instead of "utfmb4" for MySQL prior to 5.7.7
encoding: utf8mb4
Сохраните файл (в nano: Ctrl+X, затем Y).
Установите Bundler для управления гемами:
$ gem install bundler
Отключите группы development и test при установке зависимостей:
$ bundle config set --local without 'development test'
$ bundle install
Если возникают ошибки из‑за версий гемов, попробуйте восстановить гемы:
$ sudo gem pristine --all
Сгенерируйте секретный ключ для сессий:
$ bundle exec rake generate_secret_token
Выполните миграции базы данных:
$ RAILS_ENV=production bundle exec rake db:migrate
Загрузите стандартные данные (пример на английском):
$ RAILS_ENV=production REDMINE_LANG=en bundle exec rake redmine:load_default_data
Создайте нужные каталоги и установите права (запускайте из /var/www/redmine):
$ mkdir -p tmp/pdf
$ mkdir -p public/plugin_assets
$ chown -R $USER:$USER files log tmp public/plugin_assets
$ chmod -R 755 /var/www/redmine/
Запустите временно локальный сервер WEBrick, чтобы проверить работу:
$ bundle exec rails server webrick -e production
=> Booting WEBrick
=> Rails 5.2.6 application starting in production on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
[2022-01-03 12:58:19] INFO WEBrick 1.6.1
[2022-01-03 12:58:19] INFO ruby 2.7.4 (2021-07-07) [x86_64-linux]
[2022-01-03 12:58:19] INFO WEBrick::HTTPServer#start: pid=117224 port=3000
Откройте http://

Введите учётные данные по умолчанию admin / admin; система предложит сменить пароль.

После смены пароля вы попадёте в «Мой аккаунт».

Если всё работает, остановите временный сервер Ctrl+C.
Шаг 7 — Установка Phusion Passenger для Apache
Passenger — это приложение‑сервер для Ruby, которое интегрируется с Apache.
$ gem install passenger
Установите модуль Passenger для Apache:
$ passenger-install-apache2-module
Установщик проведет вас через процесс. Если увидите предупреждение о разрешениях, откройте новый сеанс и скорректируйте права каталога пользователя (при необходимости).
Если во время компиляции вы получите ошибку с cc1plus (Killed), вероятно, не хватает оперативной памяти — добавьте swap или увеличьте RAM.
После успешной установки установщик предложит строки для добавления в конфигурацию Apache. Пример, который нужно вставить в /etc/httpd/conf.modules.d/00-passenger.conf:
LoadModule passenger_module /home/username/.gem/ruby/gems/passenger-6.0.12/buildout/apache2/mod_passenger.so
PassengerRoot /home/username/.gem/ruby/gems/passenger-6.0.12
PassengerDefaultRuby /usr/bin/ruby
Создайте файл конфигурации для сайта Redmine: /etc/httpd/conf.d/redmine.conf
Listen 3000
PassengerRoot /home/username/.gem/ruby/gems/passenger-6.0.12
PassengerDefaultRuby /usr/bin/ruby
ServerName redmine.example.com
DocumentRoot "/var/www/redmine/public"
CustomLog logs/redmine_access.log combined
ErrorLog logs/redmine_error_log
LogLevel warn
Options Indexes ExecCGI FollowSymLinks
Require all granted
AllowOverride all
Обновите ServerName в /etc/httpd/conf/httpd.conf, если требуется:
ServerName localhost
Проверьте синтаксис Apache:
$ httpd -t
Syntax OK
Затем перезапустите Apache:
$ sudo systemctl restart httpd
Сайт будет доступен по http://redmine.example.com:3000, однако это небезопасно (HTTP + порт). Далее настроим SSL и Nginx.
Шаг 8 — Установка SSL (Let’s Encrypt)
Установите certbot для автоматического получения сертификатов:
$ sudo dnf install certbot
Остановите Apache на время получения сертификата (certbot в режиме standalone захватывает порт 80):
$ sudo systemctl stop httpd
Получите сертификат (замените email и домен):
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d redmine.example.com
Сертификат появится в /etc/letsencrypt/live/redmine.example.com.
Запустите Apache снова:
$ sudo systemctl start httpd
Сгенерируйте Diffie‑Hellman параметры (2048 бит):
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Создайте веб‑корень для ACME challenge автообновления:
$ sudo mkdir -p /var/lib/letsencrypt
Добавьте ежедневный cron‑job для обновления сертификатов: создайте /etc/cron.daily/certbot-renew с содержимым:
#!/bin/sh
certbot renew --cert-name redmine.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl restart nginx"
Сделайте файл исполняемым:
$ sudo chmod +x /etc/cron.daily/certbot-renew
Важно: тестируйте команду renew вручную перед автоматизацией.
Шаг 9 — Установка и настройка Nginx как обратного прокси
Выберите поток Nginx 1.20 и установите его:
$ sudo dnf module reset nginx
$ sudo dnf module enable nginx:1.20
$ sudo dnf install nginx --disablerepo=epel-modular
Проверьте версию:
$ nginx -v
nginx version: nginx/1.20.0
Чтобы избежать конфликта портов, измените Apache на порт 8080. Откройте /etc/httpd/conf/httpd.conf и замените Listen 80 на:
Listen 8080
Перезапустите Apache:
$ sudo systemctl restart httpd
Создайте конфигурацию Nginx /etc/nginx/conf.d/redmine.conf:
# Redirect all non-encrypted to encrypted
server {
listen 80;
server_name redmine.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name redmine.example.com;
ssl_certificate /etc/letsencrypt/live/redmine.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/redmine.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/redmine.example.com/chain.pem;
ssl_session_timeout 5m;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
resolver 8.8.8.8;
access_log /var/log/nginx/redmine.example.com.access.log main;
error_log /var/log/nginx/redmine.example.com.error.log;
location / {
proxy_pass http://localhost:3000;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
В /etc/nginx/nginx.conf добавьте перед include строку:
server_names_hash_bucket_size 64;
Проверьте синтаксис и запустите Nginx:
$ sudo nginx -t
$ sudo systemctl start nginx
Теперь Redmine должен быть доступен по https://redmine.example.com.
Критерии приёмки
- Веб‑интерфейс доступен по HTTPS на домене redmine.example.com.
- Вход в систему возможен с учётной записью admin, пароль изменён.
- Миграции базы прошли без ошибок, таблицы созданы.
- Автоматическое обновление сертификата certbot отрабатывает без ошибок.
- Логи Apache и Nginx не содержат критических ошибок при старте.
Чек‑лист по ролям
Администратор сервера:
- Обновил систему и установил требуемые пакеты.
- Настроил брандмауэр и SELinux.
- Установил и настроил Apache, Passenger и Nginx.
Администратор БД:
- Создал базу redmine и пользователя с безопасным паролем.
- Проверил кодировку utf8mb4.
Разработчик/DevOps:
- Выполнил bundle install и миграции в production.
- Протестировал работу приложения через локальный сервер и через Nginx.
Оператор безопасности:
- Установил SSL и проверил параметры шифрования.
- Настроил ротацию логов и мониторинг.
Резервное восстановление и откат
- Резервная копия базы: используйте mysqldump
$ mysqldump -u root -p redmine > redmine_backup.sql
- Восстановление:
$ mysql -u root -p redmine < redmine_backup.sql
- Файловая резервная копия: архивируйте каталоги files, public/plugin_assets, log и config.
$ tar czf redmine_files_$(date +%F).tgz files public/plugin_assets log config
Откат обновлений:
- Снимите бэкап перед обновлением Redmine или гемов.
- При проблемах — восстановите базу и файлы из бэкапа, откатите изменения в Git (если используете).
Устранение неполадок (быстрые рекомендации)
- Ошибка компиляции native‑гемов: установите соответствующие -devel пакеты и gcc.
- Ошибка нехватки памяти при сборке Passenger: добавьте swap или увеличьте RAM.
- Проблемы с кодировкой: убедитесь, что база создана с CHARACTER SET utf8mb4.
- 502/504 через Nginx: проверьте, слушает ли backend на localhost:3000 и что Apache/Passenger запущены.
- Проблемы с HTTPS: проверьте права на файлы сертификата и наличие chain.pem.
Практические советы и безопасная конфигурация
- Используйте strong TLS настройки (TLSv1.2/1.3), отключите старые шифры.
- Ограничьте доступ по IP для админских интерфейсов при возможности.
- Настройте мониторинг доступности (uptime) и логирования ошибок (Sentry/ELK).
- Планируйте резервное копирование базы и файлов ежедневно.
Мини‑методология внедрения (быстрый SOP)
- Подготовка сервера: обновление, создание пользователя, отключение SELinux (или настройка правил).
- Установка базовых пакетов (httpd, mysql, ruby, gcc, deps).
- Создание БД и пользователя, проверка соединения.
- Скачивание и конфигурация Redmine, bundle install, миграции.
- Установка Passenger и проверка работы через Apache на тестовом порту.
- Выпуск SSL и настройка Nginx как reverse‑proxy.
- Тестирование, безопасность, бэкап и документирование.
Таблица совместимости (ключевые версии)
- Rocky Linux 8 — целевая ОС.
- Ruby — рекомендуемая ветка 2.7 для Redmine 4.x.
- MySQL — 5.7+ или MariaDB совместимые версии; используйте utf8mb4.
- Passenger — совместим с Apache (версия модуля зависит от установленного gem).
- Nginx 1.20 — стабильный выбор для обратного прокси.
Глоссарий (1‑строчные определения)
- Passenger: приложение‑сервер для развёртывания Ruby‑приложений под Apache/Nginx.
- Bundler: менеджер зависимостей (gems) для Ruby.
- WEBrick: встроенный Ruby HTTP‑сервер, удобен для тестов.
- Certbot: клиент для автоматизированного получения сертификатов Let’s Encrypt.
Тесты и критерии приёмки
- Пройти авторизацию под admin и создать новый проект.
- Создать и закрыть задачу, проверить запись в журнале.
- Загрузить файл в «Файлы проекта» и убедиться в доступности.
- Выполнить резервное восстановление из дампа базы и убедиться в целостности.
Безопасность и GDPR (коротко)
- Храните персональные данные в соответствии с локальным законодательством.
- Ограничьте доступ к конфиг‑файлам и сертификатам (чтение только root и сервисные аккаунты).
- Для публичных инстансов включите двухфакторную аутентификацию (плагины Redmine).
Короткое объявление (100–200 слов)
Redmine установлен и настроен на сервере Rocky Linux 8. Мы использовали Apache + Passenger для запуска приложения и Nginx как обратный прокси с TLS‑шифрованием от Let’s Encrypt. База данных — MySQL (utf8mb4). Проведены миграции, загружены дефолтные данные и выполнены базовые тесты: вход в систему, создание проекта и задач. Настроены автоматическое обновление SSL посредством certbot и ежедневный cron для продления сертификата. Рекомендовано настроить мониторинг, регулярные бэкапы и ротацию логов. Если необходима помощь с миграцией существующих данных или кластеризацией, опишите сценарий — подготовим план миграции.
Социальный превью (OG suggestion)
OG-заголовок: Установка Redmine на Rocky Linux 8 — полное руководство OG-описание: Пошаговая инструкция по установке Redmine с Apache+Passenger и Nginx+HTTPS на Rocky Linux 8. Проверенные команды, чек‑листы и рекомендации по безопасности.
Заключение
Эта инструкция покрывает полный цикл установки Redmine на Rocky Linux 8: от подготовки сервера и базы данных до безопасного развёртывания с HTTPS. Следуйте чек‑листу и выполните резервное копирование перед обновлениями. При возникновении ошибок ознакомьтесь с разделом «Устранение неполадок» и прикрепляйте логи при обращении за помощью.
Важно: адаптируйте доменные имена, пароли и пути к файлам под вашу инфраструктуру.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента