Saya mencoba menggunakan aplikasi Rails dengan server web Puma. Ketika mencoba memulai server Puma dengan file konfigurasi bundle exec puma -C config/puma.rb
saya mendapatkan kesalahan bahwa alamat sudah digunakan.
Apakah ada yang tahu cara memperbaikinya?
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
sumber
sumber
kill -59780 PID
. Katakan padakuinvalid signal specification
. Saya dululsof -wni tcp:3000
menunjukkan apa yang menggunakan port 3000.Jawaban:
Anda perlu menggunakan
kill -9 59780
dengan59780
mengganti dengan nomor PID yang ditemukan (gunakanlsof -wni tcp:3000
untuk melihat proses3000
port mana yang digunakan dan mendapatkan proses PID).Atau Anda bisa memodifikasi puma config Anda untuk mengubah port tcp
tcp://127.0.0.1:3000
dari3000
menjadi9292
atau port lain yang tidak digunakan.Atau Anda dapat memulai aplikasi rel Anda dengan menggunakan:
sumber
rails s
di terminal lain. Jadi itu sebabnya saya mendapat kesalahan itu. kemudian saya menggunakan port diff untuk memulai serverrails s -p 9090
Untuk membunuh proses puma jalankan terlebih dahulu
untuk menunjukkan apa yang menggunakan port 3000. Kemudian gunakan PID yang datang dengan hasil untuk menjalankan proses kill.
Sebagai contoh setelah menjalankan lsof -wni tcp: 3000 Anda mungkin mendapatkan sesuatu seperti
Sekarang jalankan yang berikut untuk mematikan prosesnya. (di mana 3366 adalah PID)
Haruskah menyelesaikan masalah
sumber
Anda juga dapat mencoba trik ini:
output sampel:
kemudian:
sumber
kill -9 67661
jikakill 67661
tidak benar-benar mematikan proses untuk Anda (seperti contoh di atas). Itu berhasil bagi saya! Bersulang!Ditemukan skrip di bawah ini dalam masalah github ini . Bekerja bagus untukku.
Anda dapat menjalankannya di irb atau di dalam file ruby.
Untuk yang terakhir, buat
server_killer.rb
lalu jalankan denganruby server_killer.rb
sumber
Anda dapat menemukan dan mematikan proses yang sedang berjalan:
ps aux | grep puma
Kemudian Anda dapat membunuhnya dengankill PID
sumber
Jika solusi di atas tidak berfungsi di ubuntu / linux maka Anda dapat mencoba ini
Jalankan beberapa kali untuk mematikan proses pada port pilihan Anda. port bisa 3000 misalnya. Anda akan membunuh semua proses jika Anda tidak melihat hasil setelah menjalankan perintah
sumber