Установка системы отслеживания ошибок Jira на Linux Ubuntu

Обновлено и опубликовано Опубликовано:

Приложение Jira может быть установлено в качестве автономного сервиса на собственный сервер. Рассмотрим этот процесс подробнее на примере развертывания сервиса под Linux Ubuntu Server версии 20.04.

Подготовка системы

Обновим список пакетов в репозиториях ubuntu:

apt-get update

Задаем часовой пояс, например:

timedatectl set-timezone Europe/Moscow

* где Europe/Moscow — московское время. Список всех возможных зон смотрим командой timedatectl list-timezones.

Установка Java

Jira написана на Java, поэтому в системе должна быть установлена последняя. Вы воспользуемся пакетом openjdk:

apt-get install default-jdk

* пакет default-jdk устанавливаем совместимую с нашей системой java.

В нашей системе уже могут оказаться ранее установленные версии java. Введем команду:

update-alternatives –config java

Если мы увидим что-то на подобие:

There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/java-11-openjdk-amd64/bin/java
Nothing to configure.

… то значит, что у нас только одна версия Java — продолжаем настройку сервера, иначе, выбираем подходящий вариант (как правило, последнюю версию).

После установки Java вводим:

java -version

Мы должны увидеть что-то на подобие:

openjdk version “11.0.10” 2021-01-19
OpenJDK Runtime Environment (build 11.0.10+9-Ubuntu-0ubuntu1.20.04)
OpenJDK 64-Bit Server VM (build 11.0.10+9-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)

Java установлен и готов к работе.

Установка и настройка СУБД

Официально компанией Atlassian для Jira поддерживаются следующие базы:

  • PostgreSQL.
  • MySQL.
  • Oracle.
  • MS SQL.

Мы выполним установку mysql версии 8.

Установка и запуск

В Ubuntu используем данную команду:

apt-get install mysql-server

Разрешим автозапуск сервиса:

systemctl enable mysql

Укажем пароль для суперпользователя:

mysqladmin -u root password

Создание базы и пользователя

Подключимся к командной строке mariadb-sql:

mysql -uroot -p

Создаем базу данных для Jira:

> CREATE DATABASE jira DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

* данной командой мы создадим базу jira с кодировкой UTF-8.

Создадим пользователя, который сможет подключаться к базе.

а) Для MySQL 8 и выше:

> CREATE USER ‘jira’@’localhost’ IDENTIFIED BY ‘jira123’;

> GRANT ALL PRIVILEGES ON jira.* TO ‘jira’@’localhost’;

б) для MySQL 5.7 и ниже:

> GRANT ALL PRIVILEGES ON jira.* TO [email protected] IDENTIFIED BY ‘jira123’;


* где:

  • jira.* — разрешает доступ к любой таблице базы jira;
  • [email protected] разрешает доступ пользователю jira с локального компьютера;
  • jira123 — пароль для создаваемого пользователя.

Выходим из командной оболочки:

Настройка

Нам нужно открыть конфигурационный файл для MySQL. Путь до него можно посмотреть командой:

mysql –help | grep “Default options” -A 1

В моем случае это был файл /etc/mysql/my.cnf, в котором, в свою очередь, была ссылка на файлы в каталоге /etc/mysql/mysql.conf.d/ — итого, открываем:

vi /etc/mysql/mysql.conf.d/mysqld.cnf

В раздел [mysqld] добавляем:

[mysqld]

default-storage-engine=INNODB
innodb_default_row_format=DYNAMIC
innodb_log_file_size=2G
sql_mode = NO_AUTO_VALUE_ON_ZERO

* где:

  • default-storage-engine — определяет механизм хранения данных в таблице по умолчанию (будет использоваться он, если при создании таблицы он не указывается явно с помощью ENGINE).
  • innodb_default_row_format — формат строки по умолчанию (будет использоваться он, если не указывается явно с помощью ROW_FORMAT).
  • innodb_log_file_size — размер redo-лога для фиксации операций изменения данных. Чем больше его значение, тем выше производительность сервера за счет уменьшения дисковых операций. Слишком большое значение приводит к потреблению большого объема памяти.
  • sql_mode — SQL режим. В данном примере при получении значения 0 для поля с auto_increment система будет воспринимать его, именно, как 0.

Перезапускаем mysql:

systemctl restart mysql

Если наш сервер не запустится, проверяем innodb_log_file_size — возможно, на нашем сервере не так много свободной памяти (проверяем командой free -h) и стоит уменьшить значение для данной опции.

Настройка базы данных завершена.

Установка Jira

Переходим на страницу загрузки Jira и смотрим последнюю версию LTS версии (при желании, можно установить и самую последнюю):

Просто смотрим на нужную нам версию Jira

* в нашем примере это 8.13.3.

С помощью wget загружаем на наш сервер архив с программным продуктом:

wget https://product-downloads.atlassian.com/software/jira/downloads/atlassian-jira-software-8.13.3.tar.gz

* где 8.13.3 — версия приложения, которую мы хотим установить.

Создаем 2 каталога:

mkdir /opt/jira /opt/jira-home

* где /opt/jira — каталог для приложения; /opt/jira-home — home каталог Jira (ключевые данные, которые помогают определить, как работает Jira).

Распаковываем скачанный архив в каталог /opt/jira:

tar zxf atlassian-jira-software-*.tar.gz -C /opt/jira –strip-components 1

Для корректной работы Jira с MySQL нам нужен драйвер JDBC. Для его загрузки переходим на соответствующую страницу и выбираем версию продукта без конкретной привязки к операционной системе:

Выбираем подходящую версию драйвера JDBC

* в моем примере был установлен MySQL версии 8.0.23 — на момент обновления инструкции последняя версия драйвера для загрузки была 8.0.22, которая нам подходит. В вашем случае необходимо посмотреть версию MySQL командой mysql –version и скачать подходящий драйвер JDBC.

Справа от нужного нам пакета (архив tar.gz) копируем ссылку на загрузку:

Копируем ссылку на загрузку JDBC драйвера MySQL

Используя скопированную ссылку, загрузим архив на наш сервер:

wget https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-java-8.0.22.tar.gz

Распакуем его:

tar zxf mysql-connector-java-*.tar.gz

Нас интересует файл jar — его нужно перенести в каталог lib нашего приложения:

mv mysql-connector-java-*/mysql-connector-java-*.jar /opt/jira/lib/

Для старта Jira необходимо в системном окружении определить переменные JIRA_HOME и JAVA_HOME:

export JIRA_HOME=/opt/jira-home

export JAVA_HOME=/usr/lib/jvm/default-java

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

/opt/jira/bin/start-jira.sh

Мы должны увидеть что-то на подобие:

To run Jira in the foreground, start the server with start-jira.sh -fg
executing as current user

                  `sMMMMMMMMMMMMMM+
                     MMMMMMMMMMMMMM
                     :sdMMMMMMMMMMM
                             MMMMMM
          `sMMMMMMMMMMMMMM+  MMMMMM
             MMMMMMMMMMMMMM  +MMMMM
              :sMMMMMMMMMMM   MMMMM
                     MMMMMM    `UOJ
   `sMMMMMMMMMMMMM+  MMMMMM
     MMMMMMMMMMMMMM  +MMMMM
      :sdMMMMMMMMMM   MMMMM
             MMMMMM    `UOJ
             MMMMMM
             +MMMMM
              MMMMM
               `UOJ

      Atlassian Jira
      Version : 8.13.3
                  
If you encounter issues starting or stopping Jira, please see the Troubleshooting guide at https://docs.atlassian.com/jira/jadm-docs-0813/Troubleshooting+installation

Using JIRA_HOME:       /opt/jira-home

Server startup logs are located in /opt/jira/logs/catalina.out
Using CATALINA_BASE:   /opt/jira
Using CATALINA_HOME:   /opt/jira
Using CATALINA_TMPDIR: /opt/jira/temp
Using JRE_HOME:        /usr/lib/jvm/default-java
Using CLASSPATH:       /opt/jira/bin/bootstrap.jar:/opt/jira/bin/tomcat-juli.jar
Using CATALINA_PID:    /opt/jira/work/catalina.pid
Existing PID file found during start.
Removing/clearing stale PID file.
Tomcat started.

Теперь можно открывать браузер и переходить по ссылке http://192.168.1.15:8080/, где 192.168.1.15 — IP-адрес нашего сервера с Jira.

Откроется страница развертывания программного продукта — выбираем удобный для нас язык (например, русский):

Кнопка для перехода к выбору языка установки Jira

Выбираем вариант самостоятельной настройки Jira во время веб-установки:

Выбираем самостоятельную настройку Jira во время ее установки

Переключаем селектор «Database Connection» в положение My Own Database и указываем данные для подключения к СУБД:

Заполняем форму для настройки подключения Jira к MySQL

* в нашем примере выполняется подключение к базе MySQL 8, которая находится на одном сервере с Jira (localhost) по стандартному порту 3306. Имя созданной нами базы — jira, пользователь и пароль, соответственно — jira и jira123.

Кликаем по кнопке Test Connection:

Проверяем соединение с MySQL

Мы должны увидеть сообщение об успешном тестировании:

Соединение с базой прошло успешно

* при появлении ошибки, необходимо разобраться с проблемой — как правило она сводится к неправильным драйверу или логину с паролем.

Нажимаем Next и ждем выполнения настройки базы данных:

Jira создает таблицы и наполняет их данными

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

Настройка имени титульной страницы и URL-адреса

* в продуктивной среде правильнее указать полное доменное имя — это профессиональнее и позволит использовать https без выдачи предупреждения со стороны браузера.

На следующем шаге нужно ввести лицензионный ключ. Если его нет, что получаем временный, кликнул по ссылке generate a Jira trial license:

Переходим по ссылке для получения триальной лицензии

Нас перекинет на сайт компании Atlassian — для регистрации вводим свой адрес электронной почты:

Вводим email для регистрации на сайте Atlassian

На следующем шаге вводим свое имя и придумываем пароль:

Указываем имя и новый пароль для завершения регистрации

Мы получим сообщение о необходимости проверить входящую почту:

Регистрация завершена — нужно проверить свою почту

Переходим в почтовый ящик указанной при регистрации почты, находим письмо от Atlassian и кликаем по кнопке Подтвердите адрес электронной почты:

Подтверждаем почту, переходя по ссылке

Мы окажемся на странице, где для получения лицензии нужно ввести название организации и кликнуть по Generate License:

Вводим название организации и создаем триальный ключ

На странице подтверждения нашего URL-адреса кликаем по Yes:

Подтверждаем корректность URL-адреса, по которому работает Jira

Скорее всего, браузер выдаст ошибку соединения — нажимаем Все равно отправить:

Браузер покажет предупреждение безопасности — игнорируем

Мы вернемся к установке нашего приложения, а поле с лицензионным ключом окажется заполненным — нажимаем Next:

Поле лицензионного ключа автоматически заполнится

Начнется настройка лицензии — это займет некоторое время:

Ожидаем окончания процесса настройки лицензии

Заполняем данные для первого пользователя — администратора:

Указываем имя первого пользователя, придумываем пароль

Далее система предложит нам настроить почтовые уведомления — оставляем Later и завершаем процесс установки:

Завершаем установку Jira

Установщик выполнит завершающие операции:

Последний процесс установки Jira

… и предложит выбрать удобный для работы язык:

Выбираем язык, на котором нам удобно работать с Jira

Мы закончили с установкой Jira.

Настройка автозапуска

На предыдущем шаге мы запустили сервис вручную. То есть, после перезагрузки нашего компьютера, приложение перестанет работать. Настроим работу Jira в качестве юнита systemd.

Для начала, остановим службу, запущенную ранее:

/opt/jira/bin/stop-jira.sh

Создаем пользователя, от которого будет работать Jira:

useradd jira -U -s /bin/false -d /opt/jira

* в итоге будет создан пользователь jira со следующими опциями:

  • -U — также будет создана группа с таким же именем (jira).
  • -s /bin/false — запрещает пользователю интерактивный вход в систему.
  • -d /opt/jira — указывает путь до домашней директории пользователя.

Для созданных ранее каталогов выставляем в качестве владельца нашего созданного пользователя:

chown -R jira:jira /opt/jira /opt/jira-home

Создаем файл с настройками юнита:

vi /etc/systemd/system/jira.service

[Unit]
Description=Jira Server
After=network.target

[Service]
Type=forking
User=jira
Group=jira
Environment=”JAVA_HOME=/usr/lib/jvm/default-java”
Environment=”JIRA_HOME=/opt/jira-home”
ExecStart=/opt/jira/bin/start-jira.sh
ExecStop=/opt/jira/bin/stop-jira.sh
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

* где обращаем внимание на:

  • User/Group — пользователь и группа пользователя, от чьего имени будет работать сервис. В нашем примере это созданный пользователь jira.
  • Environment — переменные окружения. В нашем примере задается JAVA_HOME и JIRA_HOME. Они указываею на соответственно, где искать java и где находится рабочая директория Jira.
  • ExecStart/ExecStop — пути к скриптам, которые запускают или останавливают работу службы.
  • Restart/RestartSec — задают поведение сервиса при необходимости выполнить перезапуск. В нашем примере выполнять при сбое с интервалом в 10 секунд.

Перечитываем конфигурационный файл в systemd:

systemctl daemon-reload

Запускаем наш сервис:

systemctl start jira

Проверить его работоспособность можно командой:

systemctl status jira

Ждем секунд 15-20 — для запуска веб-сервера tomcat требуется немного времени. Мы можем ввести команду:

ss -tunlp | grep :8080

… чтобы проверить, начал ли работать сервис.

После открываем браузер и переходим на наш портал.