Como passar do init.d para o upstart para o nginx

3

Eu tenho um script init.d para nginx que normalmente funciona bem. No entanto, após uma reinicialização, ele não funciona corretamente e o processo do operador pode morrer, deixando apenas o processo mestre.

O nginx tem algum material mongodb (nginx-gridfs) compilado e precisa iniciar após o mongodb que está sendo iniciado pelo upstart.

Foi tudo o que consegui descobrir depois de uma solução de problemas. Eu acredito que tenho que mudar o nginx para o upstart e torná-lo dependente do mongo. Como posso fazer isso?

    
por user146668 22.11.2012 / 21:50

2 respostas

2

Como o nginx-gridfs se conecta ao mongodb, o servidor db já deve estar em execução e pronto. Isso estava causando um problema. Primeiro eu removi o script /etc/init.d/nginx usando 'update-rc.d remove nginx' Então eu criei um script 'upstart' em /etc/init/nginx.conf:

# nginx

description "nginx http daemon"

#start on mongodb  
start on (local-filesystems
    and net-device-up IFACE=lo
    and started mongodb) 
stop on stopped mongodb

env DAEMON=/usr/local/nginx/sbin/nginx 
env PID=/usr/local/nginx/logs/nginx.pid

expect fork 
respawn 
respawn limit 10 5

pre-start script
        $DAEMON -t
        if [ $? -ne 0 ]
                then exit $?
        fi
        # Add a sleep of 10 sec. to allow mongodb to finish starting up
        sleep 10 
end script

exec $DAEMON

Isso resolveu o problema para mim.

    
por user146668 23.11.2012 / 07:43
0

Você provavelmente não configurou corretamente o uso de update-rc.d <yourscript> start [startorder] 2 3 4 5 . stop [end order] 0 1 6 . para criar os links de nível de execução.

Se seu script for feito corretamente, ele aceita o comando start e stop , verifique se todas as dependências foram iniciadas antes do seu script, normalmente 40 é seguro para startorder e que todos os serviços que Depende de seu script terminar antes dele, 20 é provavelmente bom o suficiente para endorder .

Para saber como criar um bom script, dê uma olhada nos que estão em /etc/init.d

    
por perdigueiro 23.11.2012 / 01:58