一个端口上的多个Ruby应用程序,RackBaseURI帮助

时间:2011-04-11 23:09:46

标签: ruby passenger

我正在尝试从同一个端口使用两个Ruby应用程序。我根本不了解服务器技术,所以请原谅我的无知。我试图遵循这个文档:

http://www.modrails.com/documentation/Users%20guide%20Apache.html

4.1 - 4.3节,但我一直在搞乱。我试着简化一下,所以这是我的情况。我这里有两个简单的机架式应用程序:

/用户/旦/ web应用/ TEST1 /用户/旦/ web应用/ TEST2

按照指示,它们每个都有“config.ru”文件,公共/文件夹和带有“restart.txt”的tmp /文件夹。他们都是自己工作的。

我的httpd.conf文件中有以下内容:

<VirtualHost *:80>
  ServerName localhost
  DocumentRoot /Users/dan/webapps
  <Directory /Users/dan/webapps>
      Allow from all
  </Directory>
  RackBaseURI /test1
  <Directory /Users/dan/webapps/test1>
    Options -MultiViews
  </Directory>
  RackBaseURI /test2
  <Directory /Users/dan/webapps/test2>
    Options -MultiViews
  </Directory>
</VirtualHost>

我启动apache,然后将其放入浏览器中:http://localhost/test1。我明白了:

禁止

您无权访问此服务器上的/ test1。

我并不感到惊讶它不起作用,因为我应该设置一个符号链接,但我不知道如何将它应用到我的设置。以下是doc中的示例:

ln -s / webapps / rackapp / public / websites / phusion / rack

您能告诉我如何设置符号链接,如果您发现其他任何错误,请告诉我?请给出“傻瓜”答案,这些东西让我难以置信。谢谢!

2 个答案:

答案 0 :(得分:0)

要创建符号链接,请尝试以下操作:

ln-s /Users/dan/webapps/test1 /Users/dan/webapps/test1/public
ln-s /Users/dan/webapps/test2 /Users/dan/webapps/test2/public

但是,正如chris polzer所提到的那样,您还应该检查您的apache用户是否可以从这些目录中读取。

如果您不知道如何操作,请发布这些命令的输出:

ls -l /Users/dan/webapps/test1
ls -l /Users/dan/webapps/test2.
ps -aux | grep http
ps -aux | grep apache

您可能还需要检查所有父目录的权限。即/ Users,/ Users / dan和/ Users / dan / webapps。请参阅:http://www.modrails.com/documentation/Users%20guide%20Apache.html#_deploying_to_a_virtual_host_8217_s_root_2

答案 1 :(得分:0)

phylae,我想你可能在符号链接中反转了路径。为了使其正常工作,为了清楚起见,我更改了链接名称:

<VirtualHost *:80>
  ServerName localhost
  DocumentRoot /Users/dan/webapps
  <Directory /Users/dan/webapps>
      Allow from all
  </Directory>
  RackBaseURI /test1link
  <Directory /Users/dan/webapps/test1>
    Options -MultiViews
  </Directory>
  RackBaseURI /test2link
  <Directory /Users/dan/webapps/test2>
    Options -MultiViews
  </Directory>
</VirtualHost>

然后,符号链接:

ln -s / Users / dan / webapps / test1 / public / Users / dan / webapps / test1link

ln -s / Users / dan / webapps / test2 / public / Users / dan / webapps / test2link

然后这些网址在浏览器中按预期工作。

http://localhost/

http://localhost/test1link

http://localhost/test2link