Установка YouTrack для java 7 в Linux Ubuntu (Debian)

В связи с тем, что описание установки на официальном сайте у меня не заработало, решил записать как я его запустил, может кому пригодиться.

Первое что необходимо — скачать сам файл с официального сайта производителя. В моем случае это файл под названием «youtrack-5.0.6.jar».

Теперь его можно запустить командой

java -XX:MaxPermSize=150m -Xmx1g -jar youtrack.jar 9756

Если все нормально, то он должен открыться по адресу: http://localhost:9756

Но сейчас он запущен от пользователя, который подключен к терминалу, и если он закроет сессию ssh, то процесс закроется. Для того, что бы запустить его как сервис нужно сделать следующее:

  1. Добавляем нового пользователя Youtrack и даем необходимые права на папку:
    sudo adduser youtrack --disabled-password
    sudo chown youtrack.youtrack /home/youtrack
  2. Создаем скрипт init.d:
    sudo nano /etc/init.d/youtrack
  3. Вставляем данный код в редактор, сохраняем и выходим из него:
    #! /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: sudo /etc/init.d/youtrack {start|stop|restart}" >&2
    exit 1
    ;;
    esac
    
    exit 0
  4. Устанавливаем привелегии на запуск:
    sudo chmod +x /etc/init.d/youtrack
  5. Устанавливаем в init.d:
    sudo /usr/sbin/update-rc.d youtrack defaults
  6. Создаем скрипт запуска:
    sudo nano /home/youtrack/youtrack.sh
  7. Вставляем код ниже. Если у вас Java установлена в другой директории, измените переменную JAVA_HOME. Проверить где установлена Java можно командой which java. Также здесь вы можете изменить порт запуска YouTrack в переменной PORT:
    #! /bin/sh
    
    export HOME=/home/youtrack
    export JAVA_HOME=/usr
    
    NAME=youtrack
    PORT=8112
    USR=/home/$NAME
    JAR=$NAME.jar
    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/bin/java -XX:MaxPermSize=150m -Xmx1g -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
    }
    
    d_status() {
    if [ -f $PID ]; then
    PID_VALUE=`cat $PID`
    echo $PID_VALUE
    else
    echo "$NAME not start"
    fi
    }
    
    case "$1" in
    start)
    d_start
    ;;
    stop)
    d_stop
    ;;
    status)
    d_status
    ;;
    *)
    echo "Usage: $0 {start|stop|restart|status}" >&2
    exit 1
    ;;
    esac
    
    exit 0
  8. Сохраняем и устанавливаем необходимые привилегии:
    sudo chmod +x /home/youtrack/youtrack.sh
  9. Копируем скачанный файл в папку:
    sudo cp /home/youUser/Downloads/youtrack-5.0.6.jar /usr/local/youtrack/youtrack.jar
  10. Запускаем сервис:
    sudo /etc/init.d/youtrack start

    Сервис должен работать на порту 8112, проверить работу можно набрав в адресе: localhost:8112. Если что-то не сработало, проверьте лог файл:
    nano /home/youtrack/youtrack-8112.log.

Спасибо за помощь:

http://andreyklimenko.wordpress.com/2014/01/13/install-youtrack-on-linux-ubuntu/
http://confluence.jetbrains.com/display/YTD4/Linux.+YouTrack+JAR+as+a+Service.+Alternative+Method