Установка JIRA 7.1.4 на Debian 8 Jessie в Vagrant-бокс.
- Подготовка Vagrant бокса и ОС
- Установка MySQL/MariaDB
- Установка Java
- Установка и настройка JIRA
- Установка и настройка NGINX
- Завершение установки
Содержание
Подготовка Vagrant бокса и ОС
Создаем машину:
$ vagrant init debian/jessie64
Редактируем файл Vagrantfile, настраиваем сеть и добавляем памяти:
... config.vm.network "public_network" ... config.vm.provider "virtualbox" do |vb| vb.memory = "2048" end ...
Запускаем:
$ vagrant up
...
==> default: Available bridged network interfaces:
1) eth0
2) wlan0
==> default: When choosing an interface, it is usually the one that is
==> default: being used to connect to the internet.
default: Which interface should the network bridge to? 1
...
Подключаемся:
$ vagrant ssh
Обновляем установленные пакеты:
# apt-get update # apt-get upgrade
Создаем пользователя, под которым будет работать JIRA:
# useradd --create-home jira
Установка MySQL/MariaDB
Я предпочитаю использовать MariaDB, но в установка одинакова.
Находим пакет:
# apt-cache search mariadb-server ... mariadb-server - MariaDB database server (metapackage depending on the latest version) ...
Аналогично для MySQL:
# apt-cache search mysql-server ... mysql-server - MySQL database server (metapackage depending on the latest version)
Устанавливаем:
# apt-get install mariadb-server
или:
# apt-get install mysql-server
Вне зависимости MySQL или MariaDB — выполняем последние шаги для настройки:
# mysql_secure_installation
Создаем базу:
# mysql -u root -p
MariaDB [(none)]> create database jiradb character set utf8;
Пользователя:
MariaDB [(none)]> create user 'jira'@'localhost' identified by 'p@ssw0rd';
Открываем доступ пользователю к базе:
MariaDB [(none)]> grant all on jiradb.* to 'jira'@'localhost';
Проверяем:
# mysql -u jira -pp@ssw0rd -e "show databases" +--------------------+ | Database | +--------------------+ | information_schema | | jiradb | +--------------------+
Выходим из консоли MariaDB:
MariaDB [(none)]> quit Bye
Создаем бекап файла конфигурации MySQL/MariaDB:
# cp /etc/mysql/my.cnf /etc/mysql/my.cnf.origin
Редактируем его и в блоке [mysqld] устанавливаем SQL_MODE:
... sql_mode = NO_AUTO_VALUE_ON_ZERO ...
Перезапускаем MariaDB и проверяем:
# systemctl restart mysql
# mysql -u root -pp@ssw0rd -e "show variables like 'sql_mode'" +---------------+-----------------------+ | Variable_name | Value | +---------------+-----------------------+ | sql_mode | NO_AUTO_VALUE_ON_ZERO | +---------------+-----------------------+
Установка Java
Добавляем репозитории:
# echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" | tee /etc/apt/sources.list.d/webupd8team-java.list deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main
# echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main
# apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886 # apt-get update && apt-get install oracle-java8-installer
Проверяем:
# java -version java version "1.8.0_77" Java(TM) SE Runtime Environment (build 1.8.0_77-b03) Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)
Установка и настройка JIRA
Устанавливать будем из tar-архива, который можно найти на странице загрузок Atlassian:
Создаем каталог, в который установим JIRA и каталог для JIRA_HOME:
# mkdir -p /opt/atlassian/jira # mkdir -p /var/atlassian/application-data/jira # chown jira:jira /opt/atlassian/jira/ # chown jira:jira /var/atlassian/application-data/jira
Переключаемся на пользователя jira:
# su - jira $
Загружаем архив:
$ cd /tmp/ $ wget https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-7.1.4-jira-7.1.4.tar.gz
Распаковывавем:
$ tar xfp atlassian-jira-software-7.1.4-jira-7.1.4.tar.gz
Содержимое:
$ ls -l total 234996 -rw-r--r-- 1 jira jira 240631698 Apr 6 02:52 atlassian-jira-software-7.1.4-jira-7.1.4.tar.gz drwxr-xr-x 13 jira jira 4096 Apr 6 02:44 atlassian-jira-software-7.1.4-standalone
$ ls -l atlassian-jira-software-7.1.4-standalone/ total 108 drwxr-xr-x 17 jira jira 4096 Apr 24 13:21 atlassian-jira drwxr-xr-x 3 jira jira 4096 Apr 24 13:21 bin drwxr-xr-x 2 jira jira 4096 Apr 24 13:21 conf drwxr-xr-x 2 jira jira 4096 Apr 24 13:21 external-source drwxr-xr-x 2 jira jira 4096 Apr 24 13:21 lib drwxr-xr-x 2 jira jira 57344 Apr 24 13:21 licenses drwxr-xr-x 2 jira jira 4096 Jan 9 2015 logs -rw-r--r-- 1 jira jira 1442 Jan 9 2015 NOTICE -rw-r--r-- 1 jira jira 3813 Apr 6 02:44 README.html -rw-r--r-- 1 jira jira 2064 Apr 6 02:44 README.txt drwxr-xr-x 2 jira jira 4096 Apr 24 13:21 temp drwxr-xr-x 2 jira jira 4096 Apr 24 13:21 tomcat-docs drwxr-xr-x 2 jira jira 4096 Jan 9 2015 webapps drwxr-xr-x 2 jira jira 4096 Jan 9 2015 work
Перемещаем все в /opt/atlassian/jira:
$ cp -r atlassian-jira-software-7.1.4-standalone/* /opt/atlassian/jira/
$ ls -l /opt/atlassian/jira/ total 108 drwxr-xr-x 17 jira jira 4096 Apr 24 13:25 atlassian-jira drwxr-xr-x 3 jira jira 4096 Apr 24 13:25 bin drwxr-xr-x 2 jira jira 4096 Apr 24 13:25 conf drwxr-xr-x 2 jira jira 4096 Apr 24 13:25 external-source drwxr-xr-x 2 jira jira 4096 Apr 24 13:25 lib drwxr-xr-x 2 jira jira 57344 Apr 24 13:25 licenses drwxr-xr-x 2 jira jira 4096 Apr 24 13:25 logs -rw-r--r-- 1 jira jira 1442 Apr 24 13:25 NOTICE -rw-r--r-- 1 jira jira 3813 Apr 24 13:25 README.html -rw-r--r-- 1 jira jira 2064 Apr 24 13:25 README.txt drwxr-xr-x 2 jira jira 4096 Apr 24 13:25 temp drwxr-xr-x 2 jira jira 4096 Apr 24 13:25 tomcat-docs drwxr-xr-x 2 jira jira 4096 Apr 24 13:25 webapps drwxr-xr-x 2 jira jira 4096 Apr 24 13:25 work
Редактируем файл /opt/atlassian/jira/atlassian-jira/WEB-INF/classes/jira-application.properties, в котором указываем параметр jira.home, например:
jira.home = /var/atlassian/application-data/jira
Можно проверять.
Запускаем:
$ cd /opt/atlassian/jira/
$ ./bin/start-jira.sh
To run JIRA in the foreground, start the server with start-jira.sh -fg
executing as current user
.....
.... .NMMMD. ...
.8MMM. $MMN,..~MMMO.
.?MMM. .MMM?.
OMMMMZ. .,NMMMN~
.IMMMMMM. .NMMMN. .MMMMMN,
,MMMMMM$..3MD..ZMMMMMM.
=NMMMMMM,. .,MMMMMMD.
.MMMMMMMM8MMMMMMM,
.ONMMMMMMMMMMZ.
,NMMMMMMM8.
.:,.$MMMMMMM
.IMMMM..NMMMMMD.
.8MMMMM: :NMMMMN.
.MMMMMM. .MMMMM~.
.MMMMMN .MMMMM?.
Atlassian JIRA
Version : 7.1.4
If you encounter issues starting or stopping JIRA, please see the Troubleshooting guide at http://confluence.atlassian.com/display/JIRA/Installation+Troubleshooting+Guide
Server startup logs are located in /opt/atlassian/jira/logs/catalina.out
Using CATALINA_BASE: /opt/atlassian/jira
Using CATALINA_HOME: /opt/atlassian/jira
Using CATALINA_TMPDIR: /opt/atlassian/jira/temp
Using JRE_HOME: /usr
Using CLASSPATH: /opt/atlassian/jira/bin/bootstrap.jar:/opt/atlassian/jira/bin/tomcat-juli.jar
Using CATALINA_PID: /opt/atlassian/jira/work/catalina.pid
Tomcat started.
Т.к. машина в Vagrant-е — то получаем её IP:
# ip a s eth1 | grep inet
inet 192.168.1.114/24 brd 192.168.1.255 scope global eth1
inet6 fe80::a00:27ff:fe53:ec62/64 scope link
И проверяем, перейдя на http://192.168.1.114:8080:
Для подключения к MySQL — требуется установить драйвер для работы с сервером баз данных.
Находим последнюю версию mysql-connector-java на странице загрузок MySQL и загружаем ее:
$ cd /tmp $ wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.38.tar.gz
Распаковываем:
$ tar xfp mysql-connector-java-5.1.38.tar.gz
И копируем файл драйвера в каталог /opt/atlassian/jira/lib/:
$ cp mysql-connector-java-5.1.38/mysql-connector-java-5.1.38-bin.jar /opt/atlassian/jira/lib
Проверяем:
$ file /opt/atlassian/jira/lib/mysql-connector-java-5.1.38-bin.jar /opt/atlassian/jira/lib/mysql-connector-java-5.1.38-bin.jar: Java archive data (JAR)
Перезапускаем JIRA:
$ /opt/atlassian/jira/bin/stop-jira.sh $ /opt/atlassian/jira/bin/start-jira.sh
Продолжаем установку — выбираем «I’ll set it up myself» и жмем Next.
Выбираем базу — My own и настраиваем подключение:
Жмем Next, и ожидаем завершения установки — «Please wait while the database is set up. This may take a minute…«.
Пока можно посмотреть — какие таблицы использует JIRA:
MariaDB [jiradb]> show tables; +--------------------------------+ | Tables_in_jiradb | +--------------------------------+ | JQUARTZ_BLOB_TRIGGERS | | JQUARTZ_CALENDARS | | JQUARTZ_CRON_TRIGGERS | ... | workflowscheme | | workflowschemeentity | | worklog | +--------------------------------+ 167 rows in set (0.00 sec)
MariaDB [jiradb]> desc userbase; +---------------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------------+---------------+------+-----+---------+-------+ | ID | decimal(18,0) | NO | PRI | NULL | | | username | varchar(255) | YES | MUL | NULL | | | PASSWORD_HASH | varchar(255) | YES | | NULL | | +---------------+---------------+------+-----+---------+-------+
Установка завершена:
Жмем Next и переходим на страницу ввода лицензии.
Внизу кликаем на Generate key:
После окончания проверки лицензии — попадаем на следующую страницу, и создаем администратора:
Далее — можно сразу настроить SMTP для отправки сообщений:
Последний шаг — выбор языка:
Установка и настройка NGINX
NGINX будет работать фронтендом и проксировать трафик к Tomcat, под которым работает JIRA.
Устанавливаем NGINX:
# apt-get install nginx
Создаем файл настроек для JIRA, например — /etc/nginx/sites-available/jira.home.net:
server {
server_name jira.home.net;
access_log /var/log/nginx/jira.home.net-access.log;
error_log /var/log/nginx/jira.home.net-error.log;
root /var/www/html;
location / {
proxy_paddss http://localhost:8080;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Подключаем его:
# ln -s /etc/nginx/sites-available/jira.home.net /etc/nginx/sites-enabled/
Проверяем:
# ls -l /etc/nginx/sites-enabled/ total 0 lrwxrwxrwx 1 root root 34 Apr 24 14:30 default -> /etc/nginx/sites-available/default lrwxrwxrwx 1 root root 40 Apr 24 14:44 jira.home.net -> /etc/nginx/sites-available/jira.home.net
Проверяем:
# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Перезагружаем:
# service nginx reload
И пробуем:
Завершение установки
JIRA ругается на:
«com.atlassian.gadgets.dashboard.internal.diagnostics.UrlHostnameMismatchException: Detected URL hostname, ‘127.0.0.1’, does not match expected hostname, ‘jira.home.net'»
Подобная проблема с Tomcat встречается часто, при использовании прокси-сервера.
Много гуглил, но нашел только одно решение.
Редактируем файл /opt/atlassian/jira/conf/server.xml, и добавляем proxyName и proxyPort для Connector port="8080":
...
<Service name="Catalina">
<Connector port="8080"
maxThreads="150"
minSpareThreads="25"
connectionTimeout="20000"
enableLookups="false"
maxHttpHeaderSize="8192"
protocol="HTTP/1.1"
useBodyEncodingForURI="true"
redirectPort="8443"
acceptCount="100"
disableUploadTimeout="true"
proxyName="jira.home.net"
proxyPort="80" />
...
И перезапускаем JIRA:
# /opt/atlassian/jira/bin/stop-jira.sh # su - jira -c '/opt/atlassian/jira/bin/start-jira.sh'
Последний шаг — добавить unit-файл для управления JIRA через systemd. Надо было это раньше сделать 🙂
Создаем файл /etc/systemd/system/jira.service:
[Unit] Description=JIRA Service After=network.target iptables.service firewalld.service firewalld.service httpd.service [Service] Type=forking User=jira ExecStart=/opt/atlassian/jira/bin/start-jira.sh ExecStop=/opt/atlassian/jira/bin/stop-jira.sh ExecReload=/opt/atlassian/jira/bin/stop-jira.sh | sleep 60 | /opt/atlassian/jira/bin/start-jira.sh [Install] WantedBy=multi-user.target
Перезапускаем systemd:
# systemctl daemon-reload
И пробуем:
# service jira status ● jira.service - JIRA Service Loaded: loaded (/etc/systemd/system/jira.service; disabled) Active: inactive (dead)
# service jira stop # service jira start
# service jira status
● jira.service - JIRA Service
Loaded: loaded (/etc/systemd/system/jira.service; disabled)
Active: active (running) since Sun 2016-04-24 15:46:42 GMT; 1s ago
Process: 9071 ExecStart=/opt/atlassian/jira/bin/start-jira.sh (code=exited, status=0/SUCCESS)
Main PID: 9100 (java)
CGroup: /system.slice/jira.service
└─9100 /usr/bin/java -Djava.util.logging.config.file=/opt/atlassian/jira/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms384m -Xmx768m -Djava.awt.headless=true -Datlassian.stand...
Apr 24 15:46:42 debian-jessie start-jira.sh[9071]: .:,.$MMMMMMM
Apr 24 15:46:42 debian-jessie start-jira.sh[9071]: .IMMMM..NMMMMMD.
Apr 24 15:46:42 debian-jessie start-jira.sh[9071]: .8MMMMM: :NMMMMN.
Apr 24 15:46:42 debian-jessie start-jira.sh[9071]: .MMMMMM. .MMMMM~.
Apr 24 15:46:42 debian-jessie start-jira.sh[9071]: .MMMMMN .MMMMM?.
Apr 24 15:46:42 debian-jessie start-jira.sh[9071]: Atlassian JIRA
Apr 24 15:46:42 debian-jessie start-jira.sh[9071]: Version : 7.1.4
Apr 24 15:46:42 debian-jessie start-jira.sh[9071]: If you encounter issues starting or stopping JIRA, please see the Troubleshooting guide at http://confluence.atlassian.com/display/JIRA/Installation+Troubleshooting+Guide
Apr 24 15:46:42 debian-jessie start-jira.sh[9071]: Server startup logs are located in /opt/atlassian/jira/logs/catalina.out
Apr 24 15:46:42 debian-jessie start-jira.sh[9071]: Tomcat started.
Для init можно создать скрипт /etc/init.d/jira с таким содержимым:
#!/usr/bin/env bash
# Name of the user to run as
USER=jira
# Location of application's bin directory
BASE=/opt/atlassian/jira
case "$1" in
# Start command
start)
echo "Starting Jira"
/bin/su -m $USER -c "$BASE/bin/start-jira.sh &> /dev/null"
;;
# Stop command
stop)
echo "Stopping Jira"
/bin/su -m $USER -c "$BASE/bin/stop-jira.sh &> /dev/null"
echo "Jira stopped successfully"
;;
# Restart command
restart)
$0 stop
sleep 25
$0 start
;;
*)
echo "Usage: /etc/init.d/jira {start|restart|stop}"
exit 1
;;
esac
exit 0
Устанавливаем права на выполнение:
# chmod +x /etc/init.d/jira
init-скрипт не проверял.














