Domanda

Ho uno script Capistrano che può controllare il mio server Redis.Ecco il compito in questione:

  %w[start stop restart].each do |cmd|
    desc "#{cmd}s redis-server"
    task cmd, :roles => :app do
      run "#{sudo} /etc/init.d/redis-server #{cmd}"
    end
  end

When I run this (deploying to a local vagrant VM) it says it's starts successfully:

    > cap local redis:start


    triggering load callbacks
  * executing `local'
Deploying branch master
    triggering start callbacks for `redis:start'
  * executing `multistage:ensure'
  * executing `redis:start'
  * executing "sudo -p 'sudo password: ' /etc/init.d/redis-server start"
    servers: ["192.168.33.10"]
Password: 
    [192.168.33.10] executing command
 ** [out :: 192.168.33.10] Starting redis-server:
 ** [out :: 192.168.33.10] redis-server.
    command finished in 2054ms
.

Tuttavia Redis-Server non è in esecuzione quando ssh è. Funziona se lo avvio manualmente:

> sudo /etc/init.d/redis-server start
.

E ottengo la stessa uscita come sopra, solo questa volta il processo rimane in esecuzione.

Guardando i registri su /var/log/redis/redis.log e il file è vuoto.

Qualche idea Cosa sto facendo male?Avvio altri servizi come questo (Nginx, Unicorn, MySQL, ecc.) E quelli stanno funzionando bene.

È stato utile?

Soluzione

Credo che il processo di redis sia terminato una volta terminata la connessione SSH.

Prova ad aggiungere nohup allo script:

run "#{sudo} nohup /etc/init.d/redis-server #{cmd}"
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top