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.