Como inicio o Jetbrains License Server automaticamente no meu sistema Ubuntu?

2

Supondo que eu tenha meu servidor de licença instalado aqui: / opt / jetbrains-license-server, como configurá-lo para iniciar automaticamente?

    
por Chris Betti 20.01.2016 / 21:44

3 respostas

2

O anwer de @ chris-betti está correto. No entanto, para sistemas baseados em DEBIAN, tenho três adições:

  1. certifique-se de que o nível de execução 2 do servidor de licenças também seja iniciado
  2. certifique-se de que haja um usuário jetbrains
  3. verifique se o arquivo PID está no local correto (/opt//logs/license-server.pid)

anúncio 1: veja o arquivo de script abaixo. Você precisa alterar a linha # Default Start para ler:

# Default-Start:     2 3 4 5

anúncio 2: Certifique-se de ter um usuário do sistema 'jetbrains' que possa iniciar o serviço (e tenha permissão para gravar no diretório em que você instalou o servidor de licenças

# as root
adduser --system --no-create-home jetbrains
chown jetbrains:nogroup -R /opt/jetbrains-license-server

anúncio 3: Em relação ao arquivo PID, você precisa alterar a linha com # pidfile: para:

# pidfile: /opt/jetbrains-license-server/logs/license-server.pid

Instale o daemon :

Há mais uma adição para instalar o serviço nos vários runlevels para sistemas baseados no Debian (Debian, Ubuntu). Isso garantirá que o serviço seja iniciado na inicialização e seja interrompido.

# as root
update-rc.d jetbrains-license-server defaults
update-rc.d jetbrains-license-server enable

O script com todas as alterações

Aqui está o script com todas as alterações incorporadas.

#
# chkconfig: 345 86 14
# description: Jetbrains License Server
# processname: license-server.sh
# pidfile: /opt/jetbrains-license-server/logs/license-server.pid

### BEGIN INIT INFO
# Provides:          jetbrains-license-server
# Required-Start:    $remote_fs $syslog $network
# Required-Stop:     $remote_fs $syslog $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start Jetbrains License Server
# Description:       Manages the Jetbrains License Server Service
### END INIT INFO

APP=jetbrains-license-server
USER=jetbrains
BASE=/opt/jetbrains-license-server

case "$1" in
  # Start command
  start)
    echo "Starting $APP"
    /bin/su -m $USER -c "cd $BASE && $BASE/bin/license-server.sh start &> /dev/null"
    ;;
  # Stop command
  stop)
    echo "Stopping $APP"
    /bin/su -m $USER -c "cd $BASE && $BASE/bin/license-server.sh stop &> /dev/null"
    echo "$APP stopped successfully"
    ;;
  # Restart command
  restart)
    echo "Restarting $APP"
    /bin/su -m $USER -c "cd $BASE && $BASE/bin/license-server.sh restart"
    ;;
  # Status command
  status)
    echo "$APP Status"
    /bin/su -m $USER -c "cd $BASE && $BASE/bin/license-server.sh status"
    ;;
  *)
    echo "Usage: /etc/init.d/$APP {start|restart|stop}"
    exit 1
    ;;
esac

exit 0
    
por 21.01.2016 / 15:57
2

A resposta da jochem é mais completa e correta, por favor referencie-a.

Primeiro, crie um usuário jetbrains no seu servidor.

Em segundo lugar, supondo que você escolha usar o init.d (System V), faça o seguinte:

$ touch /etc/init.d/jetbrains-license-server
$ chmod +x /etc/init.d/jetbrains-license-server

Agora coloque o seguinte conteúdo neste arquivo:

#!/bin/bash

# Startup script for Jetbrains License Server
#
# chkconfig: 345 86 14
# description: Jetbrains License Server
# processname: license-server.sh
# pidfile: /opt/jetbrains-license-server/server.pid

### BEGIN INIT INFO
# Provides:          jetbrains-license-server
# Required-Start:    $remote_fs $syslog $network
# Required-Stop:     $remote_fs $syslog $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start Jetbrains License Server
# Description:       Manages the Jetbrains License Server Service
### END INIT INFO

APP=jetbrains-license-server
USER=jetbrains
BASE=/opt/jetbrains-license-server

case "$1" in
  # Start command
  start)
    echo "Starting $APP"
    /bin/su -m $USER -c "cd $BASE && $BASE/bin/license-server.sh start &> /dev/null"
    ;;
  # Stop command
  stop)
    echo "Stopping $APP"
    /bin/su -m $USER -c "cd $BASE && $BASE/bin/license-server.sh stop &> /dev/null"
    echo "$APP stopped successfully"
    ;;
  # Restart command
  restart)
    echo "Restarting $APP"
    /bin/su -m $USER -c "cd $BASE && $BASE/bin/license-server.sh restart"
    ;;
  # Status command
  status)
    echo "$APP Status"
    /bin/su -m $USER -c "cd $BASE && $BASE/bin/license-server.sh status"
    ;;
  *)
    echo "Usage: /etc/init.d/$APP {start|restart|stop}"
    exit 1
    ;;
esac

exit 0
    
por 20.01.2016 / 21:44
0

Ambas as respostas estão corretas, embora falhem em um aspecto,

Se você estiver usando o script para uma estrutura de Infraestrutura como Código (por exemplo, Ansible / Puppet) que usa o código de retorno de status para determinar qual ação executar, o script conforme fornecido, que sempre retorna 0, não inicializará com êxito o aplicativo automaticamente quando o aplicativo é interrompido.

Minha adição ao script é capturar o código de retorno de cada uma das chamadas delegadas e usá-lo como o código de saída e a parte inferior:

#
# chkconfig: 345 86 14
# description: Jetbrains License Server
# processname: license-server.sh
# pidfile: /opt/jetbrains-license-server/logs/license-server.pid

### BEGIN INIT INFO
# Provides:          jetbrains-license-server
# Required-Start:    $remote_fs $syslog $network
# Required-Stop:     $remote_fs $syslog $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start Jetbrains License Server
# Description:       Manages the Jetbrains License Server Service
### END INIT INFO

APP=jetbrains-license-server
USER=jetbrains
BASE=/opt/jetbrains-license-server
RETCODE=0

case "$1" in
  # Start command
  start)
    echo "Starting $APP"
    /bin/su -m $USER -c "cd $BASE && $BASE/bin/license-server.sh start &> /dev/null"
    RETCODE=$?
    ;;
  # Stop command
  stop)
    echo "Stopping $APP"
    /bin/su -m $USER -c "cd $BASE && $BASE/bin/license-server.sh stop &> /dev/null"
    RETCODE=$?
    ;;
  # Restart command
  restart)
    echo "Restarting $APP"
    /bin/su -m $USER -c "cd $BASE && $BASE/bin/license-server.sh restart"
    RETCODE=$?
    ;;
  # Status command
  status)
    echo "$APP Status"
    /bin/su -m $USER -c "cd $BASE && $BASE/bin/license-server.sh status"
    RETCODE=$?
    ;;
  *)
    echo "Usage: /etc/init.d/$APP {start|restart|stop}"
    exit 1
    ;;
esac

exit $RETCODE

Você poderia expandir isso para fornecer mensagens úteis ao usuário com base no código de retorno, mas não me preocupei em ir tão longe.

    
por 29.07.2016 / 05:10