Thin 웹 서버 :`start_tcp_server ': git 브랜치 체크 아웃 후 수락 자 없음 (RuntimeError)


110

로컬 및 Heroku cedar 스택에서 Thin 웹 서버와 잘 작동하는 Rails 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
머신의 다른 곳에서 이미 실행중인 서버가 있습니까? 아마도 오이 같은 거에요?
Josh Leitzel 2012 년

1
아뇨. 실제로 컴퓨터를 다시 시작하면 문제가 해결되었습니다. 오늘 다시 일어났습니다. 한 git 브랜치에서 다른 브랜치로 전환 할 때 발생하는 것 같습니다.
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 2014

답변:


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
Rails 서버가 실행되는 동안 터미널 창을 곧바로 종료하면 OSX에서 확실히 발생합니다. +1
notaceo 2014 년


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

;)


8

rvmsudo 레일 서버 Thin -p 3000

나를 위해 해


6

Rails가 내부에있는 rails-dev-box 를 실행했기 때문에이 오류가 발생 합니다.

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 jul.

5

이미 다른 터미널에서 레일을 실행하고 있었기 때문에이 오류가 발생했습니다. 내 다른 프로젝트를 닫으면이 문제가 해결되었습니다.


1
두 프로그램을 동시에 실행하려면 다른 포트에서 두 번째 서버를 시작할 수 있습니다.
Kevin

@ 케빈 좋은 지적. 그것은 내가하려고 한 것이 아니라 다른 프로젝트가 실행되고 있다는 것을 잊었습니다.
aarona 2014 년

@DJ 말이 되네요. 나는 미래의 독자를 위해 내 코멘트를 게시하고 있었다 :)
Kevin

2

휴가를 마치고 사무실로 돌아온 후 비슷한 문제가 발생했습니다. 로컬 IP에서 서버를 다음과 같이 실행합니다.

rails s thin -b <my_ip>

문제는 내 IP가 변경되어 새 IP를 사용해야한다는 것입니다.


2

터미널에서 실행

sudo netstat -lpn |grep rails

그리고

sudo kill <job id>

레일 대신 씬을 grep해야했지만 프로세스를 찾을 수있는 유일한 방법이었습니다.
skillet-thief

예, 대부분의 경우 작동합니다. 당신이 좋아한다면 투표하십시오.
Sam

프로세스 ID를 찾아서 죽이는 것이 트릭을 수행했습니다. 첫 번째 명령은 나를 위해 작동하지 않았지만 ps aux | grep rails.
Francisco Quintero
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.