Added on Jun 17th, 2012 and marked as install youtrack

To run YouTrack it is necessary to have Java enabled, so make sure it is installed. To install Java:

apt-get install openjdk-7-jre

or

apt-get install openjdk-7-jre-headless

to install a headless version of OpenJDK (the latter is probably preferred).

Go and download YouTrack and follow the instructions on the website.

To start YouTrack simply use the following command:

java -Xmx256m -jar /path/to/youtrack-<version>.jar <port> > /dev/null 2>&1

Select a free port for YouTrack to run on (for example 8112).

Add youtrack user

It’s not a good idea to let YouTrack run under root, so let’s create a new user:

adduser --disabled-login --gecos 'youtrack issue tracker' youtrack

Create the file /etc/init.d/youtrack:

#! /bin/sh
### BEGIN INIT INFO
# Provides:          youtrack
# Required-Start:    $local_fs $remote_fs
# Required-Stop:     $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      S 0 1 6
# Short-Description: initscript for youtrack
# Description:       initscript for youtrack
### END INIT INFO

export HOME=/home/youtrack

set -e

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=youtrack
SCRIPT=/home/$NAME/$NAME.sh

d_start() {
    su youtrack -l -c "$SCRIPT start"
}

d_stop() {
    su youtrack -l -c "$SCRIPT stop"
}

case "$1" in
    start)
        echo "Starting $NAME..."
        d_start
        ;;
    stop)
        echo "Stopping $NAME..."
        d_stop
        ;;
    restart|force-reload)
        echo "Restarting $NAME..."
        d_stop
        d_start
        ;;
    *)
        echo "Usage: service youtrack {start|stop|restart}" >&2
        exit 1
        ;;
esac

exit 0

and set the user permissions:

chmod +x /etc/init.d/youtrack

Create the run script /home/youtrack/youtrack.sh:

#! /bin/sh

export HOME=/home/youtrack
export JAVA=`which java`

NAME=youtrack
PORT=8112
MEMORY=256m
USR=/home/$NAME
JAR=$USR/`ls -Lt $USR/*.jar | grep -o "$NAME-[^/]*.jar" | head -1`
#LOG=$USR/$NAME-$PORT.log
LOG=/dev/null
PID=$USR/$NAME-$PORT.pid

d_start() {
    if [ -f $PID ]; then
        PID_VALUE=`cat $PID`
        if [ ! -z "$PID_VALUE" ]; then
            PID_VALUE=`ps ax | grep $PID_VALUE | grep -v grep | awk '{print $1}'`
            if [ ! -z "$PID_VALUE" ]; then
                exit 1;
            fi
        fi
    fi

    PREV_DIR=`pwd`
    cd $USR
    exec $JAVA -Xmx$MEMORY -jar $JAR $PORT >> $LOG 2>&1 &
    echo $! > $PID
    cd $PREV_DIR
}

d_stop() {
    if [ -f $PID ]; then
        PID_VALUE=`cat $PID`
        if [ ! -z "$PID_VALUE" ]; then
            PID_VALUE=`ps ax | grep $PID_VALUE | grep -v grep | awk '{print $1}'`
            if [ ! -z "$PID_VALUE" ]; then
                kill $PID_VALUE
                WAIT_TIME=0
                while [ `ps ax | grep $PID_VALUE | grep -v grep | wc -l` -ne 0 -a "$WAIT_TIME" -lt 2 ]
                do
                    sleep 1
                    WAIT_TIME=$(expr $WAIT_TIME + 1)
                done
                if [ `ps ax | grep $PID_VALUE | grep -v grep | wc -l` -ne 0 ]; then
                    WAIT_TIME=0
                    while [ `ps ax | grep $PID_VALUE | grep -v grep | wc -l` -ne 0 -a "$WAIT_TIME" -lt 15 ]
                    do
                        sleep 1
                        WAIT_TIME=$(expr $WAIT_TIME + 1)
                    done
                    echo
                fi
                if [ `ps ax | grep $PID_VALUE | grep -v grep | wc -l` -ne 0 ]; then
                    kill -9 $PID_VALUE
                fi
            fi
        fi
        rm -f $PID
    fi
}

case "$1" in
    start)
        d_start
        ;;
    stop)
        d_stop
        ;;
    *)
        echo "Usage: $0 {start|stop|restart}" >&2
        exit 1
        ;;
esac

exit 0

Also grant execute privileges to this file:

chmod +x /home/youtrack/youtrack.sh

Download the latest YouTrack JAR file (make sure to specify the correct <version>):

sudo su youtrack -l -c "cd /home/youtrack && wget http://download.jetbrains.com/charisma/youtrack-<version>.jar"

Start YouTrack:

service youtrack start

This will run YouTrack on port 8112 with a memory stack of 256MB.

Add the YouTrack start script to the defaults:

/usr/sbin/update-rc.d youtrack defaults

YouTrack and nginx

To make YouTrack available on port 80, we can add a nginx config file that will act as a proxy:

server {
    server_name youtrack.example.com;

    # individual nginx logs for this tracker vhost
    access_log  /var/log/nginx/youtrack_access.log;
    error_log   /var/log/nginx/youtrack_error.log;

    location / {
        proxy_pass http://127.0.0.1:<port>;
    }
}

Remember to update the Base URL in the YouTrack settings.

Background information