Apache-Passenger上的Rails应用程序 - 在localhost上运行正常,但不能通过远程访问运行

时间:2016-10-17 15:50:48

标签: ruby-on-rails apache ruby-on-rails-4 centos passenger

我在Apache-Passenger上部署了一个Rails应用程序,当从localhost访问时运行良好,但不能通过远程访问运行。

假设服务器名称为server.name.com。服务器信息是 -

[kbc@server 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
[kbc@server KBC]$ cat /etc/issue
CentOS release 6.5 (Final)
Kernel \r on an \m

当我这样做时 [kbc@server ]$ 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服务器
→ ping server.name.com
PING server.name.com (@.@.@.@): 56 data bytes
64 bytes from @.@.@.@: icmp_seq=0 ttl=61 time=1.526 ms
64 bytes from @.@.@.@: icmp_seq=1 ttl=61 time=6.624 ms

以下是乘客配置 -

<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/ruby-2.3.0@kbc/gems/passenger-5.0.30/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
        PassengerRoot /home/kbc/.rvm/gems/ruby-2.3.0@kbc/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>

乘客状态信息 -

[kbc@server ]$ 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 个答案:

答案 0 :(得分:2)

这听起来像连接问题,而不是乘客/ Apache问题。您运行服务器的主机可能不接受端口3000上的入站连接(由于iptables,防火墙或安全组访问控制规则)。

例如,请查看apache not accepting incoming connections from outside of localhostApache VirtualHost and localhost

答案 1 :(得分:1)

@Jatin,请你发布apache主配置吗? (/etc/apache2/apache2.conf或类似的)

另外,请提供以下内容:

sudo netstat -nl
sudo iptables -L

仅供记录, ping 实用程序只能测试 IP层的连接,这意味着它可以告诉您给定IP的主机是否正在响应。但是,它不能告诉您远程系统上是否打开了特定的TCP端口。

使用 telnet netcat 可以轻松实现TCP连接测试:

telnet server.name.com 3000

如果您得到类似的内容:

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

然后这意味着您可以正确访问TCP端点,消除任何与网络相关的问题。换句话说,如果这样可行,您可能会遇到Apache的配置问题。