【问题标题】:Phusion Passenger Sub URI sym link problemsPhusion 乘客子 URI 符号链接问题
【发布时间】:2011-04-18 21:09:05
【问题描述】:

我正在使用 Apache 和 Phusion Passenger 在 Ubuntu 上部署一个子 URI rails 应用程序来

www.mydomain.com/suburi 

并且在配置它时遇到问题。现在我收到此错误:

Passenger Error #2
An error occurred while trying to access '/srv/www/mydomain/public/suburi': Cannot resolve possible symlink '/srv/www/mydomain/public/suburi': No such file or directory (2)

mydomain.com 的 rails 应用和 mydomain.com/suburi 的 rails 应用都位于 /srv/www/

我当前的虚拟主机是这样的:

<VirtualHost 173.230.137.212:80> 
  ServerName www.mydomain.com
  ServerAlias mydomain.com
  DocumentRoot /srv/www/mydomain/public
  ErrorLog /srv/www/error.log
  RewriteEngine On
  RewriteOptions Inherit
  RailsEnv production

<directory /srv/www/mydomain/public>
  Options Indexes FollowSymLinks -MultiViews
  AllowOverride all
  Order allow,deny 
  allow from all
</directory>

RailsBaseURI /suburi                   
<Directory /srv/www/suburi>
  Options -MultiViews               
</Directory>

我知道路径是正确的,但这是我唯一知道的正确路径。我的服务器管理技能并不出色。

我创建了一个从 mydomain.com 的公共文件夹到子 uri 的公共文件夹的符号链接。不确定我是否做对了,我发现文档不是那么好。我有什么遗漏和/或做错了吗?我是不是弄错了系统链接?

非常感谢您的帮助。

或者就此而言,如果有人知道使用子域更好/更简单的方法,例如 subdomain.mywebsite.com 也可以。

谢谢

【问题讨论】:

    标签: ruby-on-rails-3 passenger


    【解决方案1】:

    如果你使用suburi-s,那么

    1. &lt;documentroot&gt;/&lt;suburi&gt; 指向您的 Rails 应用程序的公共目录
    2. 您的 rails 应用程序根目录应该是您的 rails 应用程序公共目录之上的一个目录

    如果你为你的域有一个专用的公共 docroot,那么这两个问题都可以解决,然后你就可以了

    ln -sf /path/to/suburi-rails-app/public <documentroot>/<suburi>
    

    文档确实不是那么好。所以你的解决方案是:

    ln -sf /srv/www/suburi/public srv/www/mydomain/public/suburi
    

    和虚拟主机配置:

    <VirtualHost 173.230.137.212:80> 
    
      ServerName www.mydomain.com
      ServerAlias mydomain.com
      DocumentRoot /srv/www/mydomain/public
      ErrorLog /srv/www/error.log
      RewriteEngine On
      RewriteOptions Inherit
      RailsEnv production
    
      <Directory /srv/www/mydomain/public>
        Options FollowSymLinks -MultiViews
        AllowOverride all
        Order allow,deny 
        Allow from all
      </Directory>
    
      RailsBaseURI /suburi                   
      <Directory /srv/www/mydomain/public/suburi>
        Options -MultiViews               
      </Directory>
    
    </VirtualHost> 
    

    您说:mydomain.com 的 rails 应用程序和 mydomain.com/suburi 的 rails 应用程序都驻留在 /srv/www/ 中

    这让我有点困惑,我认为希望在域上运行一个应用程序而在 suburi 上运行另一个应用程序不是一个好主意,因为路由必然会被混淆。 而是使用2个suburi-s,在这种情况下做

    ln -sf /srv/www/suburi2/public srv/www/mydomain/public/suburi2
    

    其中 /srv/www/suburi2 是您的第二个应用程序根目录,并添加:

    RailsBaseURI /suburi2                   
    <Directory /srv/www/mydomain/public/suburi2>
      Options -MultiViews               
    </Directory>
    

    您可以将任意数量的 suburis 添加到同一个虚拟主机。

    希望这有帮助

    【讨论】:

    • 至于上面的 2:如果您的 rails 应用程序根不是“高于”该应用程序的公共目录,通常您可以指定 PassengerAppRoot,但是,这不是每个 suburi 的选项,所以不确定如果我想要一个不同的应用根目录...
    猜你喜欢
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 2011-01-07
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    相关资源
    最近更新 更多