Установка Redmine на Debian 12 с Apache и MariaDB
Что вы получите в этом руководстве
В этом документе описаны все шаги, необходимые для развёртывания Redmine 5.x на сервере Debian 12 с использованием Apache2 + Passenger и MariaDB (MySQL-совместимая). После выполнения вы получите рабочую инстанцию Redmine, доступную по HTTPS, с первоначальной учётной записью администратора и рекомендациями по дальнейшей эксплуатации.
Кратко о Redmine
Redmine — это бесплатный инструмент управления проектами и трекинга задач с веб-интерфейсом, написанный на Ruby on Rails. Поддерживает несколько баз данных (MariaDB/MySQL, PostgreSQL, SQLite), плагины, роли доступа и встроенную вики.
Важно: в руководстве показано развертывание на Debian 12 и использование MariaDB и Apache2. Альтернативы (NGINX, PostgreSQL) описаны в разделе «Альтернативные варианты».
Содержание
- Требования и подготовка
- Установка зависимостей
- Проверка и запуск служб
- Настройка MariaDB: безопасность и создание БД
- Загрузка и установка Redmine (Subversion + Bundler)
- Конфигурация Apache2 и получение SSL через Certbot
- Первоначальный вход, смена пароля и проверка версии
- Безопасность, резервное копирование и мониторинг
- Отладка и распространённые ошибки
- Роли и чеклист для эксплуатации
- Критерии приёмки
- Сводка
Требования и подготовка
Перед началом убедитесь, что у вас есть:
- Сервер с Debian 12 (x86_64) с доступом по SSH.
- Ненулевой (не root) пользователь с правами sudo.
- Доменное имя, указывающее на IP сервера (необязательно для теста на локальной сети, обязательно для HTTPS).
- Резервные копии критичных данных перед изменением конфигураций.
Совет: регулярно делайте снимки виртуальной машины или используйте систему резервного копирования файлов и БД.
Установка зависимостей
Обновите индекс пакетов:
sudo apt updateУстановите необходимые пакеты. В этом примере устанавливаются Apache2 с Passenger (через libapache2-mod-passenger), MariaDB, Ruby 3.1 (поставляется из репозиториев Debian 12), Certbot для Let’s Encrypt, ImageMagick и Subversion:
sudo apt install apache2 libapache2-mod-passenger mariadb-server certbot python3-certbot-apache ruby ruby-dev build-essential default-mysql-server default-libmysqlclient-dev libxml2-dev libxslt1-dev zlib1g-dev imagemagick libmagickwand-dev subversionПодтвердите установку, нажав y.

После установки проверьте версии и статусы служб.
Проверка Apache2 и MariaDB
Проверьте, что Apache2 включён и запущен:
sudo systemctl is-enabled apache2
sudo systemctl status apache2
Проверка MariaDB:
sudo systemctl is-enabled mariadb
sudo systemctl status mariadb
Проверьте Ruby и Subversion:
ruby --version
svn --versionОжидаемый Ruby: 3.1.x (Debian 12). Если версия Ruby ниже или вы хотите управлять версиями Ruby, рассмотрите установку rbenv или RVM (раздел «Альтернативные варианты»).

Настройка MariaDB: безопасная установка и создание БД
Запустите утилиту безопасности MariaDB и ответьте на вопросы для усиления защиты:
sudo mariadb-secure-installationРекомендуемые ответы (типичный сценарий):
- Switch to unix_socket authentication? — n (если хотите оставить unix_socket, можно выбрать y, но тогда root будет доступен через sudo)
- Change the root password? — y
- Remove anonymous users? — y
- Disallow root login remotely? — y
- Remove test database and access to it? — y
- Reload privilege tables now? — y
Важно: сохраните пароль root MariaDB в защищённом месте.
Войдите в клиент MariaDB и создайте базу данных и пользователя для Redmine. Замените secretPassword на сложный пароль:
sudo mariadb -u root -p
CREATE DATABASE redmine CHARACTER SET utf8mb4;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'secretPassword';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
FLUSH PRIVILEGES;Проверьте права:
SHOW GRANTS FOR 'redmine'@'localhost';
Затем выполните quit чтобы выйти.
Загрузка и установка Redmine
В этом руководстве мы используем исходники Redmine из SVN ветки 5.0-stable и установим зависимости через Bundler.
Установите Bundler:
gem install bundler
Перейдите в директорию /var/www и загрузите Redmine:
cd /var/www
svn co https://svn.redmine.org/redmine/branches/5.0-stable redmine-5.0
Перейдите в каталог и создайте файл конфигурации БД по образцу:
cd /var/www/redmine-5.0
cp config/database.yml.example config/database.ymlОткройте config/database.yml и укажите параметры для production (замените password на ваш пароль):
production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
password: "secretPassword"
# Use "utf8" instead of "utfmb4" for MySQL prior to 5.7.7
encoding: utf8mb4Сохраните файл.
Установите Ruby-зависимости, исключив группы development и test:
bundle config set --local without 'development test'
bundle install
Создайте секретный токен и выполните миграции базы данных:
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Ожидаемый вывод: “Default configuration data loaded”.
Права доступа к файлам
Назначьте владельца и права для папки Redmine (Apache под пользователем www-data):
sudo chown -R www-data:www-data /var/www/redmine-5.0
sudo find /var/www/redmine-5.0 -type d -exec chmod 755 {} +
sudo find /var/www/redmine-5.0 -type f -exec chmod 644 {} +Это важный шаг: неправильные права приводят к ошибкам доступа при запуске.
Конфигурация Apache2: виртуальный хост и Passenger
Создайте виртуальный хост /etc/apache2/sites-available/redmine.conf:
sudo nano /etc/apache2/sites-available/redmine.confВставьте конфигурацию (обновите ServerName на ваш домен):
ServerName redmine.howtoforge.local
RailsEnv production
DocumentRoot /var/www/redmine-5.0/public
ErrorLog ${APACHE_LOG_DIR}/redmine.howtoforge.local.error.log
CustomLog ${APACHE_LOG_DIR}/redmine.howtoforge.local.access.log combined
Allow from all
Require all granted
Включите модуль rewrite и сайт, проверьте конфигурацию и перезапустите Apache:
sudo a2enmod rewrite
sudo a2ensite redmine.conf
sudo apachectl configtest
sudo systemctl restart apache2
Получение SSL сертификата с Certbot
Запустите certbot (замените email и домен):
sudo certbot --apache --agree-tos --no-eff-email --redirect --hsts --staple-ocsp --email [email protected] -d redmine.howtoforge.localCertbot автоматически изменит конфигурацию виртуального хоста для HTTPS и создаст сертификаты в /etc/letsencrypt/live/<ваш_домен>/.
Важно: убедитесь, что DNS вашего домена указывает на сервер, иначе certbot не сможет подтвердить владение доменом.
Доступ к Redmine и первые шаги
Откройте браузер и перейдите по адресу https://ваш_домен. Первоначальные учётные данные администратора:
- Логин: admin
- Пароль: admin
При первом входе система предложит сменить пароль администратора. Обновите контактные данные администратора и настройте SMTP, если хотите отправлять уведомления.

Смените пароль администратора и подтвердите изменения.

Проверьте Информация об установке в разделе Администрирование > Информация, чтобы убедиться в версиях компонентов (Redmine, Ruby, Rails, adapter mysql2, Subversion).

Безопасность, резервное копирование и сопровождение
Рекомендуемые практики эксплуатации:
- Обновления: регулярно обновляйте Debian, Ruby-библиотеки и плагины Redmine.
- Бэкапы БД: делайте ежедневные дампы MariaDB с помощью cron и храните копии вне сервера.
Пример простого резервного копирования MariaDB:
mysqldump -u root -p redmine | gzip > /var/backups/redmine-$(date +%F).sql.gz- Файлы: копируйте папку files и конфигурационные файлы (/var/www/redmine-5.0/config) вместе с дампом БД.
- Права доступа: не запускайте процессы Redmine от root; используйте www-data.
- SSL: certbot автоматически ставит cron для продления сертификатов, проверьте
sudo certbot renew --dry-run. - Мониторинг: включите мониторинг диска, памяти и процессов (systemd unit для Apache, MariaDB).
Настройка почты (SMTP)
Чтобы Redmine отправлял уведомления, создайте файл config/configuration.yml и добавьте секцию email_delivery с параметрами SMTP. Пример для SMTP (Postfix/SMTP-сервиса):
production:
email_delivery:
delivery_method: :smtp
smtp_settings:
address: "smtp.example.com"
port: 587
domain: "example.com"
authentication: :login
user_name: "user@example.com"
password: "smtp_password"
enable_starttls_auto: trueПерезапустите веб-сервер после изменений.
Отладка и распространённые ошибки
Проблема: белая страница или 500 ошибка.
- Проверьте логи Apache: /var/log/apache2/redmine.*.log
- Проверьте логи Redmine: /var/www/redmine-5.0/log/production.log
- Убедитесь, что файлы имеют корректного владельца (www-data).
Проблема: ошибка при миграции БД.
- Проверьте настройки config/database.yml, тестируйте вход в MariaDB под пользователем redmine.
Проблема: certbot не может проверить домен.
- Проверьте DNS A/AAAA записи и наличие открытых портов 80/443.
Проблема: разрешения файлов не позволяют загрузить вложения.
- Убедитесь в правах на каталог files:
chown -R www-data:www-data files
- Убедитесь в правах на каталог files:
Альтернативные варианты и когда они лучше
- NGINX вместо Apache: лучше при высокой нагрузке и при использовании Phusion Passenger + NGINX или Puma.
- PostgreSQL: рекомендован в некоторых корпоративных средах за счёт расширенных возможностей транзакций и репликации.
- Управление Ruby-версиями: rbenv/RVM позволяют свободно переключать версии Ruby, полезно при установке плагинов, требующих других версий.
Роли и чеклист для развёртывания и эксплуатации
Роль: системный администратор
- Подготовить сервер и DNS.
- Установить зависимости и конфигурировать службы.
- Настроить бэкапы и мониторинг.
Роль: администратор Redmine
- Создать проекты и роли пользователей.
- Настроить уведомления и интеграции (LDAP, SMTP).
- Установить необходимые плагины и темы.
Чеклист перед передачей в эксплуатацию:
- Установлен SSL и проверено продление сертификата
- Настроен бэкап БД и файлов
- Права и владельцы каталогов установлены
- SMTP настроен и протестирован
- Созданы учётные записи и права доступа
Критерии приёмки
- Доступ по HTTPS к главной странице Redmine.
- Успешный вход с учётной записью admin после смены пароля.
- Успешное создание задачи и загрузка вложения.
- Наличие рабочих резервных копий: дамп БД и копия каталога files.
- Логи не содержат критических ошибок при выполнении основных операций.
Быстрый справочник команд (Cheat sheet)
- Обновить пакеты:
sudo apt update && sudo apt upgrade - Перезапустить Apache:
sudo systemctl restart apache2 - Просмотреть лог Redmine:
tail -f /var/www/redmine-5.0/log/production.log - Создать дамп БД:
mysqldump -u root -p redmine > redmine.sql - Проверка продления сертификатов:
sudo certbot renew --dry-run
Решение типичных задач и сценариев отказа
Восстановление из бэкапа:
- Восстановите дамп БД:
gunzip < redmine-YYYY-MM-DD.sql.gz | mysql -u root -p redmine - Восстановите содержимое папки files и config.
- Перезапустите Apache.
- Восстановите дамп БД:
Миграция на новый сервер:
- Сделайте дамп БД и скопируйте папку files и конфиги.
- Разверните Redmine на новом сервере (те же версии Ruby/Gems).
- Выполните
bundle installиRAILS_ENV=production bundle exec rake db:migrate.
Mini-методология: как безопасно обновлять Redmine
- На тестовом сервере выполните полную процедуру обновления (код, Gems, миграции).
- Протестируйте функционал, плагины и API.
- Создайте бэкап продакшенБД и файлов перед обновлением.
- На продакшене примените те же шаги и проконтролируйте логи.
Decision flow — какой стек выбрать?
flowchart TD
A[Нужна простота и быстрая настройка?] -->|Да| B[Apache + Passenger]
A -->|Нет: нужна высокая производительность| C[NGINX + Puma]
B --> D[MariaDB 'MySQL-совместимая' — проще в поддержке]
C --> E[PostgreSQL — расширенные возможности]
D --> F[Подходит для небольших и средних инсталляций]
E --> FГлоссарий (1 строка)
- Redmine — веб-приложение для управления проектами и задачами на Ruby on Rails.
- Passenger — модуль для интеграции Ruby-приложений в Apache/Nginx.
- Bundler — менеджер зависимостей Ruby.
- Certbot — инструмент для автоматической выдачи сертификатов Let’s Encrypt.
Безопасность и приватность
- GDPR/LPD: если вы храните личные данные пользователей ЕС/России, документируйте обработку данных и обеспечьте доступ по HTTPS.
- Минимизируйте количество администраторов и используйте сложные пароли.
- Отключите ненужные плагины и регулярно проверяйте уязвимости.
Частые вопросы и рекомендации
- Можно ли использовать SQLite для продакшна? SQLite подходит для тестирования и небольших инстанций, но не рекомендуется для продакшен с многопользовательским доступом.
- Как добавить плагины? Скачайте плагин в папку plugins и выполните
bundle installиRAILS_ENV=production bundle exec rake redmine:plugins:migrate.
Заключение
Вы успешно установили Redmine на Debian 12, настроили MariaDB, установили зависимости Ruby, сконфигурировали Apache и получили SSL-сертификат через Certbot. Дальше рекомендуем настроить автоматические бэкапы, мониторинг и тестовое окружение для обновлений.
Важно: перед установкой дополнительных плагинов и обновлений всегда тестируйте изменения в изолированном окружении.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента