JIRA is now available as three separate applications, JIRA Software, JIRA Service Desk, and JIRA Core. For more information on administering these applications, refer to the Administering JIRA Applications documentation.

# Installing JIRA from an Archive File on Windows, Linux or Solaris

If you're upgrading to JIRA 7.0, you should consult the Migration hub. JIRA 7.0 contains functionality that affects your user management, application access and log in permissions, and it's very important that you understand the requirements and the implications before you upgrade. The Migration hub has all this information in one handy space.

To install JIRA on Windows from a 'zip' archive file or Linux/Solaris from a 'tar.gz' archive file, follow the instructions on this page.

## Before you begin

• We strongly recommend that you install the latest production version available. If you install an older version of JIRA, it may contain security vulnerabilities that were patched or fixed in subsequent versions. If you have to install an older version, check if there are any security advisories that apply to the version.
• Please ensure that you have installed Java and set JAVA_HOME. Also refer to the Supported Platforms page for details about which Java (as well as other) platforms are supported by JIRA.
• Note, Linux distributions frequently have an open-source implementation of Java called GCJ installed. Do not use this Java platform — it is incomplete and JIRA will not run successfully on it.

After selecting the appropriate operating system tab on the 'JIRA download' page, you may need to click the 'Show all' link to access the required installation package.
On Windows, we recommend using a file extraction tool such as 7-Zip.
On Solaris, use GNU tar to extract JIRA instead of the Solaris' default tar utility as GNU tar handles long filenames better.

## 2. Set the JIRA Home Directory in JIRA

To set this, do one of the following:

• Edit the jira-application.properties file and set the value of the 'jira.home' property to the desired location for your JIRA Home Directory (this location should be something different than the application directory, or you may run into problems later). If you are specifying this location's path on Windows, use double back-slashes ("\") between subdirectories. For example, X:\\path\\to\\JIRA\‌\Home.
If you define an UNC path in Microsoft Windows, be sure to double escape the leading backslash: \\\\machinename\\path\\to\\JIRA\\home
See the JIRA Installation Directory page to find where this file is located.
• Set an environment variable named JIRA_HOME in your operating system whose value is the location of your JIRA Home Directory. To do this:
• On Windows, do one of the following:
• Configure this environment variable through the Windows user interface (typically through 'My Computer' or 'Computer')
• At the command prompt, enter the following command (with your own JIRA Home path) before running JIRA from the command prompt:
• set JIRA_HOME=X:\path\to\JIRA\Home
Please set your JIRA_HOME  environment variable value using this format, where:
• X is the drive letter where your JIRA Home Directory is located and
• no spacing has been added around the equal sign ('=')
• Specify the command above in a batch file used to start JIRA.
• On Linux/Solaris, do one of the following:
• Enter the following command at a shell/console prompt (with your own JIRA Home path) before running JIRA:
• export JIRA_HOME=/path/to/jira/home
• Specify the command above in a script used to start JIRA.

You can specify any location on a disk for your JIRA home directory. Please be sure to specify an absolute path.

Please note that you cannot use the same JIRA home directory for multiple instances of JIRA. We recommend locating your JIRA Home Directory completely independently of the JIRA Installation Directory (i.e. not nesting one within the other) as this will minimize information being lost during major operations (e.g. backing up and restoring instances).

## 3. Create a Dedicated User Account on the Operating System to Run JIRA

This step is optional if you are evaluating JIRA but should be mandatory for JIRA installations used in production.

A dedicated user should be created to run JIRA, as JIRA runs as the user it is invoked under and therefore can potentially be abused. For example:

• If your operating system is *nix-based (for example, Linux or Solaris), type the following in a console:
$sudo /usr/sbin/useradd --create-home --comment "Account for running JIRA" --shell /bin/bash jira • If your operating system is Windows: 1. Create the dedicated user account by either: • Typing the following at the Windows command line: > net user jira mypassword /add /comment:"Account for running JIRA" (This creates a user account with user name 'jira' and password 'mypassword'. You should choose your own password.) • Opening the Windows 'Computer Management' console to add your 'jira' user with its own password. 2. (Optional) Use the Windows 'Computer Management' console to remove the 'jira' user's membership of all unnecessary Windows groups, such as the default 'Users' group. If Windows is operating under a Microsoft Active Directory, ask your Active Directory administrator to create your 'jira' account (with no prior privileges). Ensure that only the following directories can be written to by this dedicated user account (e.g. 'jira'): Do not make the JIRA Installation Directory itself writeable by the dedicated user account. See also Tomcat security best practices. ## 4. Start JIRA Enter the bin subdirectory of your JIRA installation directory and execute the appropriate file to start running JIRA: • start-jira.sh (on Linux/Solaris) • start-jira.bat (on Windows) To run JIRA as the dedicated user account (e.g. 'jira') created above: • On Windows, use the runas command to run start-jira.bat. For example, runas /env /user:<DOMAIN>\jira start-jira.bat (where <DOMAIN> is your Windows domain or computer name.) • On Linux, switch to the 'jira' account using the su command before running start-jira.sh (or use su to run start-jira.sh as the 'jira' account). Wait until the following message appears in the application's log file: You can access JIRA from any computer with network access to your JIRA server by opening a supported web browser on the computer and visiting this URL: • http://<computer_name_or_IP_address>:<HTTP_port_number> where: • <computer_name_or_IP_address> is the name or IP address of the computer on which JIRA is installed and • <HTTP_port_number> is the HTTP port number (8080 by default). If JIRA does not appear in your web browser, you may need to change the port that JIRA runs on. Logs will be written to logs/catalina.out. If something goes wrong, please verify that Java is installed correctly. If the problem persists, please contact us — we're happy to help. ## 5. Run the Setup Wizard ## Next Steps Was this helpful? Thanks for your feedback! ##### Why was this unhelpful? ### 10 Archived comments 1. Troy Murray Just to make sure I understand this correctly. So for step #3, when it states "Ensure that only the following directories can be written to by this dedicated user account (e.g. 'jira')". Assuming the following: • JIRA installation is /usr/local/jira • JIRA home is /var/jira-data • dedicated account is 'jira' Based on this, I'd execute the following commands to setup the permissions as you outline: 16 Jun 2011 2. Anonymous It should be noted that JIRA will not start on Java 1.7.0 currently. The following exception occurs: ERROR [atlassian.plugin.manager.PluginEnabler] Unable to enable plugin com.atlassian.sal.JIRA java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.Comparable Java 1.6.0 is supposed to work fine, still. 03 Jun 2012 1. Giles Gaskell Hi there, That's correct — our Supported Platforms page indicates what versions of Java are supported by JIRA (along with other supported platforms that JIRA depends on or works with). I'll add a link to this page in the documentation above. Cheers, Giles. 04 Jun 2012 3. Anonymous To execute the jira should I log in as user jira? 13 Jul 2012 1. Giles Gaskell If you performed step 3 (above) then the answer is yes. How one does this is covered in step 4 (above) under: To run JIRA as the dedicated user account (e.g. 'jira') ... Please let me know if the instructions above are not clear about this. 16 Jul 2012 1. Anonymous Thanks for responding, my English is simple, so it was not so clear the issue. I am conducting tests in the organization in which work and soon we will require a license. Thank you. 16 Jul 2012 4. Anonymous Why do we introduce an environment variable named JIRA_HOME in step 2? This makes very difficult to run multiple versions of JIRA under one user account. 22 May 2013 1. Jason McIntee You don't have to use the environment variable. You can specify the location in the jira-application.properties file. 14 Jun 2013 5. sahil89 Read only permission only for JIRA or entire system? 12 Apr 2014 6. Steven Varco I've created a more advanced init-script for redhat (centos) systems which supports status and extened proccess handling: 1. chkconfig: - 80 05 2. description: JIRA 3. author: Steven Varco 4. pidfile: /var/run/jira.pid 1. source functions library . /etc/init.d/functions APP_NAME=jira # Name of the application (will be excecuted!) APP_DESC="JIRA bugtracker" # Short description APP_PIDFILE=/opt/jira/prod/work/catalina.pid # PID file APP_DEFAULT=/etc/default/$APP_NAME # Default conf file (sourced)
#APP_CONFIG="" # Config file

1. source the configfile
if [ -f $APP_DEFAULT ]; then .$APP_DEFAULT
fi

if [ -z "$APP_USER" ]; then APP_USER="jira" fi if [ -z "$APP_BASEPATH" ]; then
APP_BASEPATH="/opt/jira/prod"
fi

if [ -z "$JAVA_HOME" ]; then JAVA_HOME="/opt/java/7" fi export JAVA_HOME case "$1" in
start)
echo -n "Starting $APP_NAME..." #check in the proccess desc APP_PID=$(pgrep -f 'standalone=JIRA')
if [ "$APP_PID" != "" ] ; then echo "proccess seems to be already running as:$APP_PID"
echo_failure
exit 1
else

1. Start functions
$(which runuser) -l$APP_USER $APP_BASEPATH/bin/startup.sh >$APP_BASEPATH/logs/startup.log 2>&1
1. Output OK or FAIL
RETVAL=$? if [$RETVAL -eq 0 ]; then
echo_success
else
echo_failure
fi
fi
;;

stop)
echo "Stopping $APP_NAME..." 1. Stop functions if [ -f$APP_PIDFILE ] ; then
$(which runuser) -l$APP_USER $APP_BASEPATH/bin/shutdown.sh >$APP_BASEPATH/logs/shutdown.log 2>&1
1. Output OK or FAIL
RETVAL=$? if [$RETVAL -eq 0 ]; then
echo_success
else
echo_failure
fi
else
2. check in the proccess desc
APP_PID=$(pgrep -f 'standalone=JIRA') if [ "$APP_PID" -gt "1" ] ; then
echo -e "PID-File ($APP_PIDFILE) not found, but$APP_NAME seems to be running!\nPlease try: kill $APP_PID" echo_warning else echo "$APP_NAME is not running"
fi
fi
;;

restart)
$0 stop && sleep 5 &&$0 start || return=$0 ;; status) if [ -f "$APP_PIDFILE" ] ; then
PID=$(cat$APP_PIDFILE)
PSPID=$(ps -p$PID -o comm=)
if [ -n "$PSPID" ]; then echo "$APP_NAME is running as PID: $PID and command:$PSPID !"
echo_success
echo
else
echo "$APP_NAME dead but pid file exists!" echo_warning echo fi else #check in the proccess desc APP_PID=$(pgrep -f 'standalone=JIRA')
if [ "$APP_PID" != "" ] ; then echo "PID-File removed, but proccess is running as:$APP_PID !"
echo_warning
echo
else
echo "$APP_NAME is not running" fi fi exit$RETVAL
;;

*)
echo "Usage: \$0

Unknown macro: {start|stop|restart|status}

"
exit 1
esac

08 Jul 2014