0

我将一个 RoR 应用程序部署到我的服务器,并带有一个额外的 Apache2 虚拟主机文件:

<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 could not connect to 10.50.10.75:9051

请帮帮我!

谢谢。

4

2 回答 2

2

你太努力了。如果您像您一样在服务器上,应用程序在各种端口上运行(它们可能是 dev / staging,对吗?),并且您只想在端口:9501访问此应用程序,那么简单的方法是抛弃阿帕奇。你需要的只是乘客,你可以这样开始,没有 -a 选项

passenger start -p 9051 -e production -d

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

最后一条建议:不要使用浏览器来测试这种东西。使用卷曲。例如,

curl --head http://x.y.z.a:9051
于 2012-07-11T19:05:33.693 回答
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>

注意:现在不需要从命令行启动乘客,这应该已经这样做了。

这对我有用。

于 2012-07-11T05:58:52.317 回答