Hola que tal!.
YouTrack (A.K.A YT) es un gestor de proyectos increíble. Hace ya como 6 años que lo uso y es indispensable para mi y mi grupo de trabajo a la hora de llevar un proyecto.
En esta ocasión les voy a mostrar los pasos para instalar la versión stand alone en tu propio servidor linux.
Vamos a evitar ser unos bestias y vamos a usar un user de sistema creado específicamente para ejecutar el servicio de YT. Así nos evitamos que nos escalen privilegios por ese lado.
adduser youtrack --disabled-password
mkdir -p /usr/local/youtrack
/usr/local/ es un buen lugar para poner un servicio nuevo :)
Descarga y copia el jar de YT en este directorio y luego:
NOTA: el archivo se va a llamar algo así como youtrack-6.5.17031.jar pero no lo renombres. Déjalo como está que el script que va a referenciarlo va a ser lo suficientemente inteligente como para encontrarlo.
YouTrack es un jar, y se puede lanzar por consola haciendo algo como java -jar youtrack.jar pero apenas reinicies el servidor o se cuelgue YT va a dejar de correr y vas a tener que lanzarlo a mano... no es muy eficiente. Mejor si creamos un service en Linux que se encargue de cargarlo reiniciarlos y todo lo demás que suelen hacer los services.
Para lograr esto tenemos que crear dos archivitos y poco mas:
Este archivo es una tontería. Se encarga de pasar los comandos al segundo archivo que vamos a crear. Pero paso a paso. Crea /etc/init.d/youtrack y pega lo siguiente:
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
No te preocupes que no hay nada que tocar aquí. Guárdalo y pasemos al siguiente archivo:
Crea /usr/local/youtrack/youtrack.sh y pega lo siguiente:
#! /bin/sh
export HOME=/home/youtrack
export JAVA_HOME=/usr
NAME=youtrack
PORT=8112
USR=/usr/local/$NAME
JAR=$USR/`ls -Lt $USR/*.jar | grep -o "$NAME-[^/]*.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/bin/java -Xmx2g -Djava.security.egd=/dev/zrandom -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
En este segundo script puedes modificar un par de cositas al principio del mismo. Lo mas habitual es cambiar el puerto (PORT=8112).
chown youtrack.youtrack /usr/local/youtrack -R
chmod +x /etc/init.d/youtrack
chmod +x /usr/local/youtrack/youtrack.sh
/usr/sbin/update-rc.d youtrack defaults
Y listo. Ya tenemos a YT como un servicio. Puedes hacer lo típico como arrancarlo, pararlo y reiniciarlo.
sudo service youtrack start
sudo service youtrack restart
sudo service youtrack stop
Notas finales
Como cosa adicional, el servicio vuelca un log de la aplicación en /usr/local/youtrack/youtrack-8112.log, cosa que viene muy bien cuando quieres ver lo que está pasando internamente.
La primara vez que lo arrancas va a tardar como 3 minutos en entregar algo en el navegador. Es normal. Si te aburres mientras puedes hacer un tail para ver como evoluciona el primer deploy XD (tail -f /usr/local/youtrack/youtrack-8112.log)
En /home/youtrack/teamsysdata está la database con todos los issues y attachments que vayas creando.
Chau!
Add new comment