Instalar Jira tras nginx en un subdominio (Debian 7)

Bueno, digo debian pero bien vale cualquier distribución basada en ésta.

Hace ya algún tiempo se publicó en este blog un post largo y detallado sobre como instalar Confluence. Desde entonces la instalación ha cambiado MUCHO. De hecho, ayer instalé un Jira y un Confluence ejecutando directamente el fichero descargado (marvelous!).

La receta es la siguiente. Lo primero, vamos a suponer que poseemos un dominio (megacorp.com) y hemos apuntado el subdominio (jira.megacorp.com) a una máquina con un Debian recién instalado. Lo primero que debemos hacer es instalar un gestor de bases de datos (en nuestro caso MySQL), nginx y la máquina virtual de Java, así que como root ejecutaremos lo siguiente:

apt-get install openjdk-6-jre nginx-full mysql-server

Una vez instalados los paquetes, crearemos una base de datos para nuestro Jira con su propio usuario para que no haya problemas. Para ello, entraremos en la consola de MySQL (mysql -u root -p) y ejecutaremos los siguientes comandos:

CREATE DATABASE jira CHARACTER SET UTF8 COLLATE utf8_unicode_ci;
GRANT ALL on jira.* TO 'jira_user'@'localhost' IDENTIFIED BY 'powerpass';
FLUSH PRIVILEGES;
EXIT

Y la base de datos ya está. Ahora pasaremos a instalar Jira propiamente dicho. Para ello descargaremos la última versión (en nuestro caso la versión de 64 bits para Linux) y lo ejecutaremos, instalándolo como servicio para que, cuando se reinicie la máquina, se inicie también Jira.

$ wget http://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-6.2-x64.bin
$ chmod u+x atlassian-jira-6.2-x64.bin
$ ./atlassian-jira-6.2-x64.bin

En el proceso, lo suyo es elegir las opciones que más nos convengan. Una vez finalizado, como hemos usado MySQL como gestor de bases de datos, deberemos bajarnos el driver de MySQL (que no viene incluido por temas de licencias en el paquete de Jira). Para ello, wget te elijo a ti!

$ wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.29.tar.gz
$ tar -zxvf mysql-connector-java-5.1.29.tar.gz
$ cp mysql-connector-java-5.1.29/mysql-connector-java-5.1.29-bin.jar /opt/atlassian/jira/atlassian-jira/WEB-INF/lib/

En este momento tenemos corriendo Jira en el puerto 8080 (si no hemos cambiado nada en la instalación). Ahora, lo que queremos es ponerlo bajo nuestro subdominio. Aquí es donde entra nginx al rescate. Primero crearemos un nuevo fichero de configuración:

$ touch /etc/nginx/sites-available/jira
$ ln -s /etc/nginx/sites-available/jira /etc/nginx/sites-enabled/jira

Y en él escribiremos la siguiente configuración:

server {
	listen 80;
	server_name jira.megacorp.com;

	location / {
		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;
		proxy_pass http://localhost:8080/;
		proxy_redirect off;
	}
}

Sólo nos queda un último cambio, esta vez en la configuración del servidor Tomcat que viene empotrado en Jira. Para ello, abriremos el fichero server.xml, el cual se encontrará en la ruta /opt/atlassian/jira/conf/server.xml si se ha elegido el valor por defecto y cambiaremos el conector del puerto 80 para que tenga este aspecto:

<connector port="8080"
           maxThreads="150"
           minSpareThreads="25"
           connectionTimeout="20000"
           scheme="http" proxyName="jira.megacorp.com" proxyPort="80"
           enableLookups="false"
           maxHttpHeaderSize="8192"
           protocol="HTTP/1.1"
           useBodyEncodingForURI="true"
           redirectPort="8443"
           acceptCount="100"
           disableUploadTimeout="true">
</connector>

Realmente ha sido modificado únicamente con la línea scheme="http" proxyName="jira.megacorp.com" proxyPort="80". De hecho, en la propia definición del conector viene una línea vacía en el lugar donde la hemos instalado nosotros.

Para terminar, reiniciaremos Jira y nginx para que hagan efecto los cambios realizados de la siguiente forma:

$ service jira stop && service jira start
$ service nginx restart

Y arreando. Si accedemos con el navegador a la url jira.megacorp.com tendremos el menú para instalar Jira. Es un wizard fácil y bien explicado. Destacar que al seleccionar la base de datos, deberemos especificar el usuario y la contraseña que hemos usado antes (en nuestro caso jira_user< code> y powerpass) y, muy importante, la cadena useUnicode=true&characterEncoding=utf8 en la query de conexión.

Espero que os vaya bien. Cualquier duda, ya sabéis, a comentar!

Por cierto! En el post de que antes enlacé, David Bonilla me apuntó que no era necesario instalar una JDK para correr Jira o Confluence. Por eso en este caso he instalado la jre. Sin embargo, en aquel entonces la máquina donde instalaba el confluence también llevaba un Jira y un Bamboo. Este último se encargaba de la integración continua de los proyectos con los que trabajábamos, principalmente con Java, y a la hora de lanzar una tarea, o teníamos el JDK o nos fallaba. Sólo quería dejaros la nota por si acaso. Más saludos!

1 opinión en “Instalar Jira tras nginx en un subdominio (Debian 7)”

  1. Enhorabuena por el tutorial, esta muy completo y me sirvio de maravilla. Solo tengo una duda, ahora lo que quiero hacer es que cuando entren a http lo redirija a https, es decir cuando entre a:

    http://jira.megacorp.com me dirija a https://jira.megacorp.com

    Nota: Ya tengo instalado mi certificado en el servidor y ya me responden en ambos protocolos. Solo quiero hacer la redirección automática.

    Quedo atento a tus comentarios,
    Saludos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *