2015-01-08 18 views
6

Khi tôi thử và chạy máy chủ với EventMachine::run Tôi tiếp tục nhận được lỗi thông báo rằng cổng đang được sử dụng. Điều này bắt đầu kể từ khi tôi chạy máy chủ trong nền với lệnh nohup.EventMachine: "` start_tcp_server ': không chấp nhận (cổng đang được sử dụng hoặc yêu cầu quyền root) "

Tôi khá chắc chắn rằng tôi đã giết quá trình tôi bắt đầu.

  • Tôi đã tìm thấy quy trình ruby ​​với ps và đã xóa nó. Nó không còn xuất hiện nữa.
  • Tôi cũng chạy lsof -i :8081 (8081 là cổng mà tôi đã bật) và không có gì hiển thị.
  • Cuối cùng, tôi đã thay đổi cổng trong chương trình ruby ​​một số lần để che khuất các cổng và vẫn còn nhận lỗi!

Tôi cũng cho dù đó có thể là do tôi thiếu người dùng gốc, vì vậy hãy thử nó làm gốc để không có kết quả.

Tôi cũng đã khởi động lại máy chủ.

Vui lòng cho tôi biết nếu có bất kỳ điều gì khác tôi có thể thử.

Lưu ý: đây là trên debian.

Trả lời

12

Tôi cuối cùng cũng đã tìm ra được: đó thực sự là địa chỉ IP mà tôi đã ràng buộc với điều đó là không chính xác!

Vì vậy, về bản chất nó là một thông báo lỗi rất gây hiểu lầm và nếu bạn nhận được nó, hãy kiểm tra địa chỉ IP.

+0

Đối với tôi, nó đã giúp thay đổi đường ray s -b 0.0.0.0 thành -b 127.0.0.1 –

12

Điều này xảy ra khi bạn không dừng máy chủ chính xác, ví dụ: khi bị tạm ngưng bằng Ctrl + Z hoặc chạy máy chủ hai lần.

Nếu dừng lại bởi Ctrl + Z, điều này làm việc cho tôi:

Lấy quá trình chạy với:

$ ps ax | grep rails 
18192 pts/28 Sl+ 0:05 /home/admin/.rvm/rubies/ruby-2.1.2/bin/ruby bin/rails c 
20496 pts/23 Tl 0:08 /home/admin/.rvm/rubies/ruby-2.1.2/bin/ruby bin/rails s 
20919 pts/23 S+ 0:00 grep --color=auto rails 

Và sau đó giết chết quá trình, trong đó rails server chạy:

$ kill 20496 

Nếu nó không đóng sau vài giây, bạn có thể cố gắng "buộc" gần với (nhưng điều này ngăn chặn bất kỳ dọn dẹp nào từ Rails):

$ kill -9 20496 

Bây giờ bạn có thể bắt đầu các máy chủ một lần nữa:

$ rails s 
+0

Bạn cũng có thể sử dụng 'fg' để đưa tiến trình lên nền trước :-) – Carpetsmoker

8

Đã cùng một vấn đề.

Ran lsof -i :3000 (3000 là cổng mà tôi đã chạy).

Tôi phát hiện ra rằng cổng đã được sử dụng bởi ruby. Tôi đã giết quá trình này bằng cách sử dụng kill -9 *pid*.

Khi tôi chạy lại lsof -i :3000, không có gì hiển thị.

Sau đó, tôi chạy rails s và mọi thứ hoạt động tốt ngay bây giờ.

+0

Điều này làm việc cho tôi. – sinsuren

0

Chạy trên cổng miễn phí giải quyết vấn đề bằng cách:

rails s -p 3001 

hoặc

ruby script/rails server webrick -e production -p 3001 

hoặc

ruby script/rails server thin -e production -p 3001 
0

Trong trường hợp của tôi nó chỉ là vấn đề kết nối internet.

Các vấn đề liên quan