Running YouTrack Issue And Project Tracking Tool On nginx (Debian Wheezy)

YouTrack is an issue and project tracking tool written in Java. This tutorial explains how to serve YouTrack through an nginx webserver on Debian Wheezy.

I do not issue any guarantee that this will work for you!

 

1 Installing Java

In order to run YouTrack, we need to have Java installed on our server:

apt-get install openjdk-6-jdk openjdk-6-jre unzip
update-alternatives --config java
update-alternatives --config javac

 

2 Installing YouTrack

Create a YouTrack user and a directory to install YouTrack in:

adduser youtrack --disabled-password
mkdir -p /usr/local/youtrack
chown youtrack:youtrack /usr/local/youtrack

Create the YouTrack init script:

vi /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=/usr/local/$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: sudo /etc/init.d/youtrack {start|stop|restart}" >&2
    exit 1
  ;;
esac

exit 0

Make the script executable and set up the system startup links:

chmod 755 /etc/init.d/youtrack
update-rc.d youtrack defaults

The following script is called by the init script and starts the YouTrack daemon on port 8112:

vi /usr/local/youtrack/youtrack.sh
#! /bin/sh

export HOME=/home/youtrack
export JAVA_HOME=/usr/bin/java

NAME=youtrack
PORT=8112
USR=/usr/local/$NAME
JAR=$USR/`ls -Lt $USR/*.jar | grep -o "$NAME-[Linux. YouTrack JAR as a Service. Alternative Method^/]*.jar" | head -1`
LOG=$USR/$NAME-$PORT.log
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_HOME -Xmx512m -jar $JAR"youtrack.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

Make the script executable:

chmod 755 /usr/local/youtrack/youtrack.sh

Next visit http://www.jetbrains.com/youtrack/download/get_youtrack.html, make sure that you select Linux and click on the Download YouTrack button:

Download youtrack-5.0.6.jar to your desktop and then upload it to the /tmp folder of your server. Afterwards, run...

cp /tmp/youtrack-5.0.6.jar /usr/local/youtrack/youtrack.jar

... and start YouTrack:

/etc/init.d/youtrack restart

The YouTrack daemon should now be running on port 8112, as you can verify with the following command:

netstat -tapn|grep 8112
root@server1:/var/www/example.com/web# netstat -tapn|grep 8112
tcp6       0      0 :::8112                 :::*                    LISTEN      11504/java
root@server1:/var/www/example.com/web#

If it is not running, check out the log file /usr/local/youtrack/youtrack-8112.log.

 

3 Configuring nginx

Next we must configure our nginx vhost through which we want to access YouTrack. You must paste the following configuration into your server {} container (or the nginx Directives field if you use ISPConfig):

        location / {
                proxy_pass http://127.0.0.1:8112;
                proxy_set_header        X-Real-IP $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header        Host $http_host;
        }

That's it! Now visit your website, and you should be able to use YouTrack:

 

Share this page:

1 Comment(s)