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

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

5 min read Серверы Обновлено 21 Oct 2025
Установка Redmine на CentOS 8 с Nginx
Установка Redmine на CentOS 8 с Nginx

Главная страница установки Redmine с логотипом и примером интерфейса

Redmine — бесплатная, открытая и популярная система управления проектами и учёта задач. Поддерживает PostgreSQL и MariaDB, реализована на Ruby on Rails. Поддерживает плагины, несколько проектов, вики, форумы, уведомления по электронной почте и RSS, мультиязычность, ролевую модель доступа и файловый менеджмент.

Это руководство покажет, как правильно установить и настроить Redmine на сервере с CentOS 8 и сделать доступным через Nginx.

Что вам потребуется

  • Сервер с CentOS 8 с правами root.
  • Настроенный root-пароль или доступ через sudo.

Краткая схема установки

  1. Установить зависимости (build tools, dev-пакеты).
  2. Развернуть MariaDB и создать базу/пользователя.
  3. Установить Ruby, Passenger и зависимости.
  4. Скачать и сконфигурировать Redmine, выполнить миграции.
  5. Создать 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:

Стартовая страница Redmine с навигацией и кнопкой входа

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

Страница входа Redmine с полями логина и пароля

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

Экран смены пароля администратора Redmine

Обязательно задайте надёжный пароль и сохраните резервную копию конфигурации.

Типовые проблемы и их решение

Важно: перед исправлением ошибок смотрите логи приложения и 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 для автоматизации установки.

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

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

Как устроить идеальную вечеринку для просмотра ТВ
Развлечения

Как устроить идеальную вечеринку для просмотра ТВ

Как распаковать несколько RAR‑файлов сразу
Инструменты

Как распаковать несколько RAR‑файлов сразу

Приватный просмотр в Linux: как и зачем
Приватность

Приватный просмотр в Linux: как и зачем

Windows 11 не видит iPod — способы исправить
Руководство

Windows 11 не видит iPod — способы исправить

PS5: как настроить игровые пресеты
Консоли

PS5: как настроить игровые пресеты

Как переключить камеру в Omegle на iPhone и Android
Руководство

Как переключить камеру в Omegle на iPhone и Android