Ich versuche, die Rails-App mit dem Puma-Webserver bereitzustellen. Beim Versuch, den Puma-Server mit einer Konfigurationsdatei zu starten bundle exec puma -C config/puma.rb
, wird die Fehlermeldung angezeigt , dass die Adresse bereits verwendet wird.
Weiß jemand, wie man das behebt?
bundle exec puma -C config/puma.rb
[23699] Puma starting in cluster mode...
[23699] * Version 2.11.3 (ruby 2.0.0-p353), codename: Intrepid Squirrel
[23699] * Min threads: 5, max threads: 5
[23699] * Environment: development
[23699] * Process workers: 2
[23699] * Preloading application
Jdbc-MySQL is only for use with JRuby
[23699] * Listening on tcp://0.0.0.0:3000
/.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/binder.rb:210:in `initialize': Address already in use - bind(2) (Errno::EADDRINUSE)
from /.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/binder.rb:210:in `new'
from /Users/lexi87/.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/binder.rb:210:in `add_tcp_listener'
from /.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/binder.rb:96:in `block in parse'
from /.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/binder.rb:82:in `each'
from /.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/binder.rb:82:in `parse'
from /.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/runner.rb:119:in `load_and_bind'
from /.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/cluster.rb:302:in `run'
from /.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/cli.rb:216:in `run'
from /rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/bin/puma:10:in `<top (required)>'
from /.rvm/gems/ruby-2.0.0-p353/bin/puma:23:in `load'
from /.rvm/gems/ruby-2.0.0-p353/bin/puma:23:in `<main>'
from /.rvm/gems/ruby-2.0.0-p353/bin/ruby_executable_hooks:15:in `eval'
from /.rvm/gems/ruby-2.0.0-p353/bin/ruby_executable_hooks:15:in `<main>'
ruby-on-rails
puma
Cornelius Wilson
quelle
quelle
kill -59780 PID
. Sagt mirinvalid signal specification
. Ich habe immerlsof -wni tcp:3000
gezeigt, was Port 3000 verwendet.Antworten:
Sie müssen
kill -9 59780
mit59780
ersetzt durch gefundene PID-Nummer verwenden (verwenden Sie, umlsof -wni tcp:3000
zu sehen, welcher Prozess den3000
Port verwendet, und um die Prozess-PID zu erhalten).Oder Sie können einfach Ihre Puma-Konfiguration ändern und den TCP-Port
tcp://127.0.0.1:3000
von3000
zu9292
oder einen anderen Port ändern, der nicht verwendet wurde.Oder Sie können Ihre Rails-App starten, indem Sie Folgendes verwenden:
quelle
rails s
an einem anderen Terminal mache . Deshalb habe ich diesen Fehler bekommen. dann habe ich diff port benutzt um den server zu startenrails s -p 9090
Um den Puma-Prozess zu beenden, führen Sie ihn zuerst aus
Verwenden Sie dann die PID, die mit dem Ergebnis geliefert wird, um den Kill-Prozess auszuführen.
Wenn Sie beispielsweise lsof -wni tcp: 3000 ausführen, erhalten Sie möglicherweise so etwas wie
Führen Sie nun Folgendes aus, um den Prozess abzubrechen. (wobei 3366 die PID ist)
Sollte das Problem beheben
quelle
Sie können diesen Trick auch ausprobieren:
Beispielausgabe:
dann:
quelle
kill -9 67661
wennkill 67661
der Prozess für Sie nicht tatsächlich abgebrochen wird (wie im obigen Beispiel). Das hat bei mir funktioniert! Prost!Das folgende Skript wurde in dieser Github-Ausgabe gefunden . Funktioniert super für mich.
Sie können es entweder in irb oder in einer Ruby-Datei ausführen.
Für letzteres erstellen Sie es
server_killer.rb
und führen Sie es mit ausruby server_killer.rb
quelle
Sie können die laufenden Prozesse finden und beenden:
ps aux | grep puma
Dann können Sie sie mit beendenkill PID
quelle
Wenn die oben genannten Lösungen unter Ubuntu / Linux nicht funktionieren, können Sie dies versuchen
Führen Sie es mehrmals aus, um Prozesse auf dem Port Ihrer Wahl abzubrechen. Port könnte zum Beispiel 3000 sein. Sie hätten alle Prozesse abgebrochen, wenn Sie nach dem Ausführen des Befehls keine Ausgabe sehen würden
quelle