2016-10-17 3 views
0

У меня есть приложение Rails, развернутое на Apache-Passenger, которое отлично работает при доступе с локального хоста, но не работает через удаленный доступ.Приложение Rails на Apache-Passenger - отлично работает на локальном хосте, но не через удаленный доступ

Предположим, что имя сервера server.name.com. Информационный сервер -

[[email protected] KBC]$ uname -a 
Linux server.name.com 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux 
[[email protected] KBC]$ cat /etc/issue 
CentOS release 6.5 (Final) 
Kernel \r on an \m 

Когда я
[[email protected] ]$ curl http://localhost:3000/, он возвращает домашнюю страницу для приложения.

Но когда я пытаюсь получить доступ к приложению Rails из моего ноутбука, я получаю следующее сообщение об ошибке -

→ curl http://server.name.com:3000/ 
curl: (7) Failed to connect to server.name.com port 3000: Connection refused 

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

→ ping server.name.com:3000 
ping: cannot resolve server.name.com:3000: Unknown host 

Но Я могу пинговать сервера по -

→ ping server.name.com 
PING server.name.com (@[email protected]@[email protected]): 56 data bytes 
64 bytes from @[email protected]@[email protected]: icmp_seq=0 ttl=61 time=1.526 ms 
64 bytes from @[email protected]@[email protected]: icmp_seq=1 ttl=61 time=6.624 ms 

Вот конфигурация пассажира -

444451 Информация 6410617451515053691368888
<VirtualHost *:3000> 
    ServerName server.name.com 
    ServerAlias server.name.com 
    DocumentRoot /home/kbc/KBC/public 
    <Directory /home/kbc/KBC/public> 
     AllowOverride all 
     Options -MultiViews 
    </Directory> 
    ErrorLog /var/log/httpd/kbc_error.log 
    CustomLog /var/log/httpd/kbc_access.log common 
</VirtualHost> 

NameVirtualHost *:3000 
PassengerPreStart https://server.name.com:3000/ 

и

LoadModule passenger_module /home/kbc/.rvm/gems/[email protected]/gems/passenger-5.0.30/buildout/apache2/mod_passenger.so 
<IfModule mod_passenger.c> 
     PassengerRoot /home/kbc/.rvm/gems/[email protected]/gems/passenger-5.0.30 
     PassengerDefaultRuby /home/kbc/.rvm/wrappers/ruby-2.3.0/ruby 
     PassengerRuby /home/kbc/.rvm/wrappers/ruby-2.3.0/ruby 
     PassengerMaxPoolSize 5 
     PassengerPoolIdleTime 90 
     PassengerMaxRequests 10000 
</IfModule> 

Passenger-статус -

[[email protected] ]$ passenger-status 
Version : 5.0.30 
Date : 2016-10-17 11:30:08 -0400 
Instance: bKUJ0ptp (Apache/2.2.15 (Unix) DAV/2 Phusion_Passenger/5.0.30) 

----------- General information ----------- 
Max pool size : 5 
App groups : 1 
Processes  : 1 
Requests in top-level queue : 0 

----------- Application groups ----------- 
/home/kbc/KBC: 
    App root: /home/kbc/KBC 
    Requests in queue: 0 
    * PID: 5696 Sessions: 0  Processed: 1  Uptime: 1m 45s 
    CPU: 0%  Memory : 38M  Last used: 1m 45s ago 

Что я делаю неправильно? Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

ответ

2

Это звучит как проблема с подключением, а не проблема с пассажиром/Apache. Хост, на котором запущен сервер, может не принимать входящие подключения на порт 3000 (из-за правил контроля доступа iptables, брандмауэра или безопасности).

Взгляните на apache not accepting incoming connections from outside of localhost и Apache VirtualHost and localhost, например.

1

@ Не можете ли вы отправить основную конфигурацию apache? (Файл /etc/apache2/apache2.conf или аналогичный)

Кроме того, просьба представить выход из следующих действий:

sudo netstat -nl 
sudo iptables -L 

Просто для записи, пинг утилита может только проверить подключение на IP-уровень, что означает, что он может сообщить вам, отвечает ли хост на заданном IP-адресе. Однако он не может сказать вам, открыт ли конкретный порт TCP в удаленной системе.

Тестирование TCP соединение может быть легко достигнуто с телнетом или Netcat:

telnet server.name.com 3000 

Если вы получите что-то вроде:

Trying @[email protected]@[email protected] 
Connected to server.name.com. 
Escape character is '^]'. 

, то это означает, что вы можете правильно получить доступ к TCP конечной точки , устраняя любую возможность сетевых проблем.Другими словами, если это работает, у вас, вероятно, есть проблема с конфигурацией с Apache.