Проект

Общее

Профиль

Установка Redmine

По стопам моего опыта установки Redmine на Ubuntu 24.04.
Добавил(а) Михаил Губин 4 месяца назад

В этой статье мы рассмотрим процесс установки Redmine на сервер под управлением Ubuntu. Redmine — это свободная система управления проектами, которая написана на Ruby on Rails. Она позволяет отслеживать задачи, управлять временем, вести базу знаний и многое другое.

Шаг 1: Создание директории для Redmine

Сначала создадим директорию для Redmine:

mkdir /opt/redmine

Шаг 2: Переход в директорию Redmine

Перейдем в созданную директорию:

cd /opt/redmine

Шаг 3: Загрузка файла Redmine

Теперь загрузим последнюю версию Redmine:

wget https://www.redmine.org/releases/redmine-5.1.3.zip

Шаг 4: Распаковка файла

Распакуем загруженный файл:

unzip redmine-5.1.3.zip

Переместим все файлы из папки Redmine в нашу:

mv redmine-5.1.3/* /opt/redmine

Шаг 5: Установка зависимостей

Установим необходимые зависимости:

apt-get install mysql-server mysql-common ruby rails -y

Шаг 6: Создание базы данных для Redmine

Войдем в командную строку MySQL:

mysql -uroot -p

Создадим базу данных для Redmine:

CREATE DATABASE redmine CHARACTER SET utf8mb4;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'my_password';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';

Нажмем CTRL+D чтобы выйти из MySQL или пишем quit.

Шаг 7: Настройка конфигурации базы данных

Redmine, использующий MySQL 5.6, 5.7, 8.0 и 8.1 в качестве бэкенда базы данных, имеет известные проблемы в случае одновременных модификаций вложенной структуры задачи, то есть при параллельной модификации различных идентификаторов родительских задач. Более подробную информацию можно найти в задаче № 39437 и всех связанных с ней задачах.

Redmine версии 5.1.1 и выше содержит важные исправления для смягчения этой проблемы (r22458, r22459 и r22460), но эти исправления также требуют изменения уровня изоляции транзакций на READ COMMITTED для правильной работы. По умолчанию уровень изоляции транзакций в MySQL является REPEATABLE READ согласно официальной документации. Для версий MySQL 5.7.20 и старше используется параметр tx_isolation вместо transaction_isolation.

Изменим уровень изоляции транзакций в файле конфигурации MySQL на сервере:

transaction_isolation="READ-COMMITTED"

Путь к файлу с этой настройкой зависит от операционной системы, например, в Ubuntu это /etc/mysql/conf.d/mysql.cnf.

Изменение этого параметра требует перезагрузки сервера. Если вы не хотите перезагружать сервер, этот параметр также может быть применен во время выполнения, запустив следующий запрос: SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;, но важно также внести изменения в файл конфигурации, чтобы сохранить настройку после перезапуска.

Все крупные облачные провайдеры позволяют изменять этот параметр со страницы администрирования облака.

Как и любое другое изменение, внесенное в производственную систему, настоятельно рекомендуется протестировать это изменение перед тем, как сделать его в производстве.

В случае более сложной настройки с репликой, это изменение может также изменить формат двоичного журнала вашего сервера, поскольку только строковый двоичный журнал поддерживается на уровне изоляции READ COMMITTED.

Настроим конфигурацию базы данных:

cp config/database.yml.example config/database.yml

Открываем файл config/database.yml и добавляем следующие строки:

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: "my_password"
  variables:
    transaction_isolation: "READ-COMMITTED"

Шаг 8: Установка дополнительных пакетов

Откроем файл Gemfile:

nano Gemfile

Приводим к такому виду верх файла, до строки # Ruby Standard Gems:

source 'https://rubygems.org'

ruby '>= 2.7.0', '< 3.3.0'

gem 'rails', '6.1.7.8'
gem 'rouge', '~> 4.2.0'
gem 'request_store', '~> 1.5.0'
gem 'mini_mime', '~> 1.1.0'
gem "actionpack-xml_parser"
gem 'roadie-rails', '~> 3.1.0'
gem 'marcel'
gem 'mail', '~> 2.8.1'
gem 'nokogiri', '~> 1.15.2'
gem 'i18n', '~> 1.14.1'
gem 'rbpdf', '~> 1.21.3'
gem 'addressable'
gem 'rubyzip', '~> 2.3.0'
gem 'webrick', '~> 1.7'

Без webrick мы не сможем запустить сервер Redmine.

Шаг 9: Настройка конфигурации Redmine

Настроим конфигурацию Redmine:

cp config/configuration.yml.example config/configuration.yml

Открываем файл config/configuration.yml и добавляем следующие строки:

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: "my_password"
  variables:
    transaction_isolation: "READ-COMMITTED"

Шаг 10: Установка Bundler

Установим Bundler:

gem install bundler

Шаг 11: Установка пакетов

Установим пакеты:

bundle config set --local without 'development test rmagick'
bundle install

Шаг 12: Генерация секретного токена

Сгенерируем секретный токен:

bundle exec rake generate_secret_token

Шаг 13: Обновление базы данных

Обновим базу данных:

RAILS_ENV=production bundle exec rake db:migrate

Шаг 14: Загрузка начальных данных

Загрузим начальные данные:

RAILS_ENV=production REDMINE_LANG=ru bundle exec rake redmine:load_default_data

Шаг 15: Создание директорий для временных файлов

Создадим директории для временных файлов:

mkdir -p tmp tmp/pdf public/plugin_assets

Шаг 16: Изменение прав доступа к директориям

Изменим права доступа к директориям:

sudo chown -R redmine:redmine files log tmp public/plugin_assets
sudo chmod -R 755 files log tmp public/plugin_assets

Шаг 17: Изменение прав доступа к файлам

Изменим права доступа к файлам:

find files log tmp public/plugin_assets -type f -exec chmod -x {} +

Шаг 18: Запуск сервера

Запустим сервер:

bundle exec rails server -e production

Чтобы остановить сервер, нажмите Ctrl+C.

Шаг 19: Настройка сервиса Systemd

Настроим сервис Systemd:

nano /etc/systemd/system/rails.service

Добавим следующие строки в файл rails.service:

[Unit]
Description=Rails Server Service
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/journal
ExecStart=/usr/bin/bundle exec /usr/bin/rails server -e production
Restart=always

[Install]
WantedBy=multi-user.target

Сохраните изменения и закройте редактор.

Шаг 20: Активация и запуск сервиса

Активируем и запустим сервис:

systemctl enable rails
systemctl start rails

Теперь вы можете зайти в Redmine по адресу http://ваш-ип:3000, используя логин admin и пароль admin.

Подсказка: порт можно глянуть по команде systemctl status rails или journalctl -xeu rails.


Комментарии