Requirements

Atlassian

See https://confluence.atlassian.com/display/JIRA/JIRA+Requirements for newest requirements

OS and Hardware Settings

Virtual: Why not - the benefist are huge

Preferred OS: Ubuntu LTS 64-bit

Hardware: At least 2 CPU's and at least 3 GB Ram


Mysql Settings

Preferred Database: MySQL (or Postgres)

Settings for MySQL (ref: MySQL)

my.cnf
[mysqld]
#transaction-isolation = READ-COMMITTED (Seems obsolete with binlog_format=row)
log-bin=mysql-bin
binlog_format=row
default-table-type=innodb
default-storage-engine=innodb
max_allowed_packet=64M

[mysql]
default-character-set=utf8

On large installations or where indexes are huge, changing innodb_lock_wait_timeout can be an option (Ref: JIRAKB)

my.cnf
[mysqld]
innodb_lock_wait_timeout = 300


Mail

SMTP Access for sending mail

IMAP Access for picking up mail


Installation

Prepare database

Create the Database

mysql> CREATE DATABASE jira CHARACTER SET utf8 COLLATE utf8_bin;
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX on jira.* to jira@localhost identified by '*******';
Query OK, 0 rows affected (0.00 sec)


Install binaries

Download JIRA from http://www.atlassian.com/software/jira/download

Download the MySQL JDBC from http://dev.mysql.com/downloads/connector/j/

For the binary installer, JAVA is integrated, for EAR or WAR files this must be downloaded and installed separately.

sh ./atlassian-jira-6.1.5-x64.bin

Follow the required steps (remember path to JIRA_Install and JIRA_Home) and connect to the tomcat instance started

Configuration should (if possible) be done directly at the host:8080 - going through a proxy or trafficmanager add a risk that pages time out, leaving the JIRA server (and the client) in an unknown state


Postinstall

This is where the tweaking comes into place, to avoid common problems:


setenv.sh

This file is found in the JIRA_Install/bin

Add support for UTF-8 File system by adding -Dfile.encoding=UTF-8 to the JAVA_OPTS:

JAVA_OPTS="-Xms1024m -Xmx1024m -XX:MaxPermSize=512m $JAVA_OPTS -Djava.awt.headless=true -XX:NewSize=512m -Dfile.encoding=UTF-8"
export JAVA_OPTS


server.xml

This file is found in JIRA_Install/conf

Binding to a fixed IP Address, add the address= to the connector. Also the port= can be changed (Under Linux only root can bind to 0-1023):

<Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="8080" address="10.0.0.10" minProcessors="5"
                   maxProcessors="75"
                   enableLookups="false" redirectPort="8443" acceptCount="10" debug="0" connectionTimeout="20000"
                   useURIValidationHack="false" />

To secure correct UTF-8 Handling, add URIEncoding="UTF-8" to the connector:

<Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="8080" address="10.0.0.10" minProcessors="5"
                   maxProcessors="75"
                   enableLookups="false" redirectPort="8443" acceptCount="10" debug="0" connectionTimeout="20000"
                   useURIValidationHack="false" URIEncoding="UTF-8" />

If behind a traffic Manager or Apache Proxy, add scheme=, proxyName= and proxyPort to the context (See Apache2 Proxy Passing or Proxy Passing section belov):

<Context path="" docBase="../confluence" debug="0" reloadable="false" useHttpOnly="true" scheme="https" proxyName="jira.example.com" proxyPort="443">

If the JIRA instance need to run below root /, change the path= parameter:

<Context path="/jira" docBase="../confluence" debug="0" reloadable="false" useHttpOnly="true" allowLinking="true">

Other

Proxy passing

There are good reasons for using an Apache or Traffic Manager in front of the Confluence Installation, some are:

  • No port changing (non-root users can assign to ports below 1024)
  • Use of URL Rewrite
  • Use of URL Blocking
  • Use of Allow/Denial 
  • SSL offloading/handling outside the Confluence

Se my example in Apache2 Proxy Passing

Time And Date Setup

Time and Date should be set up 2 places according to 

https://confluence.atlassian.com/display/JIRA/Customizing+the+Look+and+Feel

https://confluence.atlassian.com/display/JIRA/Advanced+JIRA+Configuration

My formats for danish is:

Time Format                             HH:mm
Day Format                              dd-MM-yyyy
Complete Date/Time Format               dd-MM-yyyy HH:mm
Day/Month/Year Format                   dd-MM-yyyy
 
jira.date.picker.java.format            dd-MM-yyyy
jira.date.picker.javascript.format      %d-%m-%Y
jira.date.time.picker.java.format       dd-MM-yyyy HH:mm
jira.date.time.picker.javascript.format %d-%m-%Y %H:%M

Performace inprovement

For setenv.sh (Reference: https://answers.atlassian.com/questions/327828/tomcat-uses-100-cpu-after-jira-upgrade)

-Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true
-Dmail.mime.decodeparameters=true


Logfiles

Logrotate

Set up logrotate to avoid ever growing catalina.out log file. Here JIRA_Home is /opt/jira, logs are rotated daily and kept for 7 days:

/etc/logrotate.d/confluence
/opt/jira/logs/catalina.out {
    daily
    rotate 7 
    compress
    copytruncate
    delaycompress
    missingok
    size 10M
    notifempty
}