Установка Redmine на Ubuntu 16.04 и 18.04

Это первая статья из небольшого цикла статей про установку, обслуживание и обновление Redmine. Читайте с удовольствием и делитесь с окружающими. В конце вставил видео, вдруг кому-то нужно посмотреть.

Возникла намедни небольшая задача: перевести старый redmine на новые рельсы… тьфу, на новый движок и на другую базу данных. Хотя рельсы (Ruby on rails) здесь тоже будут. И для начала давайте определимся с условиями. Так как это первая статья и она про установку, то здесь я опишу только установку redmine.

UPD от 02.04.2019: Установка будет производиться на Ubuntu 16.04 и на Ubuntu 18.04. Версии redmine 3.4 и 4.0. Основных отличий в установке нет, но для старых версий ПО отличия выделены жирным.

Ставить буду на Ubuntu 16.04 LTS, потому что эта система на первом месте по используемости в серверах, и Ubuntu 18.04 LTS. База данных, которая будет использоваться редмайном — Postgresql. Nginx как прокси к passenger, который будет отвечать за обработку и показ информации. Имя пользователя пусть будет administrator.

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

После установки начнём ставить redmine, пользуясь мануалом с сайта. Читать всё же лучше английскую версию — она информативнее и актуальнее. Хотя и не во всём.

Идём по порядку и скачиваем дистрибутив. Можно скачать из раздела Download, а после распаковать на сервере, но лучше выкачать через, например, SVN и иметь всегда возможность легко и быстро обновиться. Так и сделаем. Но предварительно скачаем и установим все необходимые пакеты. Postgres будет версии 11, инструкция по его установке взята с сайта Losst.

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -
sudo apt update
sudo apt install postgresql postgresql-contrib \
postgresql-server-dev-11 imagemagick ruby build-essential \
patch ruby-dev zlib1g-dev liblzma-dev libmagick++-dev \
passenger libcurl4-openssl-dev libssl-dev \
python-pip python-dev subversion -y

Переходим в домашнюю директорию

cd ~

И теперь скачиваем redmine

Для версии 3.4

svn co https://svn.redmine.org/redmine/branches/3.4-stable redmine-3.4 --non-interactive --trust-server-cert-failures=unknown-ca

Для версии 4.0

svn co https://svn.redmine.org/redmine/branches/4.0-stable redmine-4.0 --non-interactive --trust-server-cert-failures=unknown-ca
ln -s redmine-* redmine

Продолжаем следовать инструкции с официального сайта и создаём базу данных

Для начала логинимся под пользователем postgres, который создался, когда устанавливался postgresql и вводим пароль локального рута

sudo su - postgres

Запускаем psql — утилита управления базами данных.

psql

Создаём пользователя или, точнее, роль, имеющая доступ к базе данных.

CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'very_strong_pass' NOINHERIT VALID UNTIL 'infinity';

Создаём базу с владельцем, созданным выше:

CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;

Выходим

\q
exit

Дальше смотрим мануал на сайте. Нужно создать файл конфигурации подключения к базе данных.

Убеждаемся, что мы в папке, где установлен\выкачан redmine и создаём копию конфигурационного файла.

cd ~/redmine
cp config/database.yml.example config/database.yml

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

nano config/database.yml

Смотрим и заменяем секцию production с такой

production:
adapter: mysql2
database: redmine
host: localhost
username: root
password: ""
encoding: utf8

на такую:

production:
adapter: postgresql
database: redmine
host: localhost
username: redmine ## роль для доступа к базе
password: redmine_pass ## Это пароль роли redmine, которую мы создали при назначении прав на базу

Остальные блоки комментируем, просто потому, что mysql у нас не установлен.

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

Теперь согласно мануалу, надо установить Bundler — менеджер для управления зависимостями gem’ов в ruby приложениях. Эта утилита позволяет легко устанавливать необходимые gem’ы для вашего приложения, при этом вовсе не зависеть от установленных в системе[1].

Для redmine 3.4
sudo gem install bundler --version '1.17.3'
Для redmine 4.0
sudo gem install bundler

Затем разработчики советуют сразу же запустить «bundle install ––without development test«, что мы и сделаем.

bundle install --without development test

В процессе установки вводим пароль рута.

Затем генерируем секретный ключ хранилища сеансов (Session store secret generation)

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

Ставим rmagick для обработки картинок

sudo gem install rmagick --no-ri --no-rdoc

Установка redmine завершена и можно проверить его работу, запустив локальный сервер.

ruby bin/rails server -b 0.0.0.0 -e production, 
где ключ "b" задаёт прослушивание порта со всех адресов,
а не только с локального.

Можете зайти на http://localhost:3000 и лицезреть окно авторизации.

Выключаем Webrick, нажав Ctrl+C

Теперь можно установить passenger — некий веб-сервер для приложений, Ruby в том числе.

sudo gem install passenger

Теперь ставим nginx, который будет скомпилирован с поддержкой passenger. Сам nginx из коробки не умеет подключать модули, поэтому если на чистой, свежеустановленной Ubuntu у вас появился nginx… То кто-то свернул явно не туда… 

Ставим с опциями, позволяющими без вопросов скачать и установить nginx в директорию /opt/nginx и использовать язык ruby

sudo passenger-install-nginx-module --auto --prefix=/opt/nginx/ --auto-download --languages ruby

Компиляция займёт примерно 10-15 минут, по окончании выведется сообщение, что необходимые строки уже вставлены в конфигурационный файл nginx. Но к его настройке мы всё же приступим.

Отредактируем файл настроек

sudo nano /opt/nginx/conf/nginx.conf

В секцию http, которая начинается после строки «http {«, вставим строку

include vhost/*.conf;

Сохраним файл и закроем его.

Теперь в папке настроек nginx, расположенной по адресу /opt/nginx/conf создадим папку, хранящую конфигурации виртуальных хостов

sudo mkdir /opt/nginx/conf/vhost

и создадим файл настроек виртуального хоста для redmine.

sudo nano /opt/nginx/conf/vhost/redmine.conf
server {
listen 8443 ssl;
ssl_certificate /home/administrator/cert/server.crt;
ssl_certificate_key /home/administrator/cert/server.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "HIGH:!RC4:!aNULL:!MD5:!kEDH";
passenger_enabled on;
client_max_body_size 100m; # Max attachment size
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ ^/redmine(/.*|$) {
alias /home/administrator/redmine/public$1;
passenger_base_uri /redmine;
passenger_document_root /home/administrator/redmine/public;
}
}

Директива location объяснена здесь. Можете её не указывать, если не хотите делать доступ к redmine через поддиректорию.

Теперь можно создать сертификаты и расположить в том месте, которое указано в конфиге выше.

mkdir ~/cert
cd ~/cert
openssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt -nodes -days 3650 -subj '/CN=localhost'

Всё готово для запуска и осталось сделать одну небольшую вещь, а именно прописать nginx как сервис в системе.

sudo nano /lib/systemd/system/nginx.service

Вставляем следующий текст

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/opt/nginx/logs/nginx.pid
ExecStartPre=/opt/nginx/sbin/nginx -t
ExecStart=/opt/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start nginx
sudo systemctl enable nginx.service

Для удобства сделаем ссылку на nginx

sudo ln -s /opt/nginx/sbin/nginx /usr/sbin/nginx

Теперь система готова к работе. Осталось настроить резервное копирование БД и сделать доступ к redmine в подкаталоге. Если раньше у вас стоял redmine на базе MySQL то можете мигрировать с mysql на postgresql.

Добавить комментарий

Ваш e-mail не будет опубликован.