не могу запустить процесс Sinatra - eventmachine нет акцептора

У меня есть приложение Sinatra, которое я запускаю как демон, используя переадресацию портов Apache для связи между портами 80 и 7655. В прошлом это работало нормально. Сегодня не очень. Я не могу понять, почему.

Проблема: sudo ruby my_process.rb возвращает:

/var/lib/gems/1.9.1/gems/eventmachine-1.0.0/lib/eventmachine.rb:526:in `start_tcp_server': no acceptor (port is in use or requires root privileges) (RuntimeError)

Пробовал: обновить все системные пакеты, обновить все гемы. Никакой помощи (за исключением более четкого сообщения об ошибке от eventmachine).

Когда я запускаю sudo lsof -i :7655, я ничего не получаю. Когда я запускаю sudo ps aux, я вообще не вижу никаких процессов Ruby. Что я нахожу крайне неправильным, учитывая характер сообщения об ошибке!

Так есть ли что-то, чего мне не хватает, чтобы выяснить, почему порт недоступен?


Также:

Пробовал менять порты, ничего. Интересно, связано ли это с «localhost»? Когда я пингую localhost, я получаю все потерянные пакеты. Это не кажется нормальным.


person mlibby    schedule 30.09.2012    source источник
comment
Что именно вы используете для запуска my_process.rb?   -  person pje    schedule 30.09.2012
comment
Извините, надо было прочитать sudo ruby my_process.rb   -  person mlibby    schedule 01.10.2012


Ответы (1)


Оказывается, эти две строки в основном сценарии Синатры содержат больше всего информации:

set bind: "localhost"
set port: 7655

Проблема была с локалхостом. Интерфейс loopback не был настроен должным образом. ifconfig показал интерфейс lo, но ему не был назначен IP 127.0.0.1. Чтобы решить эту проблему, запустите следующие команды в оболочке (в системе Ubuntu Linux):

ifdown lo
ifup lo
person mlibby    schedule 08.10.2012
comment
Можете ли вы предоставить более подробную информацию об этом ответе. Где вы разместили ifdown lo и ifup lo, если это решение. Я не могу понять, что делать... - person BrainLikeADullPencil; 27.12.2012
comment
@BrainLikeADullPencil: ifdown И ifup — это команды Linux/MacOS для запуска и остановки петлевого (программного) сетевого адаптера. Они не должны не быть необходимыми для вашего вопроса< /а>. Главное — изменить адрес привязки в вашем сценарии Sinatra и посмотреть, поможет ли это при ошибке использования порта, которую вы сейчас получаете для порта № 4567. - person paulsm4; 28.12.2012
comment
@ paulsm4 спасибо, но мне никогда раньше не приходилось устанавливать адрес привязки, и установка его сейчас не работает. Я обновил ОП, добавив немного больше информации, которая может объяснить источник проблемы, даже если я не вижу решения. - person BrainLikeADullPencil; 28.12.2012