J'essaie de déployer l'application Rails avec le serveur Web Puma. En essayant de démarrer le serveur Puma avec un fichier de configuration, bundle exec puma -C config/puma.rb
j'obtiens une erreur indiquant que l'adresse est déjà utilisée.
Est-ce que quelqu'un sait comment résoudre ce problème?
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
la source
la source
kill -59780 PID
. Me ditinvalid signal specification
. J'avais l'habitudelsof -wni tcp:3000
de montrer ce qui utilise le port 3000.Réponses:
Vous devez utiliser
kill -9 59780
avec59780
remplacé par le numéro PID trouvé (utilisezlsof -wni tcp:3000
pour voir quel processus a utilisé le3000
port et obtenir le PID de processus).Ou vous pouvez simplement modifier votre configuration puma changer le port TCP
tcp://127.0.0.1:3000
de3000
vers9292
ou un autre port qui n'a pas été utilisé.Ou vous pouvez démarrer votre application rails en utilisant:
la source
rails s
sur un autre terminal. C'est pourquoi j'ai eu cette erreur. puis j'ai utilisé le port diff pour démarrer le serveurrails s -p 9090
Pour tuer le processus puma, exécutez d'abord
pour montrer ce qui utilise le port 3000. Ensuite, utilisez le PID fourni avec le résultat pour exécuter le processus de suppression.
Par exemple, après avoir exécuté lsof -wni tcp: 3000, vous pourriez obtenir quelque chose comme
Exécutez maintenant ce qui suit pour arrêter le processus. (où 3366 est le PID)
Devrait résoudre le problème
la source
vous pouvez également essayer cette astuce:
exemple de sortie:
puis:
la source
kill -9 67661
ifkill 67661
ne tue pas réellement le processus pour vous (comme dans l'exemple ci-dessus). Cela a fonctionné pour moi! À votre santé!J'ai trouvé le script ci-dessous dans ce numéro de github . Fonctionne très bien pour moi.
Vous pouvez l'exécuter dans irb ou dans un fichier ruby.
Pour ce dernier, créez-le
server_killer.rb
puis exécutez-le avecruby server_killer.rb
la source
Vous pouvez trouver et tuer les processus en cours:
ps aux | grep puma
Ensuite, vous pouvez le tuer aveckill PID
la source
Si les solutions ci-dessus ne fonctionnent pas sur ubuntu / linux, vous pouvez essayer ceci
Exécutez-le plusieurs fois pour tuer les processus sur le port de votre choix. le port pourrait être 3000 par exemple. Vous auriez tué tous les processus si vous ne voyez aucune sortie après l'exécution de la commande
la source