Escreveu scripts simples para iniciar / parar um aplicativo da web go. Às vezes, precisamos iniciar um pool de aplicativos de trabalho em portas específicas. Os scripts a seguir ajudam.
Esses scripts são trabalhos do sistema para inicialização e devem ser colocados em / etc / init.
app-worker.conf
description "App-Worker"
author "Adnaan"
start on (net-device-up
and local-filesystems
and runlevel [2345])
stop on runlevel [06]
respawn
instance $PORT
script
#initramfs provides early userspace
exec 2>>/dev/.initramfs/app-worker.log
set -x
export APP="/root/goworkspace/src/myappcode"
#change directory or go won't read the web app resources
chdir $APP
#execute
exec sudo $APP/app --port $PORT
end script
O script acima pode ser usado diretamente como:
Comece um trabalhador
service app-worker start PORT=8085
Pare um trabalhador
service app-worker stop PORT=8085
Mas e se precisar de um monte de trabalhadores. Não podemos começar individualmente agora, podemos?
app-pool.conf
description "App Pool"
author "Adnaan"
start on (local-filesystems and net-device-up and runlevel [2345])
stop on shutdown
pre-start script
#initramfs provides early userspace
exec 2>>/dev/.initramfs/app-pool.log
set -x
start app-worker PORT=8085
start app-worker PORT=8086
#add more jobs..
end script
Comece um Pool
service app-pool start
Pare a piscina
service app-pool stop
O acima não terá nenhum efeito, pois reinicia os trabalhadores novamente. Precisamos parar individualmente os trabalhadores. Vamos encontrar nossos trabalhadores.
initctl list | grep "app"
Escolha seu trabalhador na lista e interrompa-o conforme descrito acima. Percebo que estamos parando individualmente os trabalhadores. Bem, ainda estou procurando uma boa solução para fazer isso em uma única etapa. Sugestões bem-vindas!