Установка Redmine на CentOS 8 с Nginx

Redmine — бесплатная, открытая и популярная система управления проектами и учёта задач. Поддерживает PostgreSQL и MariaDB, реализована на Ruby on Rails. Поддерживает плагины, несколько проектов, вики, форумы, уведомления по электронной почте и RSS, мультиязычность, ролевую модель доступа и файловый менеджмент.
Это руководство покажет, как правильно установить и настроить Redmine на сервере с CentOS 8 и сделать доступным через Nginx.
Что вам потребуется
- Сервер с CentOS 8 с правами root.
- Настроенный root-пароль или доступ через sudo.
Краткая схема установки
- Установить зависимости (build tools, dev-пакеты).
- Развернуть MariaDB и создать базу/пользователя.
- Установить Ruby, Passenger и зависимости.
- Скачать и сконфигурировать Redmine, выполнить миграции.
- Создать systemd-сервис и настроить Nginx как reverse proxy.
Установка необходимых зависимостей
Перед началом установите набор инструментов сборки и dev-пакеты:
dnf group install "Development Tools"
dnf install zlib-devel curl-devel openssl-devel -yПосле установки пакетов можно переходить к базе данных.
Установка и настройка MariaDB
Redmine может работать с MariaDB — установите сервер и dev-пакет:
dnf install mariadb-server mariadb-devel -yЗапустите и включите сервис MariaDB:
systemctl start mariadb
systemctl enable mariadbВойдите в shell MariaDB:
mysqlСоздайте базу данных и пользователя (замените password на надёжный пароль):
MariaDB [(none)]> CREATE DATABASE redmine CHARACTER SET utf8mb4;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY 'password';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;Важно: используйте utf8mb4, чтобы корректно хранить эмодзи и 4-байтовые символы.
Установка Ruby и Passenger
Включите EPEL-репозиторий и установите Passenger с Ruby:
dnf install epel-release -y
dnf config-manager --enable epel -y
dnf install mod_passenger passenger passenger-devel ruby ruby-devel -yЕсли у вас специфические требования по версии Ruby, рассмотрите управление версиями через rbenv или RVM (альтернативный подход — гибкость версий Ruby для приложений).
Скачивание и установка Redmine
Создайте системного пользователя для Redmine:
useradd -m -U -r -d /opt/redmine redmineПерейдите под этого пользователя и скачайте zip-архив релиза (в примере 4.2.1 — при установке замените на актуальную версию):
su - redmine
wget --no-check-certificate https://www.redmine.org/releases/redmine-4.2.1.zip
unzip redmine-4.2.1.zip
mv redmine-4.2.1 redmine
cd redmineСкопируйте пример конфигурации базы данных и отредактируйте её:
cp config/database.yml.example config/database.yml
nano config/database.ymlВ секции production укажите параметры MariaDB:
production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
password: "password"
encoding: utf8mb4Установите Bundler и зависимости Ruby-гемов:
gem install bundler --no-rdoc --no-ri
bundle install --without development test postgresql sqlite --path vendor/bundleСгенерируйте секретный токен и выполните миграции базы данных:
bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrateПосле этого можно локально запустить сервер для проверки (WEBrick слушает порт 3000):
bundle exec rails server webrick -e productionПример ожидаемого вывода (системный лог содержит версии и порт):
/usr/bin/ruby: warning: shebang line ending with \r may cause problems
=> Booting WEBrick
=> Rails 5.2.5 application starting in production on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
[2021-06-24 00:40:15] INFO WEBrick 1.4.2
[2021-06-24 00:40:15] INFO ruby 2.5.5 (2019-03-15) [x86_64-linux]
[2021-06-24 00:40:15] INFO WEBrick::HTTPServer#start: pid=43076 port=3000Нажмите CTRL+C, чтобы остановить сервер и вернуться к пользователю root:
exitСоздание systemd-сервиса для Redmine
Создайте unit-файл, чтобы systemd мог управлять приложением:
nano /usr/lib/systemd/system/redmine.serviceВставьте (как указано ниже) и сохраните:
[Unit]
Description=Redmine server
After=syslog.target
After=network.target
[Service]
Type=simple
User=redmine
Group=redmine
ExecStart=/bin/ruby /opt/redmine/redmine/bin/rails server webrick -e production
# Give a reasonable amount of time for the server to start up/shut down
TimeoutSec=300
[Install]
WantedBy=multi-user.targetПерезагрузите конфигурацию systemd и включите сервис:
systemctl daemon-reload
systemctl start redmine
systemctl enable redmine
systemctl status redmineВ примере вывода видно, что сервис активен, основной PID и пример использования памяти (~121.6M). После запуска приложение слушает порт 3000 — проверьте это:
ss -antpl | grep 3000Настройка Nginx как обратного прокси
Установите Nginx и создайте конфигурацию виртуального хоста:
dnf install nginx -y
nano /etc/nginx/conf.d/redmine.confПример конфигурации (замените server_name на ваш домен):
upstream backend {
server 127.0.0.1:3000;
}
server {
listen 80;
server_name redmine.example.com;
access_log /var/log/nginx/redmine.example.com-access.log;
error_log /var/log/nginx/redmine.example.com-error.log;
location / {
proxy_pass http://backend/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forward-Proto http;
proxy_set_header X-Nginx-Proxy true;
proxy_redirect off;
}
}Проверьте синтаксис и включите Nginx:
nginx -t
systemctl start nginx
systemctl enable nginx
systemctl status nginxДоступ к веб-интерфейсу Redmine
Перейдите в браузере по адресу http://redmine.example.com (замените на ваш домен). Вы должны увидеть стартовую страницу Redmine:

Нажмите Sign in, появится форма входа:

По умолчанию логин и пароль: admin / admin. После первого входа система попросит сменить пароль:

Обязательно задайте надёжный пароль и сохраните резервную копию конфигурации.
Типовые проблемы и их решение
Важно: перед исправлением ошибок смотрите логи приложения и systemd.
- Проверка логов systemd:
journalctl -u redmine -f- Логи Rails:
tail -n 200 /opt/redmine/redmine/log/production.log- Если миграции не выполняются — проверьте подключение к БД и credentials в config/database.yml.
- Если порт 3000 уже занят — убедитесь, что другие процессы не мешают: ss -antpl | grep 3000.
- SELinux может блокировать доступ — временно проверьте статус: getenforce. ЕслиSELinux в Enforcing, настройте контексты или правила.
- Блокировка в firewall: откройте 80/443 для внешнего доступа, либо пробросьте порты локально:
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reloadБезопасность и эксплуатация
- HTTPS: используйте сертификат от Let’s Encrypt или корпоративный CA; настройте редирект с HTTP на HTTPS в Nginx.
- Доступ к системе: ограничьте SSH доступ, используйте ключи и двухфакторную аутентификацию для админов.
- Резервирование: регулярно делайте дамп базы и копию папки files/ и config/.
Пример резервного копирования базы MariaDB:
mysqldump -u redmine -p redmine > /root/redmine_backup_$(date +%F).sqlТакже резервируйте директорию файлов приложения:
tar czf /root/redmine_files_$(date +%F).tgz /opt/redmine/redmine/files
cp /opt/redmine/redmine/config/database.yml /root/Рекомендации по обновлению и миграции
- Перед обновлением Redmine сделайте полную резервную копию БД и файлов.
- Проверяйте совместимость плагинов с новой версией Redmine и Rails.
- На тестовом сервере выполните миграции и проверку работоспособности, затем переносите изменения в прод.
Контроль и приёмка
Критерии приёмки
- Сервис systemd active (running).
- Redmine отвечает на запросы через Nginx по вашему домену.
- Вход под администратором возможен и смена пароля проходит успешно.
- Выполнены миграции без ошибок и таблицы базы созданы.
- Резервная копия базы создана и тестово восстановлена (рекомендуется).
Чек-листы по ролям
Для системного администратора
- Установлены и обновлены пакеты (dnf).
- Настроен MariaDB и создан пользователь БД.
- Создан systemd unit и включён автозапуск.
- Настроен Nginx и HTTPS.
- Настроено резервное копирование и мониторинг.
Для разработчика/интегратора
- Завершена установка зависимостей Ruby.
- Проверены и установлены необходимые плагины.
- Выполнены миграции в тестовой среде.
- Настроены CI/CD (при наличии).
Для менеджера проекта
- Получены данные для входа администратора.
- Созданы ключевые проекты и роли.
- Отработан процесс создания задач и уведомлений.
Факт-бокс: ключевые параметры
- Порт по умолчанию для WEBrick: 3000.
- Пример использования памяти процесса ruby в примере: ~121.6M (указано в systemd-выводе).
- Стандартный админ-логин в Redmine: admin (пароль admin до смены).
Альтернативные подходы
- Production-окружение: замените WEBrick на Puma или Passenger full-stack для лучшей производительности.
- Для управления версиями Ruby — rbenv/RVM поможет иметь несколько версий Ruby на одном хосте.
- Вместо MariaDB можно использовать PostgreSQL; потребуются корректировки adapter в config/database.yml и пакетов.
Частые тест-кейсы и приёмка
- Откройте главную страницу и убедитесь, что логотип и меню отображаются.
- Авторизуйтесь как admin и смените пароль.
- Создайте проект, задачу и проверьте уведомление на e-mail (при настроенном MTA).
- Проверьте создание и скачивание вложения в задаче.
Резюме
Поздравляем — вы установили Redmine на CentOS 8, настроили MariaDB, Ruby/Passenger, systemd-сервис и Nginx в качестве обратного прокси. Документ включает чек-листы, типовые ошибки и рекомендации по безопасности. Для продакшена рекомендуется настроить HTTPS, мониторинг и регулярные бэкапы.
Если нужно, могу подготовить готовый systemd unit с логированием, пример конфигурации Nginx для HTTPS (Let’s Encrypt) или краткий playbook для Ansible для автоматизации установки.
Похожие материалы
Как устроить идеальную вечеринку для просмотра ТВ
Как распаковать несколько RAR‑файлов сразу
Приватный просмотр в Linux: как и зачем
Windows 11 не видит iPod — способы исправить
PS5: как настроить игровые пресеты