Instalación de Jira

Jira es un software de gestión de proyectos muy extendido en empresas de desarrollo de software.

En este post se verá como instalar Jira a partir del un .zip o .tar.gz; es importante recordar que la versión WAR fue oficialmente discontinuada con Jira 7.0 (Atlassian Documentation: End of support for WAR distribution).

Los requermientos de Jira dependen de la versión, aunque en líneas generales se resumen en servidor SQL, Java, Apache Tomcat y el conector Java-SQL.

En este post se instala Jira 7.2 en un servidor Red Hat 7 usando MySQL como servidor de base de datos. Los requerimientos para Jira 7.2 se pueden consultar en Supported platforms, aunque se resumen en:

Dependencias

MySQL

Atlassian no soporta oficialmente MariaDB por lo que es mejor optar por MySQL, especialemente si Jira está licenciado.

Instalar MySQL

1
2
3
4
5
6
7
8
mkdir /opt/install
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm -O /opt/install/mysql57-community-release-el7-9.noarch.rpm
yum install -y /opt/install/mysql57-community-release-el7-9.noarch.rpm
yum-config-manager --disable mysql57-community
yum-config-manager --enable mysql56-community
yum install mysql-community-server
systemctl enable mysqld
systemctl start mysqld

Nota: El comando yum-config-manager lo proporciona el paquete yum-utils.

Configurar MySQL

Añadir los siguientes parámetros a la sección [mysqld]:

1
2
3
4
5
6
7
8
9
10
11
12
# Set the default character set to be UTF-8:
character-set-server=utf8
collation-server=utf8_bin
# Set the default storage engine to InnoDB:
default-storage-engine=INNODB
# Specify the value of max_allowed_packet to be at least 256M:
max_allowed_packet=256M
# Specify the value of innodb_log_file_size to be at least 2G for MySQL 5.5 and above:
innodb_log_file_size=2G

Más información:

Crear la base de datos, el usuario y asignar permisos

1
2
3
4
5
6
7
8
mysql_Secure_installation
ROOT_PASS=mysql_root_password
JIRA_DB_NAME=jiradb
JIRA_USERNAME=jira-user
JIRA_PASSWORD=jira-user-password
mysql -uroot -p$ROOT_PASS -e "CREATE DATABASE $JIRA_DB_NAME CHARACTER SET utf8 COLLATE utf8_bin;"
mysql -uroot -p$ROOT_PASS -e "CREATE USER '$JIRA_USERNAME'@'localhost' IDENTIFIED BY '$JIRA_PASSWORD';"
mysql -uroot -p$ROOT_PASS -e "GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX on $JIRA_DB_NAME.* TO '$JIRA_USERNAME'@'localhost'; FLUSH PRIVILEGES;"

Java

Descargar Java 1.8, añadirlo al sistema a través del comando alternatives y establecer la nueva versión de Java como la versión por defecto del sistema.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
NEW_JAVA_PATH=/apps/java
alternatives --install /usr/bin/java java $NEW_JAVA_PATH/bin/java 120 \
--slave /usr/bin/javaws javaws $NEW_JAVA_PATH/bin/javaws \
--slave /usr/bin/policytool policytool $NEW_JAVA_PATH/bin/policytool \
--slave /usr/bin/keytool keytool $NEW_JAVA_PATH/bin/keytool \
--slave /usr/bin/orbd orbd $NEW_JAVA_PATH/bin/orbd \
--slave /usr/bin/pack200 pack200 $NEW_JAVA_PATH/bin/pack200 \
--slave /usr/bin/rmid rmid $NEW_JAVA_PATH/bin/rmid \
--slave /usr/bin/rmiregistry rmiregistry $NEW_JAVA_PATH/bin/rmiregistry \
--slave /usr/bin/servertool servertool $NEW_JAVA_PATH/bin/servertool \
--slave /usr/bin/tnameserv tnameserv $NEW_JAVA_PATH/bin/tnameserv \
--slave /usr/bin/unpack200 unpack200 $NEW_JAVA_PATH/bin/unpack200 \
--slave /usr/lib/jvm/jre jre $NEW_JAVA_PATH/ \
--slave /usr/lib/jvm-exports/jre jre_exports $NEW_JAVA_PATH
alternatives --set java $NEW_JAVA_PATH/bin/java

Más información:

Apache Tomcat

Instalar Tomcat

Descargar la última versión disponible de Tomcat 8.0.X desde la página oficial Tomcat 8 Software Downloads. Es importante tener en cuenta que Tomcat 8.5.X no esta soportado.

1
2
3
4
5
INSTALL_PROGRAMS_PATH=/apps/install
INSTALLED_PATH=/apps/
wget http://apache.rediris.es/tomcat/tomcat-8/v8.0.39/bin/apache-tomcat-8.0.39.zip
-O $INSTALL_PROGRAMS_PATH/apache-tomcat-8.0.39.zip
unzip $INSTALL_PROGRAMS_PATH/apache-tomcat-8.0.39.zip -d $INSTALLED_PATH

Crear el usuario jira y asignar permisos

Para evitar problemas de seguridad, es recomendable que los servicios se ejecuten como un usuario no privilegiado. Por este motivo se creará el usuario jira para correr Jira.

1
2
3
4
useradd --create-home --comment "Account for running Jira" --shell /bin/bash jira
chown jira.jira -R $INSTALLED_PATH/apache-tomcat-8.0.37/
chmod 774 $INSTALLED_PATH/apache-tomcat-8.0.39/bin/*.sh
ln -s $INSTALLED_PATH/apache-tomcat-8.0.39/ $INSTALLED_PATH/apache-tomcat

JDBC MySQL Connector/J

Descargar el Conector Java MySQL JDBC de MySQL: Download Connector/J. Posteriormente será necesario crear un enlace simbólico en la carpeta /lib/ del directorio de instalación de Jira.

1
2
3
4
5
6
INSTALL_PROGRAMS_PATH=/apps/install
INSTALLED_PATH=/apps/
wget
http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.40.zip -O $INSTALL_PROGRAMS_PATH/mysql-connector-java-5.1.40.zip
unzip $INSTALL_PROGRAMS_PATH/mysql-connector-java-5.1.40.zip -d $INSTALLED_PATH
chown jira.jira -R $INSTALLED_PATH/mysql-connector-java-5.1.40/

Más información:

Jira

Instalación de Jira

Puede descargar la última versión de JIRA Software desde Update JIRA Software Server, en la fecha de publicación de este post la última versión es la 7.2.7.

1
2
3
4
5
6
7
8
INSTALL_PROGRAMS_PATH=/apps/install
INSTALLED_PATH=/apps
wget
https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-7.2.7.tar.gz -O $INSTALL_PROGRAMS_PATH/atlassian-jira-software-7.2.7.tar.gz
tar -xzf $INSTALL_PROGRAMS_PATH/atlassian-jira-software-7.2.7.tar.gz -C $INSTALLED_PATH
chown jira.jira -R $INSTALLED_PATH/atlassian-jira-software-7.2.7-standalone
chmod 774 $INSTALLED_PATH/atlassian-jira-software-7.2.7-standalone/bin/*.sh
ln -s $INSTALLED_PATH/atlassian-jira-software-7.2.7-standalone/ $INSTALLED_PATH/jira

Instalar el conector MySQL

1
ln -s /apps/mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar /apps/jira/lib/

Configuración de Jira

Configurar Java heap

El heap es el espacio de memoria que se usa para almacenar los objetos Java (instancias de clases, objetos y arrays); y su tamaño tiene un impacto directo en el rendimiento de la máquina virtual de Java (JVM) y en la aplicación Java.

El heap se reserva al inicio de JVM, es gestionado por el Gargabe Collector (recolector de basura) y se define a través de los parámetros:

  • Xms, define el tamaño mínimo, ejemplo -Xms512M.
  • Xmx, define el tamaño máximo, ejemplo -Xmx2G.

A continuación un pequeño código bash para ajustar el tamaño mínimo de memoria en 512M y el máximo en 2G:

1
2
3
JIRA_SETENV=/apps/atlassian-jira-software-7.2.7-standalone/bin/setenv.sh
sed -i 's|JVM_MINIMUM_MEMORY="384m"|JVM_MINIMUM_MEMORY="512m"|' $JIRA_SETENV
sed -i 's|JVM_MAXIMUM_MEMORY="768m"|JVM_MAXIMUM_MEMORY="2g"|' $JIRA_SETENV

Más información:

Crear el servicio en systemd

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
JIRA_PIDFILE=/apps/jira/work
JIRA_BIN=/apps/jira/bin
JIRA_HOME=/apps/jira-home
JIRA_USER=jira
mkdir -p $JIRA_HOME
chown jira.jira $JIRA_HOME
chmod 775 $JIRA_HOME
cat <<EOF>/etc/systemd/system/jira.service
[Unit]
Description=Jira Issue & Project Tracking Software
After=network.target
[Service]
Type=forking
User=jira
Environment="JIRA_HOME=$JIRA_HOME"
PIDFile=$JIRA_PIDFILE/catalina.pid
ExecStart=$JIRA_BIN/start-jira.sh
ExecStop=$JIRA_BIN/stop-jira.sh
[Install]
WantedBy=multi-user.target
EOF

Iniciar Jira y finalizar la instalación a través del asistente web

1
systemctl start jira

Entradas de interés

Contenidos
  1. 1. Dependencias
    1. 1.1. MySQL
      1. 1.1.1. Instalar MySQL
      2. 1.1.2. Configurar MySQL
      3. 1.1.3. Crear la base de datos, el usuario y asignar permisos
    2. 1.2. Java
    3. 1.3. Apache Tomcat
      1. 1.3.1. Instalar Tomcat
      2. 1.3.2. Crear el usuario jira y asignar permisos
    4. 1.4. JDBC MySQL Connector/J
  2. 2. Jira
    1. 2.1. Instalación de Jira
    2. 2.2. Instalar el conector MySQL
    3. 2.3. Configuración de Jira
      1. 2.3.1. Configurar Java heap
      2. 2.3.2. Crear el servicio en systemd
      3. 2.3.3. Iniciar Jira y finalizar la instalación a través del asistente web