Skip to content

Instantly share code, notes, and snippets.

@plasticut
Created July 25, 2017 08:47
Show Gist options
  • Save plasticut/569e4d518714fa8c54176821f02b45a6 to your computer and use it in GitHub Desktop.
Save plasticut/569e4d518714fa8c54176821f02b45a6 to your computer and use it in GitHub Desktop.
ubuntu youtrack installation
apt-get update
apt-get install openjdk-8-jdk
mkdir /opt/youtrack
useradd youtrack -r -d /opt/youtrack/ -s /bin/bash
cat <<EOT >> /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=/opt/youtrack
set -e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=youtrack
SCRIPT=/opt/$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
EOT
chmod +x /etc/init.d/youtrack
update-rc.d youtrack defaults
mkdir /var/log/youtrack
chown youtrack:youtrack /var/log/youtrack
mkdir /run/youtrack
chown youtrack:youtrack /run/youtrack/
cat <<EOT >> /opt/youtrack/youtrack.sh
#! /bin/sh
###
# YouTrack startup script
###
export HOME=/opt/youtrack
export JAVA_HOME=/usr/bin/java
NAME=youtrack
PORT=8112
BASEDIR=/opt/youtrack
JAR=$BASEDIR/`ls -Lt $BASEDIR/*.jar | grep -o "$NAME-[^/]*.jar" | head -1`
LOG=/var/log/$NAME/$NAME-$PORT.log
PID=/run/$NAME/$NAME-$PORT.pid
# Setup proper run environment
if [ ! -d /run/$NAME ]; then
mkdir /run/$NAME
chown $NAME:$NAME /run/$NAME
fi
if [ ! -d /var/log/$NAME ]; then
mkdir /var/log/$NAME
chown $NAME:$NAME /var/log/$NAME
fi
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 $BASEDIR
exec $JAVA_HOME -Xmx1g -XX:MaxMetaspaceSize=256m -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
;;
restart|force-reload)
d_stop
d_start
;;
*)
echo "Usage: $0 {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
EOT
chown -R youtrack:youtrack /opt/youtrack
chmod +x /opt/youtrack/youtrack.sh
cd /opt/youtrack/
wget https://download.jetbrains.com/charisma/youtrack-2017.2.34480.jar
chown youtrack:youtrack /opt/youtrack/youtrack-2017.2.34480.jar
sudo service youtrack start
systemctl enable youtrack
cat <<EOT >> /etc/nginx/conf.d/youtrack.conf
server {
listen 80;
server_name my.site.com www.my.site.com;
location / {
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 10m;
proxy_http_version 1.1;
proxy_pass http://127.0.0.1:8112;
}
location /api/eventSourceBus {
proxy_cache off;
proxy_buffering off;
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
proxy_set_header Connection '';
chunked_transfer_encoding off;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_pass http://127.0.0.1:8112;
}
}
EOT
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment