我在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
我做错了什么?如果您需要更多信息,请与我们联系。
答案 0 :(得分:2)
这听起来像连接问题,而不是乘客/ Apache问题。您运行服务器的主机可能不接受端口3000上的入站连接(由于iptables,防火墙或安全组访问控制规则)。
例如,请查看apache not accepting incoming connections from outside of localhost和Apache 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的配置问题。