Как узнать версию redmine

Установка Redmine за 15 минут (RVM + RoR + Unicorn + Nginx)

Эта статья является результатом работы по установке и автономизации работы сервера на базе ОС Linux с Redmine по различным источникам (в том числе и по официальной инструкции), часть команд и последовательность действий были взяты из других источников. Все используемые источники указаны в конце статьи.

Введение

В общем задача звучала так: установить Redmine на сервер, где веб-сервер на nginx.

Так как Redmine написан на RoR, то необходимо иметь RoR среду, но проблема в том, что разные RoR приложения могут требовать разные версии окружения. В моем случае необходимо было предусмотреть возможность установки RoR приложений с разным окружением, а значит нужен менеджер версий, который будет разворачивать нужную среду в нужном месте.

Также хотелось классический вариант веб-сервера на nginx. Однако, nginx не знает как исполнять приложение, и в данном случае выступает в качестве прокси на исполняющий веб-сервер RoR приложения.

Теперь задача становится более ясной: установить Redmine на сервер, развернув стек RoR+Unicorn+Nginx, с автоматическим запуском.

Подготовка

Отключение ipv6

Примечание: необязательно, написал потому что мне надо было решить проблему 🙂

Установив на VPS Ubuntu 16.04 при попытке apt-get install не мог получить данные по ipv6 :

Решение: отключить ipv6 добавив соответствующую информацию в /etc/sysctl.conf:

Установка общего софта

curl для установки RVM (Ruby Version Manager):

Примечание: остальное необязательно если читатель пользуется другим софтом для этих дел 🙂

Установка

Получение Redmine

На данный момент самая свежая стабильная версия Redmine 4.1.1. Заходим в директорию /opt/ скачиваем туда архив, распаковываем переименовываем в redmine и удаляем архив:

Теперь путь до Redmine: /opt/redmine/

PostgreSQL

Этот раздел нужен только если Вы выбрали в качестве СУБД PostgreSQL!

Проверим текущую версию пакета в репозитории:

Если все нормально двигаемся дальше, иначе ищем способ установить нужную версию пакета.

Теперь нужно зайти на сервер PostgreSQL (чтобы зайти надо сменить юзера терминала, потому что только юзер postgres может в psql), создать пользователя и базу данных:

Для выхода надо ввести \q

На работе уже использовалась СУБД PostgreSQL, в тоже место предполагалось ставить GitLab (он работает с PostgreSQL), поэтому здесь сделал так.

My SQL

Этот раздел нужен только если Вы выбрали в качестве СУБД MySQL!

Установка сервера MySQL:

Действия с MySQL = 8.0 для пользователя необходимо использовать старый метод аутентификации mysqlnativepassword (и вот еще ссылка):

У меня в одном проекте уже использовалась СУБД MySQL 8, поэтому решил поставить с использованием MySQL.

Сначала надо установить gnupg2 и установить проверочные ключи для установки RVM:

Теперь в директорию /opt/ надо скачать rvm скрипт:

Затем установка самого RVM (из директории /opt/ ):

Окружение Ruby On Rails для текущей сессии терминала можно установить так (а можно и по другому):

Вывод достаточно большой, но нас интересует именно это:

Создадим окружение для Redmine:

Теперь при входе в директорию /opt/redmine/ через терминал, для этой директории будет установлено окружение ruby-2.6.5@redmine :

Настройка и тестовый запуск Redmine

Настройка базы данных

Файл /opt/redmine/config/database.yml.sample является примером как должен выглядеть конфиг подключения к БД. Создадим конфиг:

Запишем в конфиг данные для работы с БД:

Сборка зависимостей и решение проблем

Теперь надо собрать все зависимости RoR приложения:

При сборке RoR приложения в разных условиях могут возникать разные проблемы.

Используя PostgreSQL в качестве СУБД команда bundle может закончится ошибкой связанной с модулем pg :

Решение нашел здесь, а именно:

Для MySQL тоже возникает проблема с модулем mysql2 (детали ошибки аналогичны как и для PostgreSQL). Решение нашлось здесь, а именно:

Еще была проблема с nokogiri, решение нашел здесь, а именно:

Не забываем опять запустить bundle

Инициализация БД

Теперь нужно сделать 5-ый, 6-ой и 7-ой шаги: сгенерировать случайный ключ для сессий, создать структуру БД и инициализировать данные в БД:

Тестовый запуск

Пробуем запустить Redmine на webrick:

Если запуск прошел успешно, то на 3000 порту можно посмотреть сайт ( localhost:3000 или ip:3000 ).

Unicorn

В /opt/redmine/GemFile запишем зависимость:

Создадим конфигурационный файл для unicorn:

И вставляем туда текст конфига:

Создаем директории в соответствии с конфигом и меняем владельца:

Теперь выполнив bundle (если нет ошибок), можно запускать unicorn (из директории /opt/redmine/ ):

Уничтожить процесс unicorn можно по pid файлу :

Nginx

Пишем в конфиг nginx (у меня путь /etc/nginx/nginx.conf ), в секцию http (при этом виртуальные хосты должны быть отключены):

Или вот полный конфиг (для доступа к Redmine по ip адресу):

Если nginx запустился без ошибок, то пробуем обратится на сайт по ip адресу (или по localhost ), Redmine должно работать.

Автозагрузка

Если перезагрузить сервер (или внезапно уничтожить Unicorn), то сам Unicorn автоматически не поднимется, надо это организовать.

Почитать о том, что происходит ниже можно здесь и здесь.

Идем в /etc/systemd/system/ и создаем файл redmine.service :

Создаем файлы скрипты в /opt/redmine/config/ меняем владельца и группу, и ставим права на запуск:

unicorn_stop для остановки сервиса:

unicorn_reload для перезапуска сервиса (останавливаем и запускаем):

Теперь просмотрев статус сервиса можно увидеть:

Источник

Развертывание и сопровождение Redmine, правильный путь

Как узнать версию redmine. Смотреть фото Как узнать версию redmine. Смотреть картинку Как узнать версию redmine. Картинка про Как узнать версию redmine. Фото Как узнать версию redmine

Дисклеймер: это не обычное руководство вида «Как установить Redmine». В нем я не буду погружаться в настройку базы данных или установку веб-сервера. Я также не буду рассказывать о настройке Redmine. Документация по Redmine в этом плане является достаточно полной. А для того, что не упоминается в официальной документации, есть общая процедура запуска Rails-приложений, которую можно легко найти в Интернете.

Вместо этого речь пойдет о сопровождении собственной, более или менее кастомизированной версии Redmine, которая может быть развернута с помощью одной команды оболочки, когда это необходимо.

Готовы? Тогда начнём.

Отложите сборки типа «все-в-одном» и готовые к запуску виртуальные машины

Установочные пакеты Bitnami или предварительно установленные виртуальные машины хороши для быстрой пробы Redmine, но не подходят для продуктивного использования. Почему? Потому что у них нет обновления. Ой, секундочку, у Bitnami есть. Правда, оно больше похоже на шутку. «Установите новую версию всего стека в другой каталог и переместите туда свои данные» — это не обновление. Ни слова о настройке, кастомизации и плагинах, которые, вероятно, также нужно сохранить и переустановить. Желаю удачи с таким «обновлением».

Релизы патчей Redmine выходят один или два раза в месяц. Исправления ошибок, связанных с безопасностью, выпускаются по мере необходимости — вы же не хотите пропустить их?

Факт, о котором люди часто забывают: время обновления не всегда зависит от вас. Конечно, можно отложить обновление до выхода следующей младшей версии Redmine — на несколько недель (наверное, даже и на более длительный срок). Но вы же не хотите при обнаружении новых проблем безопасности в Redmine или Rails сидеть с непатченной системой, пока не получится освободить время для установки и настройки нового стека Bitnami и вручную переместить все данные?

Установка — это только верхушка айсберга. Обновление — вот что придется делать регулярно.

Поиск простейшего способа установки определенно перестает быть актуальным, как только принимается решение использовать Redmine в производстве. Простое сопровождение и возможность модернизации — вот на чем нужно заострять внимание, чтобы минимизировать затраты и риски, связанные с использованием собственного Redmine.

Ниже я расскажу, как просто поддерживать Redmine в актуальном состоянии.

Используйте Git

Даже если вы намереваетесь запустить стоковый Redmine без каких-либо настроек или плагинов, всё равно используйте репозиторий Git для хранения копии Redmine. По крайней мере, наличие специализированного репозитория даст вам место хранения всего необходимого для развертывания (позже это будет рассмотрено подробнее). Рано или поздно вы (или ваши пользователи) захотите установить какой-нибудь плагин или настраиваемую тему, и для этого уже будет готова инфраструктура. Эксперименты с изменениями и тестирование плагинов и тем в локальных ветвях без нарушений в производственном коде становятся очень простыми при наличии собственного репозитория git c Redmine. Так что сейчас мы начнем с настройки репозитория.

Хотя основной репозиторий Redmine является экземпляром Subversion, на Github есть полуофициальный репозиторий, который поддерживается основным коммиттером и постоянно обновляется. Используйте его для настройки собственного репозитория:

Настройка локального клона Redmine

Измените номер версии 3.2-stable на номер последней стабильной версии Redmine.

Удаленный репозиторий git@yourserver.com должен быть частным, так как в нем будет храниться конфигурация развертывания (а возможно, и прочая информация, публиковать которую не стоит). Поскольку описанный ниже процесс развертывания будет извлекать из этого репозитория код, то репозиторий должен быть доступен во время развертываний, поэтому не размещайте его на настольных компьютерах. Идеальной будет ситуация, когда репозиторий также будет доступен с веб-сервера, на котором происходит развертывание. Но это при необходимости можно обойти.

Пропатчите обновления версий

Время от времени эта восходящая ветвь будет получать некоторые новые коммиты. Ваша задача — включить новые коммиты в локальную ветвь local/3.2-stable для развертывания.

Хотя возможно и просто регулярно дополнять восходящую ветвь, я предлагаю использовать git rebase для поддержки собственного набора изменений поверх стокового кода Redmine:

Перебазирование локальных изменений поверх «голого» Redmine:

Итогом будет являться чистая история, в которой ваши (локальные) коммиты всегда находятся поверх последних (восходящих) коммитов Redmine.

Младшие и старшие обновления

Теперь, когда есть новая стабильная ветвь (скажем, 3.3-stable ), делайте то же самое — перебазируйте ваши изменения поверх неё. Команды git будут немного отличаться из-за изменения восходящей ветви:

Перенос локальных изменений в новую стабильную ветвь

Для новой старшей версии требуется сделать то же самое.

Бог ты мой, у меня конфликты!

Рано или поздно (вероятно, уже во время первого обновления до новой младшей версии) вы столкнетесь с конфликтами слияния. Во время ребазирования Git применяет коммиты один за другим и останавливается каждый раз, когда применение коммита происходит с ошибками. В этом случае команда git status покажет проблемные файлы.

Что дальше?

Теперь, когда рабочий процесс Git настроен должным образом, пришло время автоматизировать развертывание, о котором я расскажу во второй части этого руководства (примечание: перевод второй части будет доступен в течение нескольких дней).

Источник

Redmine

Latest releases¶

Resources¶

Installing Redmine¶

Requirements¶

Operating system¶

Redmine should run on most Unix, Linux, macOS and Windows systems as long as Ruby is available on this platform. See specific installation HowTos here.

Ruby interpreter¶

The required Ruby versions for a given Redmine version are:

Redmine versionSupported Ruby versionsRails version used
trunk (>= r20913)Ruby 2.5, 2.6, 2.7, 3.0Rails 6.1
4.2Ruby 2.4, 2.5, 2.6, 2.7 1Rails 5.2
4.1Ruby 2.3, 2.4, 2.5, 2.6Rails 5.2

1 Redmine 4.2 does not support Ruby 2.7.0 and 2.7.1. Use Ruby 2.7.2 or higher (see #31500#note-13).

2 Redmine prior to 4.0.6 supports Ruby >= 2.2.2. Redmine 4.0.6 and later don’t support Ruby 2.2 (see #32787).

Supported database back-ends¶

Optional components¶

Redmine Version¶

Installation procedure¶

Download a released package and extract it to an appropriate destination on your system.
As an alternative one can checkout the files directly from the version control system.

Please visit the download page for further information on how to download Redmine.

Redmine database user will be named redmine hereafter but it can be changed to anything else.

MySQL¶

PostgreSQL¶

SQLite¶

Skip this step. A database file will be created during Step 6.

SQL Server¶

The database, login and user can be created within SQL Server Management Studio with a few clicks.

Copy config/database.yml.example to config/database.yml and edit this file in order to configure your database settings for «production» environment.

Example for a MySQL database (default port):

If your server is not running on the standard port (3306), use this configuration instead:

Example for a PostgreSQL database (default port):

Example for a SQLite database:

Redmine uses Bundler to manage gems dependencies.

You need to install Bundler first if you use Ruby 2.5 or earlier:

Then you can install all the gems required by Redmine using the following command:

Optional dependencies¶

RMagick¶

RMagick is an interface between the Ruby programming language and the ImageMagick image processing library. The library is necessary for Redmine prior to 4.1.0 to export gantt charts to PNG or PDF.

If you have trouble installing rmagick on Windows, refer to this HowTo.

Database adapters¶

Redmine automatically installs the adapter gems required by your database configuration by reading it from the config/database.yml file (eg. if you configured only a connection using the mysql2 adapter, then only the mysql2 gem will be installed).

Additional dependencies ( Gemfile.local )¶

This step generates a random key used by Rails to encode cookies storing session data thus preventing their tampering.
Generating a new secret token invalidates all existing sessions after restart.

Create the database structure, by running the following command under the application root directory:

Windows syntax:

If you get this error with Ubuntu:

Insert default configuration data in database, by running the following command:

Redmine will prompt you for the data set language that should be loaded; you can also define the REDMINE_LANG environment variable before running the command to a value which will be automatically and silently picked up by the task.

NB: Windows users can skip this section.

The user account running the application must have write permission on the following subdirectories:

E.g., assuming you run the application with a redmine user account:

Note: If you have files in these directories (e.g. restore files from backup), make sure these files are not executable.

Test the installation by running WEBrick web server:

Once WEBrick has started, point your browser to http://localhost:3000/. You should now see the application welcome page.

Note: Webrick is not suitable for production use, please only use webrick for testing that the installation up to this point is functional. Use one of the many other guides in this wiki to setup redmine to use either Passenger (aka mod_rails ), FCGI or a Rack server (Unicorn, Thin, Puma, hellip;) to serve up your redmine.

Use default administrator account to log in:

You can go to Administration menu and choose Settings to modify most of the application settings.

Configuration¶

If you need to override default application settings, simply copy config/configuration.yml.example to config/configuration.yml and edit the new file; the file is well commented by itself, so you should have a look at it.

These settings may be defined per Rails environment ( production / development / test ).

: don’t forget to restart the application after any change.

Email / SMTP server settings¶

Email configuration is described in a dedicated page.

SCM settings¶

Examples (with Subversion):

Command name override:

Attachment storage settings¶

You can set a path where Redmine attachments will be stored which is different from the default ‘files’ directory of your Redmine instance using the attachments_storage_path setting.

Logging configuration¶

Redmine defaults to a log level of :info, writing to the log subdirectory. Depending on site usage, this can be a lot of data so to avoid the contents of the logfile growing without bound, consider rotating them, either through a system utility like logrotate or via the config/additional_environment.rb file.

Backups¶

Please refer to Backing up and restoring Redmine for more details.

Notes on Linux/Unix installation¶

Be sure to disable security hardenning tools during the installation process if you run into bizarre permission problems. These problems are mostly silent and can be caused by tools like extended ACLs, SELinux, or AppArmor. There tools are mostly used in big companies with a strict security policy, default Linux/Unix distributions settings shouldn’t be a problem.

Notes on Windows installation¶

There is an prebuilt installer of Ruby MRI available from http://rubyinstaller.org.
After installing it, select Start Command Prompt with Ruby in the start menu.

When running command as described in this guide, you have to set the RAILS_ENV environment variable using a separate command.

I.e. commands with the following syntaxes:

have to be turned into 2 subsequent commands:

You may need to manually install the mysql gem using the following command:

And in some case it is required to copy the libmysql.dll file in your ruby/bin directory.
Not all libmysql.dll are ok this seem to works http://instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/libmySQL.dll.

Replace localhost with 127.0.0.1 in database.yml.

Alternative to manual installation¶

Some users may prefer to skip manual installation by using one of the third-party Redmine bundles on the download page.

Источник

Redmine

Latest releases¶

Resources¶

Обновление существующей установки¶

Документация ниже, предназначена на обновлении до Redmine 2.x.
Вы можете просмотреть предыдущие версии для обновления до Redmine 1.x here.

Рекомендуется сделать резервную копию базы данных и файлов на сервер. Большинство обновлений являются безопасными, но никогда не помешает иметь резервную копию на всякий случай.

Резервное копирование файлов¶

MySQL база данных¶

Команда mysqldump может использоваться для резервного копирования содержимого вашей базы данных MySQL в текстовый файл.
Например:

SQLite база данных¶

В базе данных SQLite все содержащиеся в одном файле, так что вы можете сделать резервную копию путем копирования файла в другое место.

PostgreSQL¶

Команда pg_dump может быть использована для резервного копирования содержимого вашей базы PostgreSQL в текстовый файл. Вот пример:

Теперь пришло время для выполнения фактического обновления. Этот процесс является различным в зависимости от того, как вы скачали Redmine. Вам только нужно выполнить один из следующих вариантов.

1. Распакуйте новый архив программы в новый каталог.

2. Скопируйте настройки базы данных, файл config/database.yml в директорию config новой директории установки. Если вы запускаете Redmine >= 1.4 с mysql и ruby1.9, измените адаптер базы данных на `mysql2`.

3a. Скопируйте файл основных настроек config/configuration.yml в директорию config новой директории установки

4. Скопируйте содержимое каталога files в новую директорию установки (данная директория содержит все ваши загруженные файлы).

5. Скопируйте папки ваших установленных плагинов из директории vendor/plugins (если вы обновляете с версии ниже 2.0.0) или из директории plugins (если вы обновляете с версии выше 2.0.0) в новую plugins директорию установки. Убедитесь, что вы копируете только те плагины, которые подходят для новой устанавливаемой версии Redmine.

6. Выполните следующую команду из нового корневого каталога Redmine:

Данная команда создаст файл ( config/initializers/secret_token.rb ) со случайными данными, используемый для защиты данных сессий.

ОЧЕНЬ ВАЖНО: не заменять файл config/settings.yml старой версией!

1. Перейдите в корневой каталог Redmine и запустить следующую команду:

2. Если вы обновляете старую версию на 0.8.7 и выше или из trunk версии Redmine на r2493 или выше, необходимо сгенерить файл для защиты данных сессии. См. выше про генерацию session_store.

Этот шаг может изменить содержимое базы данных. Перейти на новый каталог Redmine и запустите перенос базы данных:

Если у вас установлены какие-либо плагины, вы также должны запустить миграцию их баз данных:

1. Вам необходимо очистить кэш и существующие сессии:

2. Перезагрузите сервер приложений (например, puma, thin, passenger)

Возможные проблемы¶

Rack n.n.n cannot be loaded because Rack n.n.n is already activated¶

При использовании Rails 2.3.5 можно получить следующее сообщение Rack 1.0.1 cannot be loaded because Rack 1.0 is already activated.
Для решения необходимо изменить файл action_controller в папке приложения по следующему пути vendor/rails/actionpack/lib/action_controller.rb
Найти строки 34 и 35, закомитить их и добавить строку чтобы выглядело так

Причем путь надо заменить на нужный

SVN репозиторий не открывается¶

в логах мини веб-сервера thin (/var/log/thin/thin.0.logh) пишется что-нить подобное:

Лекарство:
В файле /usr/share/redmine/lib/redmine/scm/adapters/subversion_adapter.rb
найти строку

и добавить ключ, включающий поддержку неизвестных SSL сертификатов:

Источник

Миграция Redmine на новую версию и одновременно в Docker

Возникла необходимость поставить на Redmine, которым мы пользуемся уже несколько лет, плагин для agile. Redmine хоть и старый (версия 2.4), но в доке от RedmineUP(redmine_agile) указано, что он поддерживает версии с 2.1 по 3.3. То есть должен встать. Но не тут то было.

Как узнать версию redmine. Смотреть фото Как узнать версию redmine. Смотреть картинку Как узнать версию redmine. Картинка про Как узнать версию redmine. Фото Как узнать версию redmine

Пойдя простым путем, то есть действуя по инструкции, закинул плагин в нужную папку, запустил:

Но каменный цветок не вышел. Rake abort вышел. И еще на две экрана выдал ругательств. Покурив много форумов, помучив гугл, и перепробовав разные способы, так и не смог победить этот аборт. Попробовал обновить Redmine (думал в этом проблема), но и обновляться он не захотел.
Так как на Ruby я не спец, то вникать в проблему можно было очень долго. Тут и пришла спасительная мысль — а не попробовать ли Redmine развернуть в Docker’е? Сказано — сделано. Посмотрел какие есть в репозитории образы Redmine, взял sameersbn/redmine и образ для базы sameersbn/mysql. Очень подробный мануал от автора образа: https://github.com/sameersbn/docker-redmine.

Делаем pull образов, запускаем и проверяем, что все работает.

Подключаем volume на хосте /srv/docker/redmine/mysql для хранения базы. Конфиг для переменных среды выносим в файл «config.mysql»:

Делаем линк в контейнер с базой. Публикуем порты 80 и 443 (можно только 443 оставить). Подключаем volume /srv/docker/redmine/redmine для хранения файлов редмайна на хосте. Конфиг выносим в «config.redmine»:

Переменных довольно много можно использовать, весь список у автора образа подробно расписан (спасибо ему, очень качественный readme сделал).

Заводится все с полпинка, при первом старте обновляется схема базы данных. Логинимся в новый инстанс Redmine как admin/admin. Меняем пароль.

Закидываем в папку /srv/docker/redmine/redmine/plugins на хосте нужный нам agile плагин. Перезапускаем образ редмайна. Плагин подхватывается и замечательно работает. Очень хорошо, можно пить кофе и переносить базу со старого редмайна в новый. Делаем дамп старой базы:

Редактируем дамп redmine_sql (так как название базы у нас поменялось), вставляем первой строкой в файле:

Копируем дамп в расшаренный volume на хосте /srv/docker/redmine/mysql. Импортируем дамп в новый инстанс mysql в контейнере:

Кажется, что победа уже близко. В браузере заходим по нужному адресу. Страница отображается. Логинимся в Redmine под админом. И упс… Error 500.

Ну мы не такие наивные, чтобы верить, будто все заработает с первого раза. Нас этим не обломаешь. Смотрим логи. Снова читаем, что умные люди пишут в интернетах. Ага, надо при миграции на новую версию редмайна обновить схему базы. Делаем:

Частично скрипт отрабатывает успешно, но потом вылетает с ошибкой «не могу создать таблицу такую-то, она уже существует». Смотрим, что за таблица, лезем в контейнер с базой, удаляем вредную таблицу. И так несколько раз подряд. Итого удалил следующие:

После этого снова обновляем схему из контейнера с редмайном:

Обновляется без ошибок. Рестартуем образ редмайна. Заходим на страницу, логинимся и вуаля!
Все работает.

Дальше остается полировка. Настраиваем автозапуск контейнеров при старте ОС. Пишем конфиг запуска в systemd:

Мы запускаем контейнер из образа и после прекращения работы удаляем его.

Контейнер с базой просто стартуем, он у нас не удаляется при выключении.

Рестартуем ОС, проверяем, все поднялось и работает. Миграция с Redmine 2.4 до 3.3 с переездом в Docker и установкой плагина agile завершилась успешно.

Environment:
Redmine version 3.3.2.stable
Ruby version 2.1.9-p490 (2016-03-30) [x86_64-linux-gnu]
Rails version 4.2.7.1
Environment production
Database adapter Mysql2
SCM:
Subversion 1.8.8
Darcs 2.8.4
Mercurial 2.8.2
Cvs 1.12.13
Bazaar 2.7.0
Git 2.11.0
Filesystem
Redmine plugins:
redmine_agile 1.4.3

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *