पतला वेब सर्वर: `start_tcp_server ': कोई भी स्वीकर्ता (रनटाइम ईयरर), शाखा शाखा के बाद नहीं


110

एक रेल 3.2.0 एप्लिकेशन, जो थिन वेब सर्वर के साथ, स्थानीय और हरोकू देवदार स्टैक दोनों पर ठीक काम करता है।

उपरांत:

$ git branch work
$ git checkout work
$ rails server

मुझे मिला:

=> 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>'

इसके अलावा, जब मैं करता हूं:

sudo bundle exec rails server thin -p 3000

मुझे मिला:

/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 बंडल है। अद्यतन और इसे स्थापित किया। कुछ भी काम नहीं लगता। कोई विचार?


1
क्या आपके पास मशीन पर पहले से ही एक सर्वर चल रहा है? शायद ककड़ी में या कुछ और?
Le:

1
नहीं, मैंने नहीं। दरअसल, मेरे कंप्यूटर को पुनरारंभ करने से मेरी समस्या हल हो गई थी। आज फिर वही हुआ। तब होता है जब मैं एक गिट शाखा से दूसरे में स्विच करता हूं।
मैसेले

2
धन्यवाद! MacOSX पर मेरे त्रुटि संदेश था ... eventmachine-1.0.0/lib/eventmachine.rb:526:in `start_tcp_server': no acceptor (port is in use or requires root privileges) (RuntimeError)
JJD

मेरे लिए समान है जब मैंने दो अलग-अलग एप्लिकेशन को चलाने के लिए एक ही पोर्ट का उपयोग करने की कोशिश की। इस विषय ने मुझे अन्य चल रहे एप्लिकेशन के बारे में सोचने के लिए प्रेरित किया।
वडकोरक्वेस्ट

जवाबों:


226

यह मेरे लिए काम करता है। खोजें (ज़ोंबी?) सर्वर (सर्वर के चलने के साथ टर्मिनल छोड़ने पर हो सकता है):

$ ps ax | grep rails

यदि यह कुछ इस तरह लौटाता है:

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

इसे मार डालो, और नए सिरे से भागो:

$ kill -9 33240
$ rails s

17
यदि ps ax | grep railsकुछ भी चालू नहीं होता है, तो प्रयास करें ps ax | grep ruby
केविन

3
निश्चित रूप से OSX पर होता है यदि आप सीधे रेल विंडो को छोड़ देते हैं जबकि रेल सर्वर चल रहा है। +1
notaceo

63

पोर्ट 3000 पहले से ही उपयोग में हो सकता है। को देखो http://mrjaba.posterous.com/starttcpserver-no-acceptor-runtimeerror


2
उपर्युक्त लेख से, पहले से चल रहे रेल सर्वरों का पता लगाने के लिए एक कमांड (मैक पर काम करता है): ps aux | grep rails
ल्यूक ग्रिफिथ्स

48

यदि पोर्ट को बंद करने की कोई अन्य प्रक्रिया है, तो आप यह पता लगा सकते हैं कि यह किस PID की तरह है:

$ 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)

तो बस इसे मार / उन्हें:

$ kill -9 40466
$ kill -9 40467

ntopमेरी मशीन पर पोर्ट 3000 का उपयोग कर रहा था। उत्तर हाजिर है।
तस्स

47

pgrep ruby यह देखने के लिए कि सर्वर क्या चल रहा है और फिर

kill -9 serverNumber

;)



6

मेरे पास यह त्रुटि है क्योंकि मैं इसके अंदर रेल के साथ रेल-देव-बॉक्स चला रहा था ।

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.

तो वैग्रंट से लॉग आउट किया गया और इसे बंद कर दिया गया:

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

इससे मुझे मदद मिली।


मुझे भी यही समस्या थी। मैं एक अलग परियोजना से भाग रहा था। शायद आम नहीं, लेकिन इससे मुझे मदद मिली। धन्यवाद! +1
जेक

5

मेरे पास यह त्रुटि थी क्योंकि मैं पहले से ही दूसरे टर्मिनल में रेल चला रहा था। मेरी अन्य परियोजना को बंद करना यह तय किया


1
यदि आप एक ही बार में दोनों प्रोग्राम चलाना चाहते हैं, तो आप अपना दूसरा सर्वर अलग पोर्ट पर शुरू कर सकते हैं।
केविन

@ केविन महान बिंदु। मैं ऐसा करने की कोशिश नहीं कर रहा था, बस भूल गया था कि दूसरी परियोजना चल रही थी।
ऐरोना

@DJ यह समझ में आता है। मैं भविष्य के पाठकों के लिए अपनी टिप्पणी पोस्ट कर रहा था :)
केविन

2

मैं छुट्टी से ऑफिस वापस आने के बाद इसी तरह के मुद्दे पर भाग गया। मैं अपना सर्वर स्थानीय IP पर चलाता हूं:

rails s thin -b <my_ip>

समस्या यह थी कि मेरा आईपी बदल गया था, मुझे बस नए का उपयोग करने की आवश्यकता थी।


2

टर्मिनल में इसे निष्पादित करें

sudo netstat -lpn |grep rails

और तब

sudo kill <job id>

यह एकमात्र तरीका था जिससे मैं अपनी प्रक्रियाओं को खोजने में सक्षम था, हालांकि मुझे रेल के बजाय पतले के लिए पकड़ना था।
स्किलेट-चोर

हाँ, यह अधिकांश मामलों में काम करता है। अगर आपको वोट पसंद आया हो तो कृपया
सैम

प्रोसेस आईडी को खोजने और मारने का काम किया। हालांकि पहले आदेश ने मेरे लिए काम नहीं किया लेकिन ps aux | grep rails
फ्रांसिस्को क्विनटो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.