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 端口。
使用 telnet 或 netcat 可以轻松测试 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)