Не могу получить доступ к портам, назначенным для Rails 4.2, но 4.04 работает нормально

8

У меня установлен Ruby 2.1.2 и Rails 4.2.

Установка пакета запускается без ошибок.

Я могу сделать Rails C без ошибок.

Rails s -p3004 запускается с вебриком или тонким без ошибок

Когда я захожу на сайт mytestsite: 3004 safari, firefox и chrome, все сообщают, что «не удается подключиться к серверу»

Никаких ошибок не показывать ни в каких системных журналах; syslog, lfd.log, auth.log или любой из журналов apache.

Если я запускаю свой сайт 4.04, порты 3001, 3002 работают нормально. Если я отключаю 4.04 и запускаю 4.2 на порте 3001 или 3002, я получаю ошибку «не удается подключиться к серверу». Мне кажется, это означает, что проблема не в брандмауэре, блокирующем порт. Тем не менее, iptables -L сообщает, что порт 3004 открыт:

ACCEPT     tcp  --  anywhere             anywhere             ctstate NEW tcp dpt:3004

Rails сообщает:

=> Booting WEBrick  
=> Rails 4.2.0.beta1 application starting in development on http://localhost:3004   
=> Run `rails server -h` for more startup options  
=> Ctrl-C to shutdown server  
[2014-09-02 21:31:06] INFO WEBrick 1.3.1  
[2014-09-02 21:31:06] INFO ruby 2.1.1 (2014-02-24) [x86_64-linux]  
[2014-09-02 21:31:06] INFO WEBrick::HTTPServer#start: pid=4599 port=3004  

(тот же результат с тонким).

Telnet localhost 3004 работает с сервера, однако telnet с другого сервера на порт и IP-адрес приводит к отказу в соединении.

и ps сообщает, что программа загружена:

ps aux|grep 3004  
user 1062 0.0 0.5 578600 183996 pts/2 Sl+ 20:15 0:03 /home/user/.rvm/rubies/ruby-    2.1.1/bin/ruby bin/rails s -p3004

что также подтверждается netstat:

netstat -tpln | grep 3004  
tcp 0 0 127.0.0.1:3004 0.0.0.0:* LISTEN 1062/ruby  

но mmap сообщает, что порт закрыт:

Starting Nmap 6.40 ( http://nmap.org ) at 2014-09-02 21:33 UTC  
Nmap scan report for localhost (127.0.0.1)  
Host is up (0.000059s latency).  
rDNS record for 127.0.x.1: local_host.local_domain  
PORT STATE SERVICE  
3004/udp closed unknown  

И телнет к серверу 3004 сообщает, что в соединении отказано.

Как я уже сказал, я думаю, что это проблема брандмауэра, за исключением того, что переход на порт 3001, который, как я знаю, работает с Rails 4.04, завершается с 4.2. У кого-нибудь есть предложения?

UnConundrum
источник

Ответы:

16

WEBrick привязан к 127.0.0.1, а не к INADDR_ANY, поэтому вы можете получить к нему доступ только через этот адрес. Если вы хотите установить, к какому адресу он привязан, используйте -bопцию. Например:

rails s -b 0.0.0.0 -p 3004
Майкл Хэмптон
источник