Тариф успешно добавлен в корзину
В корзину
url image

Как установить Redmine на Ubuntu

Redmine — это веб-приложение с открытым исходным кодом (лицензия GPLv2), разработанное на Ruby on Rails. Его используют, чтобы управлять задачами и настраивать рабочие процессы, контролировать сроки, работать с репозиториями и разграничивать права доступа. 

Redmine поддерживает плагины и позволяет гибко настраивать рабочие процессы. Администратор может менять статусы задач, трекеры, роли пользователей, уведомления и интеграции, подстраивая систему под конкретные процессы разработки и управления проектами.

Несмотря на популярность облачных сервисов (Jira, GitLab Issues или YouTrack), Redmine по-прежнему востребован. Приложение используется, когда важно сохранить полный контроль над данными и независимость от внешних SaaS-платформ. Поэтому его часто используют компании с повышенными требованиями к безопасности.

В статье расскажем, как установить Redmine на Ubuntu (инструкцию по развертыванию на CentOS и AlmaLinux можно прочитать здесь). Для работы приложения потребуется:

  • база данных MySQL;
  • интерпретатор Ruby и фреймворк Rails;
  • веб-сервер: Apache или Nginx;
  • сервер приложений Ruby: Passenger или Puma.

Инструкция подойдёт для развёртывания приложения на сервере без предустановленного окружения (с нуля), а также для интеграции в стек LAMP или LEMP.

Команды в статье предполагают выполнение с правами суперпользователя (sudo), часть операций выполняется от имени системного пользователя redmine.

Ручная установка Redmine довольно трудоемкая. Если нет времени разбираться с зависимостями и настройкой окружения — закажите VDS с готовым рецептом. Вы получите рабочую систему, на которой можно разворачивать проекты. 

Требования к серверу

Указанные требования ориентировочные. Точное количество нужных ресурсов зависит от интенсивности использования приложения, количества плагинов, объёма вложений, размера базы данных и настроек СУБД.

Минимальная конфигурация
Подходит для тестов или работы 1–3 пользователей, без плагинов и вложений.

  • CPU: 1 vCPU.
  • RAM: 1 ГБ.
  • Диск: 1–2 ГБ HDD.
  • База данных: SQLite/ MySQL / PostgreSQL.
  • Веб-сервер: Apache + Passenger / Nginx + Puma.

Малый сервер

Подходит для небольшой команды из 5–20 пользователей, умеренного количества задач и вложений.

  • CPU: 2 vCPU.
  • RAM: 2–4 ГБ.
  • Диск: 10–20 ГБ SSD.
  • База данных: MySQL/PostgreSQL.
  • Веб-сервер: Apache + Passenger / Nginx + Puma.

Средний сервер
Подходит для активной эксплуатации команды из 20–70 пользователей. Обеспечит комфортную эксплуатацию с вложениями, плагинами и интеграциями.

  • CPU: 4 vCPU.
  • RAM: 4–8 ГБ.
  • Диск: 50–100 ГБ SSD (желательно NVMe).
  • База данных: PostgreSQL.
  • Веб-сервер: Nginx + Puma.
  • Дополнительно: Redis (желательно для кэша и плагинов).

Установка MySQL

Если у вас установлен LAMP или LEMP, значит, MySQL уже предустановлен. В этом случае можно начать с пункта 3. 

  1. Обновите информацию о пакетах:
sudo apt update
  1. Установите сервер MySQL и включите автозапуск:
sudo apt -y install mysql-server
sudo systemctl enable --now mysql
  1. Запустите базовую первичную настройку MySQL:
sudo mysql_secure_installation

Подробная инструкция по установке MySQL есть в другой нашей статье.

  1. Зайдите в MySQL:
sudo mysql
  1. Выполните команду:
SHOW VARIABLES LIKE '%isolation';

Запомните имя переменной: оно понадобится на этапе подключения БД к redmine:

Переменная MySQL
  1. Создайте базу данных, пользователя, выдайте ему необходимые права и установите пароль. Лучше использовать сложные пароли — длинные комбинации (от 12+ символов), состоящие из набора заглавных и строчных букв, цифр и специальных символов. Этот пароль понадобится нам позже.
CREATE DATABASE redmine CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'StrongPassw0rd!';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Установка Ruby и зависимостей для сборки gem

Подготовка

  1. Установите все необходимое для сборки Ruby, gem’ов (библиотек Ruby) и корректной работы Redmine — компилятор, SSL, БД, сжатие и системные библиотеки:
sudo apt install -y rsync curl git build-essential libssl-dev libreadline-dev zlib1g-dev libyaml-dev libffi-dev libgdbm-dev libncurses5-dev libsqlite3-dev libmysqlclient-dev libyaml-dev
  1. В работе могут потребоваться пакеты, необходимые для поддержки систем контроля версий, обработки изображений, а также сборки Ruby и его расширений, используемых Redmine. Эти  пакеты не обязательны к установке, но желательны.
sudo apt -y install subversion imagemagick pkg-config bison 
  1. Создайте пользователя redmine, под которым будет работать приложение, и переключитесь на него:
sudo useradd -r -m -d /home/redmine -s /bin/bash redmine
sudo -iu redmine
  1. Для установки Ruby будем использовать rbenv — менеджер версий Ruby, который позволяет управлять версиями интерпретатора независимо от системного Ruby. Это обеспечивает совместимость с требуемой версией Redmine и уменьшает риск конфликтов версий Ruby и зависимостей при обновлении системы. Установите rbenv и плагин ruby-build из исходников:
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
cd ~/.rbenv && src/configure && make
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
  1. Добавьте rbenv в PATH и инициализируйте его в shell. Для этого откройте файл:
nano ~/.profile

И добавьте в самый конец:

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

Для применения настроек выйдите и зайдите под пользователем Redmine:

exit
sudo -iu redmine

Установка Ruby

  1. Версию Ruby можно проверить в официальной документации Redmine. Выберите нужную из поддерживаемого диапазона. В данной инструкции установим Redmine — 6.1, Ruby — 3.4.
Выбор версии Ruby

Проверьте доступные для установки версии Ruby:

rbenv install -l
Просмотр версий Ruby
  1. Запустите установку:
rbenv install 3.4.8

Дождитесь окончания установки. Ее продолжительность зависит от производительности сервера:

Установка Ruby
  1. Установите данную версию Ruby глобально для пользователя Redmine:
rbenv global 3.4.8
  1. Установите Bundler — инструмент управления зависимостями для приложений на языке Ruby. Он установит нужные версии gems, необходимых проекту.  
gem install bundler
  1. Выйдите из сессии пользователя Redmine:
exit

Установка Redmine

Установим свежую версию Redmine. Скачать нужную версию вы можете с сайта проекта.

  1. Создайте директорию проекта:
sudo mkdir -p /var/www/redmine/
  1. Скачайте архив и распакуйте его:
cd /tmp
curl -fL -o redmine.tar.gz https://www.redmine.org/releases/redmine-6.1.1.tar.gz
tar xzf redmine.tar.gz
sudo rsync -a redmine-6.1.1/ /var/www/redmine/
sudo rm -rf redmine.tar.gz redmine-6.1.1
  1. Подключите Redmine к базе данных:
cd /var/www/redmine
sudo cp config/database.yml.example config/database.yml

Откройте файл database.yml и измените поля username и password в блоке production. Используйте пароль, который вы указали при создании пользователя MySQL. При необходимости измените имя переменной в блоке variables — оно должно соответствовать параметру, определённому в разделе «Установка MySQL» (transaction_isolation или tx_isolation). 

sudo nano config/database.yml
Конфигурационный файл redmine
  1. Создайте вспомогательные  директории:
sudo mkdir -p tmp tmp/pdf public/assets
  1. Установите пользователя Redmine владельцем файлов:
sudo chown -R redmine:redmine /var/www/redmine
  1. Под пользователем Redmine cкачайте и установите все gem-зависимости проекта (которые прописаны в Gemfile и закреплены в Gemfile.lock):
sudo -iu redmine
cd /var/www/redmine/
bundle config set --local path 'vendor/bundle'
bundle config set --local without 'development test'
bundle install

В выводе появится длинный список зависимых пакетов. Также будет установлен Rails.

В начале вывода может появиться предупреждение [DEPRECATED] об устаревших Windows-платформах (:mingw, :mswin). Оно информирует, что в будущих версиях Bundler эти обозначения удалят. Поэтому предупреждение можно проигнорировать — установка продолжится в штатном режиме. 

Установка gem'ов

После завершения установки могут появиться информационные сообщения (post-install messages) gem’ов. Они не указывают на ошибки и не требуют дополнительных действий.

Завершение установки gem'ов

Инициализация Redmine 

Продолжайте установку под пользователем Redmine.

  1. Сгенерируйте секретный ключ приложения (secret token) для Redmine. С его помощью можно подписывать cookies-сессии, чтобы их нельзя было подделать; защищать данные, которые Rails хранит на стороне клиента; обеспечивать корректную работу авторизации и сессий.
bundle exec rake generate_secret_token
  1. Запустите миграции. В контексте Ruby от Rails — это набор Ruby-скриптов, которые: создают таблицы Redmine в БД; создают индексы; добавляют поля; обновляют структуру БД при обновлениях Redmine.

Команда фактически разворачивает схему базы данных Redmine:

RAILS_ENV=production bundle exec rake db:migrate

В выводе появится длинный список изменений:

Миграции
  1. Добавьте данные по умолчанию в базу данных:
RAILS_ENV=production REDMINE_LANG=ru bundle exec rake redmine:load_default_data
  1. Выйдите из сессии пользователя redmine:
exit

Установка веб-сервера

Рассмотрим два варианта серверного стека: Apache + Passenger и Nginx + Puma

  • Apache и Nginx выполняют роль веб-сервера и обратного прокси, обрабатывающего входящие HTTP-запросы.
  • Passenger и Puma — серверы приложений для Ruby on Rail, которые отвечают за запуск и работу приложения Redmine.

Выберите подходящий в зависимости от требований к нагрузке и сопровождению.

Apache + Passenger

Плюсы:

  • проще интеграция с Ruby on Rails;
  • встроенное управление процессами приложения;
  • стабильная работа без тонкой ручной настройки. 

Минусы:

  • выше потребление RAM/CPU;
  • менее эффективная обработка статических файлов;
  • хуже масштабируемость при росте нагрузки.

Nginx + Puma

Плюсы:

  • более эффективное использование ресурсов (RAM/CPU);
  • высокая производительность при отдаче статики (CSS, JS, изображения, вложения);
  • гибкая настройка параметров запуска Puma (workers и threads);
  • типовая конфигурация для современных Rails-приложений.

Минусы:

  • сложнее первоначальная настройка и тюнинг;
  • требуется отдельное управление процессом Puma (systemd и т.п.);
  • сложнее диагностика при сбоях по сравнению с Passenger.

Apache + Passenger лучше подходит для небольших установок, где важна минимальная настройка, а Nginx + Puma — для production-среды с более высокой нагрузкой, требующей высокой производительности и гибкой настройки.

Установка Apache + Passenger

Если вы используете готовый стек LAMP, Apache у вас уже установлен. В этом случае можно сразу переходить к пункту 2.

  1. Установите Apache:
sudo apt -y install apache2 
  1. Установите Passenger:
sudo apt -y install libapache2-mod-passenger
  1. Включите необходимые модули для запуска Apache.
sudo a2enmod passenger rewrite headers env
  1. Запустите Apache, добавив его в автозагрузку:
sudo systemctl enable --now apache2
  1. Добавьте пользователя Apache (www-data) в группу redmine:
sudo usermod -aG redmine www-data
  1. Настройте виртуальный хост Apache:
sudo nano /etc/apache2/sites-available/redmine.conf

Вставьте (в ServerName укажите свой домен вместо redminetest.fvds.ru):

<VirtualHost *:80>

  ServerName redminetest.fvds.ru

  DocumentRoot /var/www/redmine/public

  PassengerRuby /home/redmine/.rbenv/shims/ruby

  <Directory /var/www/redmine/public>

    Require all granted

    Options -MultiViews

    AllowOverride all

  </Directory>

</VirtualHost>
  1. Включите сайт:
sudo a2dissite 000-default.conf
sudo a2ensite redmine.conf
sudo systemctl restart apache2

Установка Nginx + Puma

Если вы используете стек LEMP, Nginx у вас уже установлен. Поэтому можно начинать с пункта 2.

  1. Под пользователем redmine откройте файл Gemfile
sudo -iu redmine
cd /var/www/redmine/
nano Gemfile
  1. Закомментируйте строку gem 'puma' (обычно она находится в группе :test, ближе к концу файла):
Редактирование Gemfile
  1. Добавьте строку gem 'puma' перед gem 'rails' в начале файла:
Добавление puma
  1. Установите gem с помощью bundle:
bundle install
  1. Создайте конфигурационный файл puma:
nano config/puma.rb

Вставьте:

directory '/var/www/redmine'
environment 'production'

pidfile '/var/www/redmine/tmp/pids/puma.pid'
state_path '/var/www/redmine/tmp/pids/puma.state'

stdout_redirect '/var/www/redmine/log/puma.stdout.log',
                '/var/www/redmine/log/puma.stderr.log',
                true

threads 2, 8
workers 2

bind 'unix:///var/www/redmine/tmp/sockets/puma.sock'
  1. Создайте директории:
mkdir -p /var/www/redmine/tmp/pids
mkdir -p /var/www/redmine/tmp/sockets
  1. Вернитесь к основному пользователю:
exit
  1. Создайте unit-файл сервиса в systemd для puma:
nano /etc/systemd/system/redmine-puma.service

Вставьте:

[Unit]
Description=Redmine Puma Server
After=network.target

[Service]
Type=simple
User=redmine
WorkingDirectory=/var/www/redmine
Environment=RAILS_ENV=production
ExecStart=/home/redmine/.rbenv/shims/bundle exec puma -C config/puma.rb
Restart=always

[Install]
WantedBy=multi-user.target
  1. Включите сервис и проверьте его работу:
sudo systemctl daemon-reload
sudo systemctl restart redmine-puma
sudo systemctl status redmine-puma
Проверка работы puma
  1. Установите nginx:
sudo apt install -y nginx
  1. Настройте виртуальный хост Nginx:
sudo mkdir -p /etc/nginx/sites-available
sudo nano /etc/nginx/sites-available/redmine.conf

Вставьте (в ServerName укажите свой домен вместо redminetest.fvds.ru):

upstream redmine {
    server unix:/var/www/redmine/tmp/sockets/puma.sock fail_timeout=0;
}

server {
    listen 80;
    server_name redminetest.fvds.ru;

    root /var/www/redmine/public;

    client_max_body_size 20m;

    location / {
        try_files $uri @redmine;
    }

    location @redmine {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://redmine;
    }

    location ~ ^/(assets|images|javascripts|stylesheets|plugin_assets)/ {
        expires max;
        gzip_static on;
    }
}
  1. Активируйте конфигурацию сайта:
sudo mkdir -p /etc/nginx/sites-enabled
sudo ln -s /etc/nginx/sites-available/redmine.conf /etc/nginx/sites-enabled/redmine.conf
sudo rm -f /etc/nginx/sites-enabled/default
  1. Откройте файл /etc/nginx/nginx.conf и убедитесь, что в блоке http {} присутствует строка:
include /etc/nginx/sites-enabled/*;

Если она отсутствует, добавьте указанную строку и сохраните файл.

  1. Перезагрузите службу Nginx:
sudo systemctl restart nginx

Проверка и первый вход

Откройте ваш сайт (Redmine) в браузере. В нашем случае это http://redminetest.fvds.ru

Запуск Redmine

Учетные данные:

login: admin
password: admin

Рекомендуем сразу сменить пароль.

Диагностика

Если приложение не работает, диагностику нужно проводить последовательно: сначала проверить логи веб-сервера, затем — логи приложений. 

Логи веб-сервера стоит проверить, если:

  • в браузере отображается 502 Bad Gateway / 504 Gateway Timeout;
  • открывается заглушка nginx вместо приложения;
  • возникают ошибки 404 на уровне сервера;
  • есть проблемы с проксированием или сокетом;
  • не загружаются большие файлы (413 Request Entity Too Large).

Apache (Passenger) error log:

/var/log/apache2/error.log

nginx error log:

/var/log/nginx/error.log

Логи Puma записываются в системный журнал:

journalctl -u redmine-puma

Их необходимо смотреть, если:

  • сервис постоянно перезапускается;
  • Nginx выдаёт 502;
  • сокет puma.sock исчезает или недоступен;
  • приложение не поднимается после старта.

Лог приложения Redmine:

/var/www/redmine/log/production.log 

Этот лог стоит проверить, если:

  • страница открывается, но возникает ошибка 500;
  • есть ошибки внутри интерфейса Redmine;
  • проблемы с плагинами;
  • ошибки подключения к базе данных;
  • сбои миграций, rake-задач или фоновых операций.

Логи MySQL(MariaDB):

/var/log/mysql/error.log
/var/log/mysql/mariadb.log

Их необходимо анализировать, если:

  • возникают ошибки подключения к базе данных;
  • появляются ошибки миграций и rake-задач;
  • в production.log присутствуют Mysql2::Error или ActiveRecord::StatementInvalid;
  • наблюдаются блокировки или проблемы с транзакциями.
Ошибка

Какие ошибки часто встречаются в логах веб-сервера:

  1. Изначально Ruby уже активировал default gem base64 -v 0.1.1 и bundler не может переключить его на новую версию. В этом случае поможет установка нужной версии этого gem’а в системный Ruby.
App 8196 output: Error: The application encountered the following error: You have already activated base64 0.1.1, but your Gemfile requires base64 0.3.0. Since base64 is a default gem, you can either remove your dependency on it or try updating to a newer version of bundler that supports base64 as a default gem. (Gem::LoadError)

Ruby работает под пользователем Redmine, поэтому нужно зайти под него и установить необходимые версии gem’ов

sudo -iu redmine
gem install base64 -v 0.3.0
  1. Ошибка сообщает, что для работы приложения требуется более свежая версия Ruby. В большинстве случаев проблема заключается в том, что сервер приложений использует системную версию Ruby, а не ту, которую мы установили через rbenv. 
App 19342 output: Error: The application encountered the following error: Your Ruby version is 3.0.2, but your Gemfile specified >= 3.2.0, < 3.5.0 (Bundler::RubyVersionMismatch)

В таком случае нужно проверить верный ли путь к интерпретатору Ruby указан в конфигурационном файле Apache — /home/redmine/.rbenv/shims/ruby. Либо путь к bundle в unit-файле сервиса Puma — /home/redmine/.rbenv/shims/bundle.

Этот материал был полезен?

Скидка новым клиентам
Закажите сервер сегодня и получите скидку на первый месяц аренды!
Наш сайт использует cookies Вы можете отключить их в настройках браузера, но это может ограничить функционал. Оставаясь на сайте, вы соглашаетесь с использованием cookies.