บางเว็บเซิร์ฟเวอร์: start_tcp_server: ไม่ยอมรับ (RuntimeError) หลังจากการชำระเงินสาขา git


110

แอพ Rails 3.2.0 ทำงานได้ดีกับ Thin Web Server ทั้งในเครื่องและบน Heroku cedar stack

หลังจาก:

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

ฉันติดตั้ง Bundler 1.0.22 แล้ว อัปเดตและติดตั้ง ดูเหมือนจะไม่มีอะไรทำงาน ความคิดใด ๆ ?


1
คุณมีเซิร์ฟเวอร์ที่ทำงานอยู่ที่อื่นบนเครื่องหรือไม่? บางทีอาจเป็นแตงกวาหรืออะไร?
Josh Leitzel

1
ไม่ฉันยังไม่ได้ อันที่จริงการรีสตาร์ทคอมพิวเตอร์ช่วยแก้ปัญหาของฉันได้ วันนี้มันเกิดขึ้นอีกแล้ว ดูเหมือนจะเกิดขึ้นเมื่อฉันเปลี่ยนจากสาขาคอมไพล์หนึ่งไปยังอีกสาขาหนึ่ง
maeseele

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

เหมือนกันสำหรับฉันเมื่อฉันพยายามใช้พอร์ตเดียวกันเพื่อเรียกใช้แอปพลิเคชันที่แตกต่างกันสองตัว หัวข้อนี้ทำให้ฉันคิดถึงแอปพลิเคชันอื่น ๆ ที่กำลังทำงานอยู่
Vadorequest

คำตอบ:


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
Kevin

3
เกิดขึ้นแน่นอนบน OSX ถ้าคุณออกจากหน้าต่างเทอร์มินัลในขณะที่เซิร์ฟเวอร์รางกำลังทำงาน +1
notaceo


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 บนเครื่องของฉัน คำตอบคือจุด
Tass

47

pgrep ruby เพื่อดูว่าเซิร์ฟเวอร์ใดกำลังทำงานอยู่แล้ว

kill -9 serverNumber

;)



6

ฉันมีข้อผิดพลาดนี้เนื่องจากฉันใช้งานrail-dev-boxโดยมี Rails อยู่ข้างใน

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 และปิดมัน:

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

ที่ช่วยฉัน


ผมมีปัญหาเหมือนกัน. ฉันมีคนเร่ร่อนวิ่งหนีจากโครงการแยกต่างหาก อาจจะไม่ธรรมดา แต่ก็ช่วยฉันได้ ขอบคุณ! 1
Jake

5

ฉันพบข้อผิดพลาดนี้เนื่องจากฉันใช้รางในเทอร์มินัลอื่นอยู่แล้ว การปิดโครงการอื่นของฉันแก้ไขสิ่งนี้


1
หากคุณต้องการเรียกใช้ทั้งสองโปรแกรมพร้อมกันคุณสามารถเริ่มเซิร์ฟเวอร์ที่สองของคุณบนพอร์ตอื่นได้
Kevin

@ เควินจุดดี. นั่นไม่ใช่ฉันกำลังพยายามทำอยู่ลืมไปว่าอีกโครงการกำลังดำเนินอยู่
aarona

@DJ ที่สมเหตุสมผล ฉันโพสต์ความคิดเห็นของฉันสำหรับผู้อ่านในอนาคต :)
Kevin

2

ฉันพบปัญหาที่คล้ายกันหลังจากกลับไปที่สำนักงานจากวันหยุดพักผ่อน ฉันเรียกใช้เซิร์ฟเวอร์ของฉันบน IP ภายในเครื่องเป็น:

rails s thin -b <my_ip>

ปัญหาคือว่า IP ของฉันมีการเปลี่ยนแปลงฉันต้องใช้ใหม่


2

ดำเนินการในเทอร์มินัล

sudo netstat -lpn |grep rails

แล้ว

sudo kill <job id>

นี่เป็นวิธีเดียวที่ฉันสามารถค้นหากระบวนการของฉันได้แม้ว่าฉันจะต้อง grep สำหรับบางแทนราง
ขโมยกระทะ

ใช่มันใช้งานได้เกือบทุกกรณี หากคุณชอบโหวตโปรด
แซม

การค้นหาและฆ่ารหัสกระบวนการเป็นเคล็ดลับ แม้ว่าคำสั่งแรกไม่ได้ทำงานให้ฉัน ps aux | grep railsแต่
Francisco Quintero
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.