Установка и настройка Jira на Ubuntu

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

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

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

Убедитесь, что на сервере достаточно оперативной памяти. Как показывает практика, необходимо от 4 Гб и выше.

Обновим список пакетов в репозиториях 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 jira@localhost IDENTIFIED BY 'jira123';

---
* где:

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

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

> quit

Настройка

Нам нужно открыть конфигурационный файл для 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

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

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

Сброс пароля

Если мы забыли пароль администратора, то существует процедура его сброса. Для этого остановис Jira:

systemctl stop jira

Открываем файл:

vi /opt/jira/bin/setenv.sh

* где /opt/jira — каталог, в который мы установили Jira.

Приводим данную строку к виду:

JVM_SUPPORT_RECOMMENDED_ARGS="-Datlassian.recovery.password='test1234'"

* где test1234 будет нашим временным паролем для восстановления.

Устанавливаем системные окружения:

export JIRA_HOME=/opt/jira-home

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

* где JIRA_HOME и JAVA_HOME в нашем случае соответствуют /opt/jira-home и /usr/lib/jvm/default-java.

Запускаем jira вручную:

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

Теперь переходим на веб-интерфейс и входим в систему под пользователем recovery_admin с паролем, установленным в файле setenv.sh (в нашем примере, test1234).

Теперь можно зайти в администрирование и изменить пароль для нужного нам пользователя.

После возвращаем систему в штатный режим работы. Для начала остановим сервис:

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

Вернем значение для директивы JVM_SUPPORT_RECOMMENDED_ARGS:

vi /opt/jira/bin/setenv.sh

JVM_SUPPORT_RECOMMENDED_ARGS=""

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

systemctl start jira

# DevOps # Ubuntu # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет