Установка Redmine 5.1.2 на Debian 12
Описание
Redmine - это гибкое веб-приложение для управления проектами.
Оно написано с использованием фреймворка Ruby on Rails и является кросс-платформенным и совместимым с базами данных.
Redmine имеет открытый исходный код и выпускается на условиях GNU General Public License версии 2 (GPL).
Установка
В данной установке используется образ Debian 12 netinstall.
Подготовка ОС для установки
Перед установкой необходимо обновить пакеты:
apt -y update
apt -y upgrade
Настройка локали:
dpkg-reconfigure locales
Создание пользователя:
useradd -r -m -d /opt/redmine -s /usr/bin/bash redmine
Добавление пользователя Redmine в группу www-data:
usermod -aG www-data redmine
Установка дополнительных пакетов по необходимости:
apt -y install sudo ruby ruby-dev wget mc htop chrony postgresql-contrib libpq-dev libmysqld-dev apt-transport-https ca-certificates gnupg2
Установка Apache2, MariaDB и других дополнительных пакетов:
apt -y install apache2 apache2-dev libapache2-mod-passenger mariadb-server mariadb-client build-essential libxslt1-dev libmariadb-dev libxml2-dev zlib1g-dev imagemagick libmagickwand-dev curl
MariaDB (MySQL)
Необходимо создать базу данных в MySQL для Redmine.
Для подключения к MySQL используем следующую команду:
mysql
После подключения создаем базу данных и пользователя:
CREATE DATABASE redmine CHARACTER SET utf8mb4;
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY 'password';
После создания применяем изменения и выходим из MySQL:
FLUSH PRIVILEGES;
EXIT;
Меняем уровень транзакций:
SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
Проверяем изменения:
select @@session.tx_isolation;
Redmine
Заходим под пользователем redmine:
su - redmine
Загружаем и распаковываем Redmine:
wget https://www.redmine.org/releases/redmine-5.1.2.tar.gz
tar -xvzf redmine-5.1.2.tar.gz -C /opt/redmine/ --strip-components=1
cd /opt/redmine/
Копируем дефолтный файл конфигурации в текущую конфигурацию:
cp config/database.yml.example config/database.yml
Редактируем файл текущей конфигурации:
nano config/database.yml
Приводим к виду:
production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
password: "Ваш_пароль_к_базе_данных"
# Use "utf8" instead of "utfmb4" for MySQL prior to 5.7.7
encoding: utf8mb4
variables:
# Recommended `transaction_isolation` for MySQL to avoid concurrency issues is
# `READ-COMMITTED`.
# In case of MySQL lower than 8, the variable name is `tx_isolation`.
# See https://www.redmine.org/projects/redmine/wiki/MySQL_configuration
transaction_isolation: "READ-COMMITTED"
Начиная с версии 5.1.1 redmine использует в коннекторе transaction_isolation: "READ-COMMITTED", в установленной нами MariaDB используется старое значение, поэтому необходимо заменить transaction_isolation на tx_isolation.
Меняем
transaction_isolation: "READ-COMMITTED"
на
tx_isolation: "READ-COMMITTED"
Выйти из под пользователя redmine обратно в root:
exit
cd /opt/redmine/
Установка рекомендуемых gems:
gem install bundler
gem install rails -v 6.1.7.7
gem install mysql2
gem install rake
Заходим под пользователем Redmine:
su - redmine
cd /opt/redmine/
Установка
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
Выходим из под пользователя redmine
exit
Создаем несколько необходимых файлов и каталогов с помощью следующей команды:
for i in tmp tmp/pdf public/plugin_assets; do [ -d $i ] || mkdir -p $i; done
Устанавливаем права доступа и владельца для каталога /opt/redmine:
chown -R redmine:redmine files log tmp public/plugin_assets
chmod -R 755 /opt/redmine
Apache2
Настройка apache2 для redmine.
Необходимо создать файл виртуальной конфигурации Apache2 для Redmine и записать конфигурацию.
Создаем файл:
nano /etc/apache2/sites-available/redmine.conf
Добавляем строки:
<VirtualHost *:80>
ServerName redmine.example.com
RailsEnv production
DocumentRoot /opt/redmine/public
<Directory "/opt/redmine/public">
Allow from all
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/redmine_error.log
CustomLog ${APACHE_LOG_DIR}/redmine_access.log combined
</VirtualHost>
Сохраните и закройте файл конфигурации.
Подключаем файл виртуального хоста Redmine:
a2ensite redmine
Перезапускаем службу apache2:
systemctl restart apache2
UFW
Устанавливаем фаервол ufw:
apt -y install ufw
Включаем политики входящих и исходящих соединений по умолчанию:
ufw default deny incoming
ufw default allow outgoing
Открываем необходимые нам порты:
ufw allow ssh
ufw allow http
ufw allow https
Добавляем ufw в автозагрузку:
systemctl enable ufw
systemctl restart ufw
Включаем ufw:
ufw enable
Перечитываем правила:
ufw reload
Проверяем статус и открытые порты:
ufw status