Geek stuff, Linux, Tutorials

Installing Jira with MySQL

Jira is an extremely well-known issue tracking system and is used widely for project management in a wide array of fields. It has quite a detailed documentation but it’s in the form of a wiki and as we all know, wikis are the worst way of creating software documentation. Anyway, in order to install Jira with MySQL, you will have to click and click and click. This tutorial aims to ease this issue by providing step-by-step instructions on how to install jira and enable it to connect with MySQL for storage. So let’s begin.

Note: These instructions are for the standalone version of Jira. You can use them quite easily for the WAR/EAR version but if you’re going on that route, you probably don’t need this article.

Ok, first download and install Java (I usually go with JDK) — version 6 is preferred. You can get the .bin file for Linux from java.sun.com (I refuse to call it Oracle Java). Make it executable and run it. JDK will be extracted in your current directory. Move it to /usr/share. Then set the JAVA_HOME variable.

 
JAVA_HOME=/usr/share/jdk1.6.0_23
export JAVA_HOME

You might want to set this in your ~/.bash_profile file.

Next, create a user with which we will start jira — for security reasons.

 
sudo /usr/sbin/useradd --create-home --home-dir /usr/local/jira --shell /bin/bash jira

Download and extract the jira standalone .tar.gz file to /usr/local/jira and change ownership of all the files to the jira user:

 
chown jira:jira /usr/local/jira -R

Open port 8080 which is used by jira (by default) — edit the file /etc/sysconfig/iptables and enter the following rule:

 
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

Set the required jira.home property in the file /usr/local/jira/atlassian-jira/WEB-INF/classes/jira-application.properties

 
mkdir /usr/local/jira/jirahome
vi /usr/local/jira/atlassian-jira/WEB-INF/classes/jira-application.properties
# set the variable jira.home to /usr/local/jira/jirahome

Restart the firewall and start jira using the following command:

 
sudo -u jira nohup /usr/local/jira/bin/catalina.sh run & > jira-nohup.log

The use of sudo will run jira as the user jira and nohup will ensure that jira won’t stop running as soon as you close the shell. The output produced by the command will be saved to jira-nohup.log

Open the browser on location http://your.ip.add.ress:8080/ and ensure that you can see the jira setup page. Don’t bother proceeding with the setup because as soon as we connect jira to MySQL, this information will be lost. Let’s do that now.

Connecting with MySQL

Begin by stopping jira, installing mysql server, setting it to always start on system startup and starting the server.

 
/usr/local/jira/bin/shutdown.sh 
yum install mysql mysql-server 
chkconfig mysql on 
service mysqld start 

Then start mysql, create a database and user for jira and assign all rights to the new user on the new database.

 
mysql 
create database jiradb character set utf8;
grant all privileges on jiradb.* to jira@localhost identified by '[your new password]';
q 

Now, edit the conf/server.xml in the jira directory and change the data source as follows:

 
<Resource name="jdbc/JiraDS" auth="Container" type="javax.sql.DataSource"
            username="jira"
            password="[jira user password]"
            driverClassName="com.mysql.jdbc.Driver"
            url="jdbc:mysql://localhost/jiradb?useUnicode=true&amp;characterEncoding=UTF8"
            maxActive="20"
            validationQuery="select 1"/>

Note that the ampersand code in the connection string is not a formatting problem. It really has to say amp with an ampersand and a semicolon at either end.

Finally, edit the atlassian-jira/WEB-INF/classes/entityengine.xml file to set the final attribute:

 
<datasource name="defaultDS" field-type-name="mysql"
      helper-class="org.ofbiz.core.entity.GenericHelperDAO"
      check-on-start="true"
      use-foreign-keys="false" ...

Delete the schema-name="PUBLIC" attribute immediately after the changed line to ensure that the database is populated properly.

Start jira once again and now you can enter the setup information. Open MySQL and ensure that jira is, in fact, using this engine.

Advertisements

3 thoughts on “Installing Jira with MySQL”

  1. Hi Recluze,

    I’ve gone through your tutorial and Jira won’t start for me. I get:
    Caused by: java.sql.SQLException: Access denied for user ‘jira’@’localhost’ (using password: YES)

    Also, grant all privileges on jiradb.* to jira@localhost identified by ‘[your new password]’; didn’t work for me, it said syntax is wrong, so I did grant all privileges on jiradb.* to jira@localhost with grant option;
    When I do show grants for jira@localhost; it shows that it has all privileges, but I still get an error, running “./catalina.sh run”

    Any helps would be appreciated.

    Thank you,

    Vlad

    1. Hi Vlad,

      Have you tried connecting with the jira user using the command prompt? See if that works. This has nothing to do with jira. You should try reading up on grant here (in case you haven’t): http://dev.mysql.com/doc/refman/5.1/en/grant.html and make sure you’re providing the correct password in the configuration file. If not, try pasting the configuration files in pastebin.com and put the link here. I’ll take a look at it as soon as I get time.

Comments are closed.