Ruby on Rails应用程序只能由localhost访问

时间:2012-07-11 04:27:47

标签: ruby-on-rails apache localhost passenger

我使用额外的Apache2虚拟主机文件将RoR应用程序部署到我的服务器:

<VirtualHost *:80>
    # ServerName ubuntu
    DocumentRoot /var/www/myapp/current/public
    PassengerEnabled off 
    ProxyPass / http://127.0.0.1:9051
    ProxyPassReverse / http://127.0.0.1:9051

    <IfModule mod_rewrite.c>
      RewriteEngine On

      # Redirect all requests to the maintenance page if present
      RewriteCond %{REQUEST_URI} !\.(css|gif|jpg|png)$
      RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
      RewriteCond %{SCRIPT_FILENAME} !maintenance.html
      RewriteRule ^.*$ /system/maintenance.html [L] 
    </IfModule>

</VirtualHost>

我使用Passenger启动它:

passenger start -a 127.0.0.1 -p 9051 -e production -d

这是一个Ubuntu服务器:

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 12.04 LTS
Release:    12.04
Codename:   precise

港口正在倾听:

plee@ubuntu:~$ sudo lsof -i :9051
[sudo] password for plee:
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   1016 plee    4u  IPv4 168135      0t0  TCP localhost:9051 (LISTEN)
nginx   1017 plee    4u  IPv4 168135      0t0  TCP localhost:9051 (LISTEN)
nginx   1017 plee    5u  IPv4 225556      0t0  TCP localhost:9051->localhost:44586 (ESTABLISHED)
ruby    1018 plee    5u  IPv4 225555      0t0  TCP localhost:44586->localhost:9051 (ESTABLISHED)

问题是,我的应用只能通过http://localhost:9051

访问

如果我尝试使用服务器的IP地址从另一台计算机连接:http://10.50.10.75:9051

Google Chrome让我:

Google Chrome could not connect to 10.50.10.75:9051

请帮帮我!

感谢。

2 个答案:

答案 0 :(得分:2)

你太努力了。如果你在像你这样的服务器上,应用程序在各种端口上运行(并且它们可能是开发/暂存,对吧?),而你只想在端口:9501 访问此应用程序那么简单的方法就是放弃Apache。所有你需要的是乘客,你就这样开始,没有-a选项

passenger start -p 9051 -e production -d

就是这样;你完成了。 (您可能希望确保您的防火墙(可能 ufw )没有阻止该端口,但如果您仍然遇到问题,这是唯一要测试的其他内容。)

最后一条建议:不要使用浏览器来测试这种事情。使用 curl 。例如,

curl --head http://x.y.z.a:9051

答案 1 :(得分:0)

如果你想访问它,你需要在另一个端口上访问它,你需要添加一个虚拟主机,你需要让apache听到该端口以及端口80

这是你需要的

#set the mod_passenger path **MAY BE DIFFERENT FOR YOU**
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.1.3
PassengerRuby /usr/bin/ruby1.8

#Listen to port 9501
Listen 9501

#add virtual host enty for port 9501
<VirtualHost *:9501>
        ServerName myservername
        DocumentRoot /var/www/tut/public

        <Directory /var/www/tut/public>
                Allow from all
                Options -MultiViews
        </Directory>


</VirtualHost>

注意:现在无需从命令行启动乘客,这应该已经完成​​了。

这对我有用。