Установка 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 для автоматизации установки.
Похожие материалы
Родительский контроль в ChatGPT: настройка и советы
iPhone понижает громкость — причины и решения
Безопасная покупка подписчиков Instagram Malaysia
Импорт Google Docs в Google Sheets — подробное руководство
iPhone: автозаблокировка не работает — как исправить