Existe um arquivo de configuração estabelecido para executar o SubGit como um serviço iniciante?

0

Parece que o upstart é o caminho certo para fechar as coisas e iniciá-las durante o processo de reinicialização, mas não consegui encontrar arquivos de configuração com uma pesquisa de documentação do SubGit e uma pesquisa geral da Web.

Os comandos start e stop no meu caso são simples como segue, mas tanto o nome de usuário quanto o caminho do repositório dependem da instalação do usuário:

sudo -u subgit subgit install /dev.git    # start
sudo -u subgit subgit uninstall /dev.git  # stop

Estou prestes a implementar uma cópia de trabalho do /etc/init/subgit.conf (não confundir com SVN_REPOS / conf / subgit.conf no SubGit) e postar respostas pendentes melhores.

Nota: O SubGit é uma implementação particular de bridging do Subversion e do Git.

    
por sage 10.09.2016 / 19:15

1 resposta

0

Embora o comando de início seja simples, ele chama um programa java que parece ser interrompido várias vezes, causando problemas de inicialização. Felizmente, o johnjamesmiller publicou uma solução alternativa para esse tipo de problema no StackOverflow.

Embora o seguinte pareça fornecer wrapper de inicialização para os comandos de subgit parametrizados por instância (permitindo que vários repos sejam executados no servidor), o uso de um job baseado em 'instance' torna impraticável ter esse start / stop automaticamente. Em vez disso, adicionei comandos start para meus repositórios para /etc/rc.local (mostrados na parte inferior).

# subgit.conf - subgit job file

description "service for running SubGit mirroring"
author "Randy Sage"

# Note: because subgit forks too many times, normal upstart controls do not work
# Instead, use the method at https://stackoverflow.com/a/12217085/527489

# Run with subgit/gitshare ids, since we use shared gitshare access to repos
setuid subgit
setgid gitshare

instance $repo

pre-start exec subgit install $repo  # actually start

script  # dummy process tracking java app
  while ps aux |  grep "java.*$repo" | grep -v grep >/dev/null ; do
    sleep 1
  done
end script

post-stop script
  if ps aux |  grep "java.*$repo" | grep -v grep >/dev/null ; then
    subgit shutdown $repo
  fi
end script

Aqui estão os comandos /etc/rc.local:

...
start subgit repo=/matlab.git
start subgit repo=/dev.git

exit 0

Observe que os serviços iniciados dessa forma aparecem em initctl list , mas não em service --status-all :

rsage@subgit:~$ initctl list | grep subgit
subgit (/dev.git) start/running, process 2974
subgit (/matlab.git) start/running, process 2507
    
por 10.09.2016 / 21:29

Tags