İnce web sunucusu: "start_tcp_server ': git dalı kontrolünden sonra kabul edici yok (RuntimeError)


110

Hem yerel olarak hem de Heroku sedir yığınında İnce web sunucusu ile iyi çalışan bir Rails 3.2.0 uygulaması.

Sonra:

$ git branch work
$ git checkout work
$ rails server

Alırım:

=> Booting Thin
=> Rails 3.2.0 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
>> Thin web server (v1.3.1 codename Triple Espresso)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:3000, CTRL+C to stop
Exiting
/Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/eventmachine-0.12.10/lib/eventmachine.rb:572:in `start_tcp_server': no acceptor (RuntimeError)
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/eventmachine-0.12.10/lib/eventmachine.rb:572:in `start_server'
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/thin-1.3.1/lib/thin/backends/tcp_server.rb:16:in `connect'
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/thin-1.3.1/lib/thin/backends/base.rb:53:in `block in start'
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `call'
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine'
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run'
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/thin-1.3.1/lib/thin/backends/base.rb:61:in `start'
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/thin-1.3.1/lib/thin/server.rb:159:in `start'
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/rack-1.4.1/lib/rack/handler/thin.rb:13:in `run'
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/rack-1.4.1/lib/rack/server.rb:265:in `start'
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.0/lib/rails/commands/server.rb:70:in `start'
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.0/lib/rails/commands.rb:55:in `block in <top (required)>'
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.0/lib/rails/commands.rb:50:in `tap'
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.0/lib/rails/commands.rb:50:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'

Ayrıca, yaptığımda:

sudo bundle exec rails server thin -p 3000

Alırım:

/Users/peter/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find bundler (>= 0) amongst [bigdecimal-1.1.0, io-console-0.3, json-1.5.4, minitest-2.5.1, rake-0.9.2.2, rdoc-3.9.4] (Gem::LoadError)
from /Users/peter/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
from /Users/peter/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems.rb:1210:in `gem'
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/bin/bundle:18:in `<main>'

1.0.22 paketleyicim var. Güncellenmiş ve yüklenmiştir. Hiçbir şey işe yaramıyor gibi görünüyor. Herhangi bir fikir?


1
Makinenin başka bir yerinde çalışan bir sunucunuz zaten var mı? Belki Salatalık veya başka bir şeyde?
Josh Leitzel

1
Hayır, yapmadım. Aslında, bilgisayarımı yeniden başlatmak sorunumu çözdü. Bugün yine oldu. Bir git dalından diğerine geçtiğimde oluyor gibi görünüyor.
maeseele

2
Teşekkürler! MacOSX'teki hata mesajım ... eventmachine-1.0.0/lib/eventmachine.rb:526:in `start_tcp_server': no acceptor (port is in use or requires root privileges) (RuntimeError).
JJD

Aynı portu iki farklı uygulamayı çalıştırmak için kullanmaya çalıştığımda benim için aynı. Bu konu sadece diğer çalışan uygulama hakkında düşünmemi sağladı.
Vadorequest

Yanıtlar:


226

Bu benim için çalışıyor. Bul (zombi?) Sunucusu (sunucu çalışırken terminalden çıkıldığında gerçekleşebilir):

$ ps ax | grep rails

Şöyle bir şey döndürürse:

33467 s002 S+ 0:00.00 grep rails
33240 s003 S+ 0:15.05 /Users/Arta/.rbenv/versions/1.9.2-p290/bin/ruby script/rails s -p 3000

öldür ve yeniden koş:

$ kill -9 33240
$ rails s

17
Eğer ps ax | grep railsherhangi bir şey gitmezse, deneyin ps ax | grep ruby.
Kevin

3
Rails sunucusu çalışırken doğrudan terminal penceresinden çıkarsanız OSX'te kesinlikle olur. +1
notaceo


48

Bağlantı noktasını kilitleyen başka bir işlem varsa, aşağıdaki gibi hangi PID'ye sahip olduğunu öğrenebilirsiniz:

$ lsof -i :3000
COMMAND     PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
Passenger 40466 josh    5u  IPv4 0x7cae9332073ed4df      0t0  TCP *:hbci (LISTEN)
Passenger 40467 josh    5u  IPv4 0x7cae9332073ed4df      0t0  TCP *:hbci (LISTEN)

Öyleyse basitçe öldür / onları:

$ kill -9 40466
$ kill -9 40467

ntopmakinemde 3000 numaralı bağlantı noktasını kullanıyordu. Cevap yerinde.
Tass

47

pgrep ruby hangi sunucuların çalıştığını görmek için

kill -9 serverNumber

;)



6

Bu hatayı alıyorum çünkü içinde Rails olan rails-dev-box çalıştırıyordum .

Port 3000 in the host computer is forwarded to port 3000 in the virtual machine. 
Thus, applications running in the virtual machine can be accessed via 
localhost:3000 in the host computer.

Yani Vagrant'tan çıkış yapıldı ve kapatıldı:

vagrant@rails-dev-box:/vagrant/rails$ exit
$ vagrant halt

Bu bana yardımcı oldu.


Ben de aynı sorunu yaşadım. Ayrı bir projeden kaçan serseri vardı. Muhtemelen yaygın değil, ama bana yardımcı oldu. Teşekkürler! +1
jake

5

Bu hatayı aldım çünkü zaten başka bir terminalde ray çalıştırıyordum. Diğer projemi kapatmak bunu düzeltti.


1
Her iki programı da aynı anda çalıştırmak istiyorsanız, ikinci sunucunuzu farklı bir bağlantı noktasından başlatabilirsiniz.
Kevin

@Kevin harika nokta. Yapmaya çalıştığım şey bu değildi, sadece diğer projenin çalıştığını unuttum.
aarona

@DJ Bu mantıklı.
Kevin

2

Tatilden ofise döndükten sonra benzer bir sorunla karşılaştım. Sunucumu yerel IP'de şu şekilde çalıştırıyorum:

rails s thin -b <my_ip>

Sorun, IP'min değişmesiydi, sadece yenisini kullanmam gerekiyordu.


2

Bunu terminalde yürütün

sudo netstat -lpn |grep rails

Ve sonra

sudo kill <job id>

Raylar yerine inceltmek zorunda kaldım, ancak süreçlerimi bulabilmemin tek yolu buydu.
skillet-thief

Evet, çoğu durumda işe yarıyor. Eğer beğendiyseniz lütfen oy verin.
Sam

İşlem kimliğini bulmak ve öldürmek hile yaptı. İlk komut benim için işe yaramadı ama ps aux | grep rails.
Francisco Quintero
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.