`
gift5168xf
  • 浏览: 28975 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

单域名多Rails应用布置

    博客分类:
  • ROR
阅读更多

软件版本:ubuntu 8.04/lighttpd 1.4.19/ruby on rails 2.1.2

假定需要布置多 ror 应用的域名是 ror.example.com, 域名下一个子目录为一个应用,如 /app1, /app2..

首先,需要做的就是配置 lighty

$HTTP["host"] =~ "^ror\.example\.com$" {
 $HTTP["url"] =~ "^/app1" {
 alias.url = ("/app1" => "/path/to/app1/public")
 server.error-handler-404 = "/app1/dispatch.fcgi"
 fastcgi.server = ( ".fcgi" =>
 (( "socket" => "/tmp/app1.socket",
 "bin-path" => "/path/to/app1/public/dispatch.fcgi",
 "bin-environment" => ("RAILS_RELATIVE_URL_ROOT" => "/app1")
 )))
 }
}

关键就在于 "bin-environment" => ("RAILS_RELATIVE_URL_ROOT" => "/app1") 这一行,告诉 rails 应用它所在的url。理论上,只要如此配置 lighty 就可以使用 rails 应用正常运行了, 因为根据 rails 的文档中关于 ActionController::AbstractRequest.relative_url_root 的描述:

relative_url_root ()

Returns the path minus the web server relative installation directory. This can be set with the environment variable RAILS_RELATIVE_URL_ROOT. It can be automatically extracted for Apache setups. If the server is not Apache, this method returns an empty string.

     # File vendor/rails/actionpack/lib/action_controller/request.rb, line 284


284:     def

 relative_url_root


285:       @@relative_url_root

 ||=

 case


286:         when

 @env

["RAILS_RELATIVE_URL_ROOT"

]
287:           @env

["RAILS_RELATIVE_URL_ROOT"

]
288:         when

 server_software

 ==

 'apache'


289:           @env

["SCRIPT_NAME"

].to_s

.sub

(/\/dispatch\.(fcgi|rb|cgi)$/

, ''

)
290:         else


291:           ''


292:       end


293:     end



根据上面所写,只要在 web server 中设置好 RAILS_RELATIVE_URL_ROOT 环境变量,就可以使用 rails 正确运行,生成正确滴 url,可惜事实上如果只设定 lighty 的 RAILS_RELATIVE_URL_ROOT 变量,是不能正常运行的。

经过试验,需要修改 rails app 的 config 目录下的 environment.rb 文件在最后添加上这一行:

ActionController::AbstractRequest.relative_url_root = ENV['RAILS_RELATIVE_URL_ROOT']

然后重启 lighty:

/etc/init.d/lighttpd restart

这样,rails 就能正常运转了

分享到:
评论

相关推荐

    rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板.zip

    rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板 Rails 应用编辑器 Rails 应用程序编辑器 gem 安装一个 命令行 工具来从"食谱"的Collection 组装 Rails 应用程序。"你可以使用 rails_...

    Web开发敏捷之道--应用Rails进行敏捷Web开发 之 Depot代码。

    标题中的“Web开发敏捷之道--应用Rails进行敏捷Web开发 之 Depot代码”表明这是一个关于使用Ruby on Rails框架进行敏捷Web开发的示例项目,名为Depot。Ruby on Rails(简称Rails)是一个开源的Web应用程序框架,它...

    使用Aptana+Rails开发Rails Web应用(中文)

    在开发Web应用时,Ruby on Rails(简称Rails)框架因其高效、简洁的代码风格和强大的社区支持而备受青睐。Aptana是一款强大的集成开发环境(IDE),尤其适用于Rails项目的开发,它提供了丰富的特性来提升开发效率。...

    rails应用--导航栏实例工程

    总之,"rails应用--导航栏实例工程"是一个综合性的教程,涵盖了Rails开发中的多个关键环节:路由设置、控制器创建、视图渲染、模型定义、以及后台管理工具的使用。通过实践这个实例,开发者可以深入理解Rails的工作...

    Ruby+on+Rails快速Web应用开发实战.pdf

    - **Rails的主要特性**:Rails采用了约定优于配置(Convention over Configuration)的设计理念,这使得开发过程中的很多设置能够自动完成,从而加快了开发速度。 ### Ruby编程语言 - **Ruby语言**:Ruby是一种...

    webpack-rails, 将 web pack与你的Ruby on Rails 应用程序集成.zip

    webpack-rails, 将 web pack与你的Ruby on Rails 应用程序集成 不再维护webpack-rails 不再被维护。 有关详细信息,请参阅 #90. web pack-railsweb pack 为你提供了将 web pack集成到现有的Ruby on Rails 应用程序中...

    Ruby-RailsErd为Rails应用程序生成实体关系图

    "Rails Erd"是一个Ruby gem,专门用于为Rails应用程序自动生成ERD,使得数据库设计和管理变得更加简单和直观。这个工具是由Voormedia开发的,版本号为0eb4577。 ERD是数据库设计的基础,它通过图形化方式展示了各个...

    Ruby-GoOnRails使用Rails生成器来生成一个Golang应用

    **Ruby-GoOnRails:利用Rails生成器构建Golang应用** Ruby on Rails(简称Rails)是一种流行的Web开发框架,以其“约定优于配置”的理念和高效的开发速度受到开发者喜爱。而Go(Golang)则是一种静态类型、编译型的...

    Ruby on Rails安装指南(Ruby 1.8.6+Rails 2.0.2)

    最后,创建测试的 Rails 应用程序,并启动 Mongrel 服务器。 知识点1:Ruby 安装 * 下载 Ruby One-Click Installer 版本 * 安装 Ruby * 检查 Ruby 版本 知识点2:Rails 安装 * 下载 Rails 2.0.2 版本 * 安装 ...

    Rails应用程序样本AWSOpsWorksRailsDemoApp.zip

    **Rails应用程序** Rails,全称为Ruby on Rails,是由David Heinemeier Hansson开发的一个开源Web应用程序框架,它基于Ruby编程语言。Rails遵循MVC(模型-视图-控制器)架构模式,使得开发者能够高效地构建功能丰富...

    配置高可用的rails

    优化rails应用的响应时间可以从数据库查询优化、视图渲染优化、静态资源服务优化等多方面着手。 - Web框架基准测试:了解不同Web框架的性能基准,可以帮助我们选择合适的工具和优化手段。基准测试能够提供不同框架...

    应用Rails进行敏捷Web开发中文第三版

    《应用Rails进行敏捷Web开发》中文第三版是针对Ruby on Rails框架的一本详尽指南,主要聚焦于Rails 2.2.2版本。Ruby on Rails(简称Rails)是一款基于Ruby编程语言的开源Web应用程序框架,它遵循“Don't Repeat ...

    rails_layout, 为各种前端框架生成 Rails 应用程序布局文件.zip

    rails_layout, 为各种前端框架生成 Rails 应用程序布局文件 RailsLayout gem使用这里 gem 可以设置你选择的前端框架的布局文件:Zurb基础 5.3Bootstrap 4.0Bootstrap 3.3它还将为 Bootstrap 或者基础设置设计视图。...

    Ruby on Rails:部署Rails应用至Heroku.docx

    Ruby on Rails:部署Rails应用至Heroku.docx

    component base rails applications

    本书《Component-Based Rails Applications》主要介绍了如何使用Rails引擎(Rails Engine)进行基于组件的Rails应用开发,以及如何对应用程序的大型模块进行拆分和模块化。以下是书中一些核心知识点的详细说明: 1....

    Ruby-这是一个在Rails应用程序中使用React并使用webpack的示例

    本示例将探讨如何在Rails应用中集成React,并利用webpack进行模块打包,提升项目的前端性能。 首先,React是Facebook推出的一个用于构建用户界面的JavaScript库,以其组件化开发方式和虚拟DOM(Document Object ...

    Ruby-GoogleSignInforRails实现将Google登录集成到您的Rails应用中

    Google Sign-In for Rails 实现将Google登录集成到您的Rails应用中

    Ruby-ApartmentRack和Rails应用的数据库多租户

    "Ruby-ApartmentRack和Rails应用的数据库多租户"这一主题旨在探讨如何使用Apartment gem来实现这样的功能。Apartment是Ruby社区中广泛使用的库,它为Rack(包括Rails)应用提供了简单的多租户支持。 Apartment gem...

    rails2-sample

    了解如何在真实世界中运行和管理Rails应用,对于确保应用的稳定性和安全性具有重要意义。 综上所述,《Simply Rails2》不仅为初学者提供了全面的Ruby on Rails入门指南,也为进阶开发者提供了深入的技术细节和实践...

Global site tag (gtag.js) - Google Analytics