如何在没有域名的情况下使用 Passenger/Apache 提供 Rails 应用程序?

如何在没有域名的情况下使用 Passenger/Apache 提供 Rails 应用程序?

我正在尝试在 Ubuntu 服务器上使用 Passenger 和 Apache 提供 Rails 应用程序。

Passenger 安装说明说我应该将以下内容添加到我的 Apache 配置文件中 - 我假设这是 /etc/apache2/httpd.conf。

<VirtualHost *:80>
   ServerName www.yourhost.com
   DocumentRoot /somewhere/public    # <-- be sure to point to 'public'!
   <Directory /somewhere/public>
      AllowOverride all              # <-- relax Apache security settings
      Options -MultiViews            # <-- MultiViews must be turned off
   </Directory>
</VirtualHost>

但是,我还没有指向我的服务器的域,所以我不确定应该在 ServerName 参数中输入什么。我试过输入 IP 地址,但当我这样做时,重新启动 Apache 会给出

apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[Sun Jan 17 12:49:26 2010] [error] VirtualHost *:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[Sun Jan 17 12:49:36 2010] [error] VirtualHost *:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results

并将浏览器指向该 IP 地址会出现 500 内部服务器错误。

我最接近合理的是

<VirtualHost efate:80>
   ServerName efate 
   DocumentRoot /root/jpf/public
   <Directory /root/jpf/public>
      AllowOverride all
      Options -MultiViews
   </Directory>
</VirtualHost>

其中“efate”是我的服务器的主机名。但是现在将浏览器指向服务器的 IP 地址只会显示一个页面,提示“成功了!”——这可能是一个默认页面,但我不确定该页面是从哪里提供的。

我可能错了,认为我无法让它工作的原因与没有域名有关。这是我第一次直接使用 Apache - 任何帮助都将不胜感激!

答案1

您有几个选择。首先,您可以直接浏览到您的服务器主机名,例如: http://efate/? 如果是这样,您就大功告成了。

或者,你可以使用 apache 的默认主机设置

类似这样的事情应该对你有用:

<VirtualHost *:80>
      ServerName _default_
      DocumentRoot /root/jpf/public
</VirtualHost>

最后,您可以在本地主机文件中设置一个域,并将其指向您的服务器的 IP,然后使用该域访问服务器。

答案2

在进行服务器迁移之前,我发现自己处于这种情况。

在服务器端,我正确配置了服务器,然后在本地使用“ghost”rubygem 修改我的主机(相当于 OS X),这样我就可以在翻转 DNS 之前测试所有是否正确

答案3

我的 rails 也遇到了类似的问题,只不过在这种情况下,我不需要域名。我所做的就是将 vhost 容器设置在不同的端口上:

<VirtualHost *:1234>
   ServerName domain.com
   RailsEnv development
   DocumentRoot /path/to/app/public
   <Directory /path/to/app/public>
      AllowOverride all
      Options -MultiViews
   </Directory>
</VirtualHost>

然后设置 apache 来监听该端口:

Listen 1234

这对我有用。

答案4

我使用的 Ubuntu 版本在 /etc/apache/sites-enabled 中有虚拟服务器配置文件。我怀疑“It works”页面是从 /var/www/htdocs 提供的,并在 /etc/apache/sites-enabled/000-default 文件中指定。编辑此配置文件后,您可能只需使用机器名称即可访问它。

相关内容