Установка 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-скрипт не проверял.