Установка Redmine 5.1.2 на Debian 12 + PostgreSQL + MariaDB (MySQL)
Описание
Redmine - это гибкое веб-приложение для управления проектами.
Оно написано с использованием фреймворка Ruby on Rails и является кросс-платформенным и совместимым с базами данных.
Redmine имеет открытый исходный код и выпускается на условиях GNU General Public License версии 2 (GPL).
В данной статье описаны варианты развёртывания Redmine с базами данных PostgreSQL и MariaDB (MySQL).
Установка
В данной установке используется образ Debian 12 netinstall.
Подготовка ОС для установки
Перед установкой необходимо обновить пакеты:
apt -y update
apt -y upgrade
Настройка локали:
dpkg-reconfigure locales
Добавление пользователя root в группу www-data:
usermod -aG www-data root
Установка дополнительных пакетов:
apt -y install sudo wget mc htop chrony apt-transport-https ca-certificates gnupg2 curl
PostgreSQL
Раздел только для установки Redmine c базой данных PostgreSQL!
Установка Ruby, Apache2, PostgreSQL и других дополнительных пакетов:
apt -y install ruby ruby-dev apache2 apache2-dev libapache2-mod-passenger build-essential libxslt1-dev libxml2-dev zlib1g-dev imagemagick libmagickwand-dev postgresql postgresql-contrib libpq-dev libmariadb-dev
Для работы коннектора требуется установка gem "mysql2", даже если Вы будете использовать PostgreSQL.
Поэтому требуется установка библиотеки libmariadb-dev.
Заходим под пользователем postgres:
su - postgres
Подключаемся к серверу PostgreSQL:
psql
Задаем пароль для пользователя postgres:
ALTER USER postgres WITH PASSWORD 'Ваш_пароль';
Создаем базу данных с именем redmine и владельцем postgres:
CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=postgres;
Закрываем соединение с Postgres:
\q
Выходим из под пользователя postgres:
exit
MariaDB (MySQL)
Раздел только для установки Redmine c базой данных MySQL!
Установка Ruby, Apache2, MySQL и других дополнительных пакетов:
apt -y install ruby ruby-dev apache2 apache2-dev libapache2-mod-passenger build-essential libxslt1-dev mariadb-server libmariadb-dev-compat libmariadb-dev libmysqld-dev libxml2-dev zlib1g-dev imagemagick libmagickwand-dev
Начиная с версии 5.1.1+ redmine использует в коннекторе transaction_isolation: "READ-COMMITTED".
Поэтому необходимо внести изменение в конфигурацию сервера.
Открываем файл конфигурации сервера MariaDB:
nano /etc/mysql/mariadb.conf.d/50-server.cnf
Находим раздел [mariadb] и под ним добавляем строку:
[mariadb]
transaction-isolation = READ-COMMITTED
Сохраняем файл конфигурации и перезапускаем сервер:
systemctl restart mysqld
Для подключения к MySQL используем следующую команду:
mysql
Проверяем уровень изоляции транзакций:
select @@session.tx_isolation;
Результат вывода команды должен быть таким:
+------------------------+
| @@session.tx_isolation |
+------------------------+
| READ-COMMITTED |
+------------------------+
Создаем базу данных и пользователя:
CREATE DATABASE redmine CHARACTER SET utf8mb4;
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY 'Ваш_пароль_пользователя_redmine_в_БД';
После создания применяем изменения и выходим из MySQL:
FLUSH PRIVILEGES;
EXIT;
Redmine
Загружаем и распаковываем Redmine:
mkdir /opt/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
Для работы с PostgreSQL приводим раздел конфигурации production к виду:
production:
adapter: postgresql
database: redmine
host: localhost
username: postgres
password: "Ваш_пароль_пользователя_postgres_в_БД"
Для работы с MySQL приводим раздел конфигурации production к виду:
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
tx_isolation: "READ-COMMITTED"
Начиная с версии 5.1.1 redmine использует в коннекторе transaction_isolation: "READ-COMMITTED", в установленной нами MariaDB используется старое значение, поэтому необходимо заменить transaction_isolation на tx_isolation.
Меняем
transaction_isolation: "READ-COMMITTED"
на
tx_isolation: "READ-COMMITTED"
Продолжение установки для всех:
Установка bundler:
gem install bundler
Установка gems необходимых для Redmine:
bundle config set --local without 'development test'
bundle install
Вариант установки bundler и gems с указанием каталога, пример:
gem install bundle --install-dir /opt/redmine/gems/ --lock
bundle config set --local path '/opt/redmine/gems/'
bundle install
Генерируем секретный токен:
bundle exec rake generate_secret_token
Создаем структуру базы данных:
RAILS_ENV=production bundle exec rake db:migrate
Загружаем данные конфигурации по умолчанию:
RAILS_ENV=production REDMINE_LANG=ru bundle exec rake redmine:load_default_data
Создаем несколько необходимых файлов и каталогов с помощью следующей команды:
for i in tmp tmp/pdf public/plugin_assets; do [ -d $i ] || mkdir -p $i; done
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
SSL-сертификаты
Настройка Apache для работы Redmine по протоколу HTTPS, если требуется.
Включаем mod ssl для apache:
a2enmod ssl
Загружаем и складываем сертификаты в каталог /etc/ssl/
Открываем файл виртуальной конфигурации Apache для Redmine:
nano /etc/apache2/sites-available/redmine.conf
Добавляем блок для работы с SSL, ниже под текущей конфигурацией. В блоке указаны пути расположения SSL-сертификатов.
<VirtualHost *:443>
DocumentRoot /opt/redmine/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certificate.crt
SSLCertificateKeyFile /etc/ssl/key.key
#SSLCertificateChainFile /etc/ssl/chain.crt
<Directory "/opt/redmine/public">
Allow from all
Require all granted
</Directory>
</VirtualHost>
Переадресация с HTTP на HTTPS
Если необходимо настроить автоматическую переадресацию с HTTP на HTTPS, включаем mod rewrite на apache:
a2enmod rewrite
Открываем файл виртуальной конфигурации Apache для Redmine:
nano /etc/apache2/sites-available/redmine.conf
Внутри блока <VirtualHost *:80> добавляем следующие строки:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
В результате блок выглядит примерно так:
<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
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
Перезапускаем сервис apache2 для применения изменений:
systemctl restart apache2
SMTP
Настройка SMTP для возможности отправки писем Redmine'ом.
cd /opt/redmine/
cp config/configuration.yml.example config/configuration.yml
nano config/configuration.yml
Пример блока настройки SMTP с SSL:
# default configuration options for all environments
default:
# Outgoing emails configuration
# See the examples below and the Rails guide for more configuration options:
# http://guides.rubyonrails.org/action_mailer_basics.html#action-mailer-configuration
email_delivery:
delivery_method: :smtp
smtp_settings:
address: "smtp.yandex.ru"
port: 465
ssl: true
domain: "smtp.yandex.ru"
authentication: :login
user_name: "example@yandex.ru"
password: "Ваш_пароль_или_пароль_приложения"
Открываем Redmine и переходим Администрирование - Настройки - Уведомления по email.
В поле Исходящий email адрес указываем адрес из конфигурационной файла user_name: "example@yandex.ru" и жмём кнопку Сохранить.
После настройки можно отправить тестовый email.
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
Возможные проблемы
Не открываются некоторые страницы настроек в администрировании:
cd /opt/redmine/
chmod -R 755 files log tmp public/plugin_assets && chown -R www-data:www-data files/ log/ tmp/ public/plugin_assets
Если не помогло, попробуйте изменить права на любые другие например на 777, а потом вернуть 755.
cd /opt/redmine/
chmod -R 777 files log tmp public/plugin_assets && chown -R www-data:www-data files/ log/ tmp/ public/plugin_assets
chmod -R 755 files log tmp public/plugin_assets && chown -R www-data:www-data files/ log/ tmp/ public/plugin_assets
No Comments