Instalar Atlassian JIRA con Oracle 10g

De Wikillano

Contenido

Nos bajamos la última versión de JIRA:

download Jira -> [1]

Yo me bajo la versión WAR/EAR, la diferencia entre esta y la standalone es que no lleva el tomcat ya instalado. La standalone es un paquete que lo lleva todo.


  • La descomprimimos donde queramos en mi caso:
/opt/atlassian-jira-enterprise-3.13.2/
  • Modificamos el siguiente fichero entityengine.xml (datasource)
/opt/atlassian-jira-enterprise-3.13.2/webapp/WEB-INF/classes/entityengine.xml
<datasource name="defaultDS" field-type-name="oracle10g"
     helper-class="org.ofbiz.core.entity.GenericHelperDAO"
     check-on-start="true"
     use-foreign-keys="false"
     use-foreign-key-indices="false"
     check-fks-on-start="false"
     check-fk-indices-on-start="false"
     add-missing-on-start="true"
     check-indices-on-start="true">
       <jndi-jdbc jndi-server-name="default" jndi-name="java:comp/env/jdbc/JiraDS"/>

importante añadir oracle10g

eliminar la linea:

schema-name="PUBLIC"

Construir Jira

Esta parte no se si es realmente necesaria, ya que no voy a utilizar el fichero WAR que se crear cuando compilamos JIRA.

de todas maneras al construirlo nos genera el fichero jira.xml que luego pondremos en tomcat.

ejecutar en la raiz del software de jira

./build.sh 

Esto nos dejará en $JIRA_HOME/dist-tomcat el WAR, aunque yo no lo voy a utilizar, ya que no quiero desplegar la aplicación cada vez. yo utilizare el directorio webapp que tenemos en /opt/atlassian-jira-enterprise-3.13.2/

Actualizar librerias de Tomcat

Necesitamos algunas librerias para que jira funcione, para ello tenemos que bajarnos este paquete [2] y descomprimirlo en common/lib de tomcat

Crear la tablespace en Oracle

La versión de oracle que estoy utilizando es la 12.2.0.4 con el driver de la misma versión.

El driver lo debemos colocar en /common/lib de tomcat el nombre del driver es ojdbc14.jar para todas las versiones se llama igual.

para crear el tablespace he ejecutado el siguiente script en Oracle

-- creacio del tablespace

CREATE TABLESPACE jira_ts
 DATAFILE
   '/data/oradata/ravel/jira_ts_01.dbf' SIZE 200M AUTOEXTEND OFF
 DEFAULT STORAGE (
   INITIAL 100k
   NEXT 100k
   PCTINCREASE 0);

-- creacio de l'usuari

CREATE USER jirauser
 IDENTIFIED BY "password"
 DEFAULT TABLESPACE jira_ts
 TEMPORARY TABLESPACE temp
 PROFILE DEFAULT;

-- premisos basics de l'usuari

GRANT CONNECT TO jirauser;
GRANT RESOURCE TO jirauser;
GRANT CREATE VIEW TO jirauser;
GRANT CREATE JOB TO jirauser;
 
-- nomes pot crear objectes en el tablespace jira_ts

REVOKE UNLIMITED TABLESPACE FROM jirauser;
ALTER USER jirauser QUOTA UNLIMITED ON jira_ts;

-- permisos utils per desenvolupament

GRANT SELECT_CATALOG_ROLE TO jirauser;
GRANT DEBUG CONNECT SESSION TO jirauser;
GRANT DEBUG ANY PROCEDURE TO jirauser;

Configurar contexto Jira en tomcat

copiamos el fichero jira.xml que lo encontramos en /opt/atlassian-jira-enterprise-3.13.2/dist-tomcat/tomcat-5/jira.xml a $JIRA_HOME/dist-tomcat/tomcat-5/jira.xml

si no encontramos el directorio dist-tomcat es que no contruimos jira, de todas maneras aquí dejo el contenido de mi jira.xml.

<Context path="/jira" docBase="/opt/atlassian-jira-enterprise-3.13.2/webapp" debug="0">
 <Resource name="jdbc/JiraDS" auth="Container" type="javax.sql.DataSource"/>
 <ResourceParams name="jdbc/JiraDS">
   <parameter>
     <name>driverClassName</name>
     <value>oracle.jdbc.driver.OracleDriver</value>
   </parameter>
   <parameter>
     <name>url</name>
     <value>jdbc:oracle:thin:@172.24.49.58:1521:RAVEL</value>
   </parameter>
   <parameter>
     <name>username</name>
     <value>jirauser</value>
   </parameter>
   <parameter>
     <name>password</name>
     <value>jirauserpass</value>
   </parameter>
    <parameter>
     <name>factory</name>
     <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
   </parameter>
   <parameter>
    <name>connectionProperties</name>
    <value>SetBigStringTryClob=true</value>
   </parameter>
 </ResourceParams>

 <Resource name="UserTransaction" auth="Container" type="javax.transaction.UserTransaction"/>
 <ResourceParams name="UserTransaction">
   <parameter>
     <name>factory</name>
     <value>org.objectweb.jotm.UserTransactionFactory</value>
   </parameter>
   <parameter>
     <name>jotm.timeout</name>
     <value>60</value>
   </parameter>
 </ResourceParams>
</Context>

en negrita:

  • docBase
    • Aquí debemos poner la ruta hacia la aplicación, si hubieramos utilizado el despliege por WAR pondriamos la ruta hacia el WAR
  • oracle.jdbc.driver.OracleDriver
    • tipo de driver que utilizamos concretamente para Oracle
  • jdbc:oracle:thin:@172.24.49.58:1521:RAVEL
    • Url de conexión a la base de datos RAVEL es la INSTANCIA (ORACLE_SID)
  • SetBigStringTryClob
    • which is needed to store unlimited-text fields in Oracle. Without this, Oracle will only store strings up to 32K bytes in size.

Si copiamos el jira.xml creado a partir del build.sh deberemos tener en cuenta:

If you are not using hsqldb, make sure you comment out the minEvictableIdleTimeMillis and timeBetweenEvictionRunsMillis params, or JIRA will run slower than normal.

Arrancar Tomcat

Ya podemos arrancar tomcat5

Deberemos revisar los logs de tomcat para ver los posibles errores de arranque de jira, los logs estan en:

/usr/share/tomcat5/logs/catalina.out

La url de acceso al Jira es

http://localhost:8080/jira

Problemas encontrados

Al arrancar jira me encuentro entre los logs que no puede encontrar el driver de oracle para conectarse a la base de datos.

Cannot create JDBC driver of class  for connect URL 'null'

Resulta que en las versiones tomcat 5.0 el fichero donde declaramos el contexto, en este caso jira.xml debe de estar estructurado con las etiquetas <parameter></parameter>, en versiones más modernas se declara de la siguiente manera:

<Resource name="jdbc/JiraDS" auth="Container" type="javax.sql.DataSource"
     username="[enter db username]"
     password="[enter db password]"
     driverClassName="oracle.jdbc.driver.OracleDriver"
     url="jdbc:oracle:thin:@localhost:1521:jiradb"
     connectionProperties="SetBigStringTryClob=true"
     maxActive="20"/>

En cambio para tomcat 5.0

   <parameter>
     <name>driverClassName</name>
     <value>oracle.jdbc.driver.OracleDriver</value>
   </parameter>
   <parameter>
     <name>url</name>
     <value>jdbc:oracle:thin:@172.24.49.58:1521:RAVEL</value>
   </parameter>
   <parameter>
     <name>username</name>
     <value>jirauser</value>
   </parameter>
   <parameter>
     <name>password</name>
     <value>jirauserpass</value>
   </parameter>
... etc

al cambiar el fichero la conexión con oracle funcionó sin problemas.


Archivo:jira.png

Herramientas personales