Это первая статья из небольшого цикла статей про установку, обслуживание и обновление Redmine. Читайте с удовольствием и делитесь с окружающими. В конце вставил видео, вдруг кому-то нужно посмотреть.
Возникла намедни небольшая задача: перевести старый redmine на новые рельсы… тьфу, на новый движок и на другую базу данных. Хотя рельсы (Ruby on rails) здесь тоже будут. И для начала давайте определимся с условиями. Так как это первая статья и она про установку, то здесь я опишу только установку redmine.
UPD от 02.04.2019: Установка будет производиться на Ubuntu 16.04 и на Ubuntu 18.04. Версии redmine 3.4, 4.0 и 4.1. Основных отличий в установке нет, но для старых версий ПО отличия выделены жирным.
UPD от 24.04.2020: Так как у Ubuntu 16.04 через год закончится срок поддержки, да ещё вышла Ubuntu 20.04, то чтобы не захламлять статью, для старой Ubuntu все шаги перенесу вниз, кратеньким скриптом.
Ставить буду на Ubuntu 16.04 LTS, потому что эта система на первом месте (на 2017 год) по используемости в серверах, и на Ubuntu 18.04 LTS (по состоянию на 2018 год — второе место). База данных, которая будет использоваться редмайном — PostgreSQL. Nginx как прокси к Passenger, который будет отвечать за обработку и показ информации. Имя пользователя пусть будет administrator.
Для начала установим Ubuntu. Каких либо сложностей установка не вызывает, но всегда можно подсмотреть многочисленные инструкции в интернете.
После установки начнём ставить redmine, пользуясь мануалом с сайта. Читать всё же лучше английскую версию — она информативнее и актуальнее. Хотя и не во всём.
Идём по порядку и скачиваем дистрибутив. Можно скачать из раздела Download, а после распаковать на сервере, но лучше выкачать через, например, SVN и иметь всегда возможность легко и быстро обновиться. Так и сделаем. Но предварительно скачаем и установим все необходимые пакеты. Postgres будет версии 12, инструкция по его установке взята с сайта 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-12 postgresql-contrib \ postgresql-server-dev-12 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 Для версии 4.0 svn co https://svn.redmine.org/redmine/branches/4.0-stable redmine-4.0 Для версии 4.1 svn co https://svn.redmine.org/redmine/branches/4.1-stable redmine-4.1
ln -s redmine-* redmine
Продолжаем следовать инструкции с официального сайта и создаём базу данных:
sudo -u postgres psql -c "CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'your_password' NOINHERIT VALID UNTIL 'infinity'"
Здесь мы от пользователя postgres, который был создан при установке PostgreSQL, запускаем утилиту psql и даём команду на создание пользователя или роли redmine с паролем your_password.
Создаём базу redmine, к которой имеет доступ владелец, созданный выше:
sudo -u postgres psql -c "CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine"
Дальше смотрим мануал на сайте. Нужно создать файл конфигурации подключения к базе данных.
Убеждаемся, что мы в папке, где установлен\выкачан redmine и создаём конфигурационный файл.
cd ~/redmine
echo "production:" > config/database.yml echo " adapter: postgresql" >> config/database.yml echo " database: redmine" >> config/database.yml echo " host: localhost" >> config/database.yml echo " username: redmine" >> config/database.yml echo " password: your_password" >> config/database.yml
Обратите внимание на пробелы перед строками, они важны для структуры файла. Содержимое файла должно быть таким:
production: adapter: postgresql database: redmine host: localhost username: redmine ## роль для доступа к базе password: your_password ## Это пароль роли redmine, которую мы создали при назначении прав на базу
Теперь согласно мануалу, надо установить Bundler — менеджер для управления зависимостями gem’ов в ruby приложениях. Эта утилита позволяет легко устанавливать необходимые gem’ы для вашего приложения, при этом вовсе не зависеть от установленных в системе[1].
Для redmine 3.4
sudo gem install bundler --version '1.17.3'
Для redmine 4.0 и 4.1
sudo gem install bundler
Затем разработчики советуют сразу же запустить «bundle install ––without development test«, однако при запуске bundle будет выдано предостережение, что ключ —without признан устаревшим. Поэтому надо сделать небольшую настройку и поставить необходимые bundle-пакеты
Для redmine 3.4 и 4.0 bundle config set without 'development test' Для redmine 4.1 bundle config set without 'development test rmagick'
bundle install
В процессе установки вводим пароль рута.
Затем генерируем секретный ключ хранилища сеансов (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.
«Убеждаемся, что мы в папке, где установлен\выкачан redmine и создаём конфигурационный файл.» — а это где?.. Новичок в ubuntu и мне вообще сложно даётся понимание как расположена программа и с какими именно папками мне нужно работать..
Я установила redmine с помощью команды:
Как мне теперь понять где у меня находится папка где он установлен?.. ну или куда мне нужно зайти чтобы продолжить следовать инструкциям из вашей статьи?
Можно воспользоваться командой whereis redmine и она покажет, что пакет установился в /usr/share/redmine. Там же есть и директория config в которой есть файл database.yml. Вот там, опираясь на знания о расположении каталога данных, можно дальше настраивать приложение.
Если следовать инструкции, то в самом начале мы находимся в домашней директории пользователя, там же и находится директория редмайна «redmine».
Команды после этих слов просто создают в директории редмайна в директории config файл с параметрами. Лучше бы конечно изначально ставить по инструкции, если сложно ориентироваться в мире linux
а как прикрутить svn хранилище?))
Кажется, это тема отдельной статьи.
Быстрый поиск показал эту статью например — https://jakondo.ru/integratsiya-sistemy-upravleniya-proektami-redmine-3-4-3-s-sistemoj-kontrolya-versij-subversion-1-8-10-na-debian-8-jessie/
Все довольно прикольно расписано. Правда не работает. Но это уже не так важно
А что конкретно не работает?