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

Posted

技术标签:

【中文标题】Apache-Passenger 上的 Rails 应用程序 - 在 localhost 上运行良好,但不能通过远程访问【英文标题】:Rails app on Apache-Passenger - runs fine on localhost but not via remote access 【发布时间】:2017-02-26 16:37:55 【问题描述】:

我在 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

我做错了什么?如果您需要更多信息,请告诉我。

【问题讨论】:

【参考方案1】:

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

另外,请提供以下输出:

sudo netstat -nl
sudo iptables -L

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

使用 telnetnetcat 可以轻松测试 TCP 连接:

telnet server.name.com 3000

如果你得到类似的东西:

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

那么这意味着您可以正确访问 TCP 端点,消除任何与网络相关的问题的可能性。换句话说,如果这可行,那么您的 Apache 可能存在配置问题。

【讨论】:

【参考方案2】:

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

例如,看看apache not accepting incoming connections from outside of localhost 和Apache VirtualHost and localhost。

【讨论】:

以上是关于Apache-Passenger 上的 Rails 应用程序 - 在 localhost 上运行良好,但不能通过远程访问的主要内容,如果未能解决你的问题,请参考以下文章

Rails 3 rc 上的 Macvim 和 rails.vim - 未初始化的常量 Bundler (NameError)

Heroku 上的 Rails 3.2 资产编译问题

Rails 上的 SASS 无效 CSS 错误

如何通过 https 和 heroku 上的 rails 服务云端资产?

从 Rails 4 视图上的单选按钮获取输入

Rails 上的条纹 Webhook