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

Установка 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
Автор
Редакция

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

Родительский контроль в ChatGPT: настройка и советы
Безопасность

Родительский контроль в ChatGPT: настройка и советы

iPhone понижает громкость — причины и решения
Советы

iPhone понижает громкость — причины и решения

Безопасная покупка подписчиков Instagram Malaysia
SMM

Безопасная покупка подписчиков Instagram Malaysia

Импорт Google Docs в Google Sheets — подробное руководство
How-to

Импорт Google Docs в Google Sheets — подробное руководство

iPhone: автозаблокировка не работает — как исправить
iOS

iPhone: автозаблокировка не работает — как исправить

Как распознать и защититься от фейковых колл‑центров
Безопасность

Как распознать и защититься от фейковых колл‑центров