2017-06-29 2 views
0

Ich versuche Python, Gunicorn und Funke neu zu starten, sobald der Capistrano die Bereitstellung abgeschlossen hat, aber ich bekomme den folgenden Fehler. Wenn ich jedoch versuchte, diese Befehle auf dem Server per ssh auszuführen, dann funktioniert es gut.Problem beim Starten von Python, Spark und Gunicorn

Funktion in deploy.rb:

desc 'Restart django' 
    task :restart_django do 
     on roles(:django), in: :sequence, wait: 5 do 
     within "#{fetch(:deploy_to)}/current/" do 
      execute "cd #{fetch(:deploy_to)}/current/ && source bin/activate " 
      execute "sudo /etc/init.d/supervisor stop && sudo fuser -k 8000/tcp && pkill -f python && pkill -f gunicorn && pkill -f spark" 
#execute " cd /home/ubuntu/code/spark-2.1.0-bin-hadoop2.7/sbin/ && ./start-master.sh && ./start-slave.sh spark://127.0.0.1:7077;" 
      #execute "sleep 20" 
      #execute "cd /home/ubuntu/code/ && nohup gunicorn example.wsgi:application --name example --workers 4 &" 
     end 
     end 
    end 

Deploy Output:

cap dev deploy:restart_django 
Using airbrussh format. 
Verbose output is being written to log/capistrano.log. 
00:00 deploy:restart_django 
     01 cd /home/ubuntu/code/ && source bin/activate 
    ✔ 01 [email protected] 2.109s 
     02 sudo /etc/init.d/supervisor stop && sudo fuser -k 8000/tcp && pkill -f python gunicorn spark 
(Backtrace restricted to imported tasks) 
cap aborted! 
SSHKit::Runner::ExecuteError: Exception while executing as [email protected]: sudo /etc/init.d/supervisor stop && sudo fuser -k 8000/tcp && pkill -f python gunicorn spark exit status: 1 
sudo /etc/init.d/supervisor stop && sudo fuser -k 8000/tcp && pkill -f python gunicorn spark stdout: Stopping supervisor: supervisord. 
sudo /etc/init.d/supervisor stop && sudo fuser -k 8000/tcp && pkill -f python gunicorn spark stderr: Nothing written 

SSHKit::Command::Failed: sudo /etc/init.d/supervisor stop && sudo fuser -k 8000/tcp && pkill -f python gunicorn spark exit status: 1 
sudo /etc/init.d/supervisor stop && sudo fuser -k 8000/tcp && pkill -f python gunicorn spark stdout: Stopping supervisor: supervisord. 
sudo /etc/init.d/supervisor stop && sudo fuser -k 8000/tcp && pkill -f python gunicorn spark stderr: Nothing written 

Tasks: TOP => deploy:restart_django 
(See full trace by running task with --trace) 

Antwort

0

Capistrano standardmäßig rufen No-Login, nicht-interaktiv Shell. Es ist jedoch nicht die gute Option, die Login-Shell zu verwenden, aber ich kann das Problem lösen, indem ich die Login-Shell unter Capistrano mit dem folgenden Befehl aufrufen.

execute "bash --login -c 'pkill -f spark'", raise_on_non_zero_exit: false 
Verwandte Themen