同一个子域上有多个 Rails 应用程序吗?

同一个子域上有多个 Rails 应用程序吗?

我最近决定尝试一下 Rails。使用 PHP 时,我只需将所有 PHP 项目放在同一目录中即可。例如,我可能有http://ubuntu/app1http://ubuntu/app2等。

我为 Rails 创建了一个子域 ( http://ruby.ubuntu),安装了 Rails 和 Passenger,一切正常。不过,我可能错了,但看起来每个子域只能有一个 Rails 应用程序?

我的VirtualHost如下:

<VirtualHost *:80>
    ServerName ruby.ubuntu
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/ruby/blog/public

    <Directory /var/www/ruby/blog/public>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
        RailsEnv development
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

我的所有 PHP 和其他文件都存储在 中/var/www/main。我希望能够将所有 Rails 应用程序存储在 中/var/www/ruby。我尝试将 DocumentRoot 更改为/var/www/ruby,但我认为事情没那么简单。当我浏览 Rails 应用程序的 Welcome Aboard 页面并单击“关于我的应用程序的环境”时,我得到了一个 404 页面,但当将 DocumentRoot 设置为公共目录时,我得到了预期的结果。

我不想每次创建新项目时都要创建新的子域。有什么方法可以让我将所有应用程序存储在 中/var/www/ruby,然后浏览http://ruby.ubuntu即可访问那里的所有 Rails 应用程序?这样,如果我想创建新应用程序,我所要做的就是rails new app,无需 Apache .htaccess 或 VirtualHost 配置。

答案1

你可以提供任意数量的 Rails 应用程序。

如果使用 apache httpd 和 Passenger,步骤如下:

只需将每个 rails 应用程序的公共文件夹符号链接到 apache 的 DocumentRoot 作为子文件夹即可。然后在 apache 配置中添加 RailsBaseURI 指令,告知 Passenger 给定文件夹是 rails 应用程序。

假设您有两个 rails 应用程序 rapp1 和 rapp2。假设您的 apache DocumentRoot 是 /var/www/html

  ln -s rapp1 /var/www/html/rapp1
  ln -s rapp2 /var/www/html/rapp2

现在打开你的 apache 虚拟主机配置文件并添加以下两行

  RailsBaseURI /rapp1
  RailsBaseURI /rapp2

重新启动 apache 服务器,当您访问时http://servername/rapp1,您的 rails 应用程序就会得到服务

答案2

我可能弄错了,但我相信您想要实现的是所谓的 Sub-URI。

使用 ruby​​.ubuntu 子域,然后每个应用程序在不同的 /subdirectory 下运行。

进一步阅读:http://collab.stat.ucla.edu/users/jose/weblog/9e335/

答案3

看起来您正在尝试使用 SubURI。Passenger 可以支持它们,但您需要稍微调整一下虚拟主机配置。

乘客文件为 Apache 解释如何执行此操作,并附带一个示例来帮助您。

相关内容