
|
概览 |
||
|
目录 |
系统 |
|
|
类别 |
应用服务器 |
|
|
用户卷 |
yes |
|
|
最小 内存 |
160 MB |
|
|
操作系统 |
Linux |
|
|
约束 |
no |
|
ROR 是基于 Ruby 和 Ruby-on-Rails Web 框架的 Web 服务器组件。 Ruby-on-Rails 的主要文档位于 http://wiki.rubyonrails.org。 使用 Ruby-on-rails,您可以通过使约定优先于配置来编写漂亮的代码。 Ruby-on-rails 可以充当单机 Web 服务器或应用服务器。
ROR 提供静态 Web 内容,并从用户可配置的内容卷自动部署 Web 应用。 文档路径是可配置的,这样同一个卷可在多个 Web 服务器和/或其他组件之间共享,从而处理不同的内容。
ROR 可以在两种不同模式下操作:Apache/mod_passenger 或 Apache/mongrel_cluster。 两个 Rails 后端各有其优点,因此,Phusion Passenger 为 Rails 应用和热重新部署功能提供了极高的性能,但是 Mongrel 具有有利于自身的久经考验的生产稳定性。
与 WEBx 服务器一样,ROR 有三个通用输出终端,用于从内容卷上的脚本访问外部服务。 db 终端用于访问各种数据库;fs 终端用于访问共享文件存储(使用 NFS);aux 终端是为了将电子邮件发送到 SMTP 服务器而创建的。
应使用 log 终端将 ROR 连接到 ROR 可以存储日志文件的共享文件系统。
服务器的配置是使用各种属性定义的。 这些属性旨在以易于配置的方式涵盖最多的用法变体,大多数情况下只有几个属性需要设置为非默认值。
|
名称 |
最新版本 |
操作系统 |
Ruby 版本 |
Ruby-on-Rails 版本 |
Phusion Passenger |
Mongrel/Mongrel_Cluster |
|
ROR |
1.1.4-1 |
CentOS 5.5 |
Ruby 1.8.6 |
2.3.4 |
2.2.11 |
1.1.5/1.0.5 |
资源
|
资源 |
最小值 |
最大值 |
默认值 |
|
CPU |
0.1 |
16 |
0.3 |
|
内存 |
160 MB |
32G |
512 MB |
|
带宽 |
1 Mbps |
2 Gbps |
250 Mbps |
注意:应基于 ROR 的预期负载和已部署应用的内存要求来配置内存量。
终端
|
名称 |
方向 |
协议 |
说明 |
|
in |
in |
HTTP |
为 Web 客户端发出的 HTTP 请求提供服务。 支持 HTTP/1.1 和 HTTP/1.0。 |
|
db |
out |
Any |
访问数据库服务器。 用法由驻留在内容卷上的任何脚本(如果有)定义。 如果未使用该终端,则可将其保持未连接状态。 |
|
fs |
out |
NFS |
访问用于共享文件存储的网络文件系统,在 NFS 上提供读/写文件访问权限。 用法由驻留在内容卷上的任何脚本(如果有)定义。 内容卷上的软件将已挂接的远程文件系统“视为”组件文件系统空间中的 /mnt/fs。 如果未使用该终端,则可将其保持未连接状态。 连接的服务器必须具有一个通过 NFS 导出的、名为 /mnt/data 的读/写共享。 |
|
log |
out |
CIFS |
访问用于存储访问和错误日志的基于 CIFS 的网络文件系统。 如果未使用该终端,则可将其保持未连接状态。 连接的服务器必须允许匿名登录并具有一个导出的、名为 share 的读/写共享。 |
|
aux |
out |
Any |
访问 SMTP 服务器以发送传出的电子邮件。 |
|
net |
out |
Any |
用于子网访问的网关输出。 |
|
mon |
out |
CCE |
向 MON 组件发送性能和资源使用情况统计信息。 |
默认接口已启用。 它用于诊断和故障排除(通过 SSH)。 此组件的未来版本可能会禁用 SSH 访问。
用户卷
|
卷 |
说明 |
|
目录 |
用于存储 Rails 应用和应用数据的只读卷或读/写卷。 仅在 content_on_fs 属性设置为 off 时才使用此卷。 |
|
属性名 |
类型 |
说明 |
|
hostname |
字符串 |
网站的主机名。 默认值:localhost |
|
admin_email |
字符串 |
服务器管理员的电子邮件地址。 ROR 使用此名称在自动生成的页面中显示它。 默认值:root@localhost |
|
app_base |
字符串 |
文档的根目录。 Rails 应用根目录的典型结构应当在该文件夹中创建(app/、config/、db/、doc/、lib/、log/、public/、script/ 等)。 如果 app_base 设置为空字符串,则使用内容卷的根目录。 此目录必须在内容卷上预先存在。 默认值:(空) |
|
content_on_fs |
字符串 |
指定内容是相对于 fs 终端上的文件系统还是位于内容卷上。 默认值:off(在内容卷上) |
|
ror_backend |
字符串 |
启用或禁用 Apache/Mongrel_Cluster 或 Apache/Passenger 模式。 如果 ror_backend 设置为 Mongel_Cluster,则 Mongel_Cluster 后端将代替 Phusion Passenger 来处理 ROR 应用。 默认值:passenger |
|
ror_mode |
字符串 |
ROR 操作模式。 影响日志记录、数据库选择和其他环境选项。 值为:production、development。 默认值:production |
|
ror_port |
整数 |
ROR Web 服务器侦听传入的 HTTP 请求的端口。 默认值:80 |
|
时区 |
字符串 |
指定在组件中使用的时区。 如果此属性为空,则时区未经修改且保持原样。 此处提供可支持时区的列表。 默认值:(空) |
这些是通常不需要配置的附加属性。 它们可用于在非标准环境中调整 ROR。
|
属性名 |
类型 |
说明 |
|
ror_instances_per_app |
整数 |
对于单个应用可以同时处于活动状态的最大应用实例数。 值为 0 意味着对单个应用可使用的实例数没有限制,也就是说,只实施 ror_rails_max_pool_size 的全局限制(仅限“Phusion Passenger”模式;在“Mongrel”模式下 0 等于 2)。 默认值:0 |
|
ror_rails_use_global_queue |
字符串 |
启用或禁用全局排队。 如果禁用全局排队,则 Phusion Passenger 将使用公平的负载均衡。 默认值:off |
|
ror_rails_high_performance |
字符串 |
默认情况下,Phusion Passenger 与 mod_rewrite 及其他大多数 Apache 模块兼容。 但是,使其兼容需要做很多工作。 如果将 ror_rails_high_performance 设置为 on,则 Phusion Passenger 会运行得快一点,但又会减小与其他 Apache 模块的兼容性。 默认值:off |
|
ror_rails_max_pool_size |
整数 |
可同时处于活动状态的最大 Ruby on Rails 或 Rack 应用实例数。 更大的数目将会导致更高的内存使用情况,但改进的功能可处理并发 HTTP 客户端。 仅在 Passenger 模式下有效。 默认值:6 |
|
ror_rails_max_requests |
整数 |
应用实例将处理的最大请求数。 在处理那么多请求之后,将关闭应用实例并且 Phusion Passenger 会将其重新启动。 值为 0 意味着没有最大值:应用实例会因达到其空闲超时而被关闭。 如果您的应用正在泄漏内存,则此选项很有用。 在一定数量的请求之后通过将其关闭,可确保操作系统释放其所有内存。 仅在 Passenger 模式下有效。 默认值:0 |
|
ror_mongrel_start_port |
整数 |
mongrel_cluster 使用的端口范围内的起始端口号。 默认值:3000 |
这些是通常不需要配置的附加属性。 它们可用于在非标准情况下调整 ROR。
|
属性名 |
类型 |
说明 |
|
max_connections |
整数 |
允许的最大并发连接数。 在达到此数目时,仍会接受新连接,但是其处理会延迟,直到另一个连接关闭。 max_connections 值不能设置为大于 256。 |
|
persistent_connections |
字符串 |
控制 ROR 是否允许客户端在同一连接中请求多个文档。 允许的值为 on 和 off。 仅当不正确支持 HTTP/1.1 又不使用 HTTP/1.0 的客户端出现问题时,才可能需要禁用永久连接。 默认值:on |
|
idle_timeout_sec |
整数 |
没有请求或响应通过时使客户端连接保持打开状态所用的超时(秒)。 仅当 persistent_connections 为 on 时,才使用此属性。 将此超时设置得较短可帮助快速丢弃长时间不活动的连接。 默认值:15 |
|
data_timeout_sec |
整数 |
数据传输已开始但未完成时接收或发送更多数据所用的超时(秒)。 具有此超时允许 ROR 丢弃被忘记的连接,同时在传输期间仍允许延迟。 默认值:300 |
|
info_level |
字符串 |
控制 ROR 向 Web 客户端(在 HTTP 响应和自动生成的页面中)透露的有关自身的信息量。 允许的值为 full(最多信息)、os、minor、major、prod(最少信息)。 作为安全措施,建议您透露最少信息。 默认值为 prod |
|
属性名 |
类型 |
说明 |
|
logs_enabled |
字符串 |
完全启用或禁用日志记录。 默认值:off |
|
logs_base_dir |
字符串 |
存储 ROR 日志的目录。 如果 logs_enabled 设置为 off,则此属性不起作用。 默认值:/ |
|
error_log_filename |
字符串 |
错误日志的文件名,相对于 log 终端上可以访问的文件系统。 该名称可能包括目录名称。 有关示例,请参阅 access_log_filename。 如果此属性设置为空值,或 logs_enabled 设置为 off,则将错误日志写入 ROR 实例本身的根文件系统上的文件中。 如果 logs_enabled 设置为 off,则此属性不起作用。 默认值:(空) |
|
error_log_level |
字符串 |
要写入错误日志的消息的重要级别。 允许的值为 debug、info、notice、warn、error、crit、alert 和 emerg。 debug 写入的消息最多,emerg 只写入紧急消息。 默认值:warn |
|
access_log_filename |
字符串 |
访问日志的文件名,相对于 log 终端上可以访问的文件系统。 例如:access_log。 该名称可能包括目录名称,例如:/srv1_logs/access_log 或 /logs/srv1_access_log。 如果为空,则表明未创建访问日志。 如果这些目录不存在,则会被创建。 如果 logs_enabled 设置为 off,则此属性不起作用。 默认值:(空) |
注意:
如果需要安装额外 gem,请将其放入 app_base/gems 文件夹。 所有这些额外 gem 都将安装到 RAM 磁盘并作为 /mnt/gems 挂接。 此外,在 config/enviroment.rb 中设置 ENV['GEM_HOME'] = '/mnt/gems' 属性,以使 Rails 应用可查看此存储库。 磁盘的大小将自动进行计算。 为组件分配内存时,请记住这一点。
外部数据库
ROR 当前支持 MySQL、PostgreSQL 和 Microsoft SQL Server 中的任何一个作为 Rails 应用的外部数据存储。 它只能在 Rails 应用配置文件 (database.yml) 中正确定义适配器和数据库用户凭据。
使用 rails-sqlserver 适配器项目可支持 Microsoft SQL Server (http://rails-sqlserver.lighthouseapp.com/projects/20277-sql-server-05-adapter/tickets)。
rails-sqlserver 适配器配置示例 (application/config/database.yml):
production: adapter: sqlserver mode: odbc
dsn: Driver=FreeTDS;Server=db;Database=YOUR_DATABASE_NAME;Uid=USER_LOGIN;Pwd=USER_PASSWORD
自定义计数器
ROR 组件通过 mon 终端报告以下自定义计数器。 这些计数器属于 ROR 计数器组:
|
计数器名称 |
说明 |
|
Total hits |
总命中数 |
|
Total bytes |
总字节数 |
|
Active requests |
活动请求数 |
|
Idle servers |
空闲服务器数 |
|
Rails memory |
Rails 使用的总内存(仅限 Passenger 模式) |
|
Rails applications |
当前处于活动状态的应用实例数(仅限 Passenger 模式) |
|
Active applications |
当前正在处理请求的应用实例数(仅限 Passenger 模式) |
|
Idle applications |
当前未在处理请求(即处于空闲状态)的应用实例数 *(仅限 Passenger 模式) |
|
Rails sessions |
显示当前所有应用实例的队列中有多少 HTTP 客户端等待进行处理(仅限 Passenger 模式) |
|
Rails requests |
指示所有实例到目前为止已处理的请求数(仅限 Passenger 模式) |
注意:空闲应用实例不久将关闭,因为这些实例可通过 data_timeout_sec 进行指定(除非将此值设置为 0,在这种情况下决不会在空闲时间关闭应用实例)。 非活动的值等于计数-活动的。
可能的启动错误
在组件启动失败的情况下,系统日志可能记录以下错误消息:
|
错误消息 |
说明 |
|
错误: 启用了日志但未连接日志终端。 |
未连接 log 终端,但 logs_enabled 或 enable_access_log 设置为 yes。 |
|
错误: 属性 content_on_fs 设置为“off”,但缺少本地内容卷。 |
content_on_fs 设置为 off,指定必须在本地挂接数据卷,但是 ROR 无法挂接内容卷。 最有可能的原因是,内容卷未格式化,或未在 ROR 属性中定义。 |
|
错误: 无法挂接 nfs 共享。 |
ROR 无法挂接 NFS 共享。 可能的原因是,未连接 fs 或在 NAS 之前启动了 ROR(或者任意组件连接到 fs 终端) |
显示板消息
|
消息 |
说明 |
|
数据存储容量不到可用磁盘空间的 5% |
通过 fs 终端访问的数据卷容量不到可用磁盘空间的 5%。 建议增加卷的大小。 |
|
数据存储容量不到可用磁盘空间的 1% |
通过 fs 终端访问的数据卷容量不到可用磁盘空间的 1%。 需要立即引起注意;可能发生数据丢失。 |
|
内容卷容量不到可用磁盘空间的 5% |
组件上的内容卷容量不到可用磁盘空间的 5%。 建议增加卷的大小。 |
|
内容卷容量不到可用磁盘空间的 1% |
组件上的内容卷容量不到可用磁盘空间的 1%。 需要立即引起注意;可能发生数据丢失。 |
启用日志记录时 (logs_enabled = on),ROR 性能可能会受到影响。 下表包含使用 Apache Benchmark 实用工具(Apache Web 服务器版本 2.0 和 2.2 随附)禁用日志时执行的基准结果(指定以 rps(每秒请求数)为单位)。 Apache 网站上提供了有关 ab 的更多信息。 基准使用了下列设置:"bw=500M mem=2G cpu=2"。
|
并发 |
rps |
|
1 个并发客户端 |
1700-2100 rps |
|
10 个并发客户端 |
7100-7500 rps |
|
100 个并发客户端 |
7700-8100 rps |
下图显示了 ROR 组件的典型用法。 ROR 将处理内容卷中的应用。

正在使用的组件:
|
属性名 |
值 |
说明 |
|
hostname |
www.mysite.org |
站点的主机名。 |
|
app_base |
MyApp |
|
|
content_on_fs |
off |
ROR 将用户卷内容用于所有内容。 |
|
时区 |
EST |
EST 时区。 |
|
ror_port |
80 |
HTTP 协议的标准端口。 |
客户端请求到达 client 网关。 网关会将请求转发到 AppServer ROR 服务器,后者处理请求。
下图显示了网络存储上具有数据库、日志、监控和内容的 ROR 组件的典型用法。

正在使用的组件:
示例属性配置:
|
属性名 |
值 |
说明 |
|
hostname |
www.mysite.org |
站点的主机名 |
|
app_base |
MyApp |
|
|
content_on_fs |
on |
ROR 通过 fs 终端为所有内容使用远程存储 |
|
时区 |
EST |
EST 时区 |
|
ror_port |
80 |
HTTP 协议的标准端口 |
|
max_connections |
200 |
最多 200 个并发用户 |
|
logs_enabled |
yes |
启用错误日志 |
|
logs_base_dir |
MyApp_Log_Dir |
|
|
error_log_level |
信息 |
|
|
error_log_filename |
error_log |
错误日志名称 |
|
access_log_filename |
access_log |
访问日志名称 |
客户端请求到达 client 网关。 网关会将请求转发到 AppServer 服务器,后者处理请求。 内容和日志位于存储组件。 计数器被报告给 mon 组件。
注意:RoR 应用可以使用多种数据库类型。 ROR 允许将任何数据库组件连接到其 db 终端。
下图显示了具有负载均衡的 ROR 组件的典型用法。

正在使用的组件:
AppServer1 和 AppServer2 的示例属性配置:
|
属性名 |
值 |
说明 |
|
content_on_fs |
off |
ROR 将用户卷内容用于所有内容 |
|
时区 |
EST |
EST 时区 |
其他设置具有其默认值。
客户端请求到达 client 网关。 网关会将请求转发到 lb 负载均衡器,后者将请求定向到服务器 AppServer1 和 AppServer2 中的一个。
除了已安装的其基类 LUX5 之外,ROR 还使用以下开源软件包和第三方软件包。
RPM
|
软件 |
版本 |
已修改 |
许可 |
|
apr |
1.2.7-11 |
否 |
Apache 软件许可证 2.0 |
|
apr-util |
1.2.7-7.el5 |
否 |
Apache 软件许可证 2.0 |
|
e2fsprogs |
1.39-20.el5 |
否 |
GPLv2 |
|
e2fsprogs-libs |
1.39-20 |
否 |
GPLv2 |
|
freetds |
0.64-11.el5.centos |
否 |
GPLv2 |
|
glibc |
2.5-34 |
否 |
LGPL |
|
glibc-common |
2.5-34 |
否 |
LGPL |
|
httpd |
2.2.3-22.el5.centos |
否 |
Apache 软件许可证 2.0 |
|
keyutils-libs |
1.2-1 |
否 |
LGPL |
|
krb5-libs |
1.6.1-31.el5_3.3 |
否 |
MIT,可免费分发 |
|
libgcc |
4.1.2-44.el5 |
否 |
GPLv2 |
|
libgomp |
4.3.2-7.el5 |
否 |
GPLv2 |
|
libselinux |
1.33.4-5.1.el5 |
否 |
公共领域(未取得版权的) |
|
libselinux-python |
1.33.4-5.1.el5 |
否 |
公共领域(未取得版权的) |
|
libstdc++ |
4.1.2-44.el5 |
否 |
GPLv2 |
|
mailcap |
2.1.23-1.fc6 |
否 |
公共领域(未取得版权的) |
|
mysql |
5.0.45-7.el5 |
否 |
GPLv2 |
|
nfs-utils |
1.0.9-40 |
否 |
GPLv2 |
|
OpenLDAP |
2.3.43-3.el5 |
否 |
OpenLDAP |
|
OpenSSL |
0.9.8e-7.el5 |
否 |
BSD-like |
|
perl-DBI |
1.52-2.el5 |
否 |
GPL |
|
pkgconfig |
0.21-2.el5 |
否 |
GPLv2 |
|
postgresql |
8.1.11-1.el5_1.1 |
否 |
BSD |
|
postgresql-libs |
8.1.11-1.el5_1.1 |
否 |
BSD |
|
ruby |
1.8.6.383-4 |
否 |
Ruby 许可证/GPL-请参阅“复制” |
|
ruby-devel |
1.8.6.383-4 |
否 |
Ruby 许可证/GPL-请参阅“复制” |
|
ruby-irb |
1.8.6.383-4 |
否 |
Ruby 许可证/GPL-请参阅“复制” |
|
ruby-libs |
1.8.6.383-4 |
否 |
Ruby 许可证/GPL-请参阅“复制” |
|
ruby-rdoc |
1.8.6.383-4 |
否 |
Ruby 许可证/GPL-请参阅“复制” |
|
unixODBC |
2.2.11-7.1 |
否 |
LGPL |
从源进行安装
|
软件 |
版本 |
已修改 |
许可 |
|
2000-2005-adapter |
2.2.22 |
否 |
MIT |
|
mysql-ruby |
2.8.2 |
否 |
Ruby 许可证 |
|
rubygems |
1.3.6 |
否 |
Ruby 许可证 |
GEM
|
软件 |
版本 |
已修改 |
许可 |
|
actionmailer |
2.3.4 |
否 |
MIT |
|
actionpack |
2.3.4 |
否 |
MIT |
|
activerecord |
2.3.4 |
否 |
MIT |
|
activeresource |
2.3.4 |
否 |
MIT |
|
activesupport |
2.3.4 |
否 |
MIT |
|
capistrano |
2.5.9 |
否 |
MIT/X 联合会许可证 |
|
cgi_multipart_eof_fix |
2.5.0 |
否 |
Ruby 许可证 |
|
后台进程 |
1.0.10 |
否 |
Ruby 许可证 |
|
dbd-odbc |
0.2.5 |
否 |
BSD |
|
dbi |
0.4.3 |
否 |
BSD |
|
已弃用 |
2.0.1 |
否 |
BSD |
|
fastthread |
1.0.7 |
否 |
Ruby 许可证 |
|
ferret |
0.11.6 |
否 |
MIT/X 联合会许可证 |
|
gem_plugin |
0.2.3 |
否 |
Ruby 许可证 |
|
highline |
1.5.2 |
否 |
Ruby 许可证/GPL |
|
mongrel |
1.1.5 |
否 |
Ruby 许可证 |
|
mongrel_cluster |
1.0.5 |
否 |
Ruby 许可证 |
|
rake |
0.8.4 |
否 |
Ruby 许可证 |
|
net-scp |
1.0.2 |
否 |
Ruby 许可证/GPL |
|
net-sftp |
2.0.3 |
否 |
BSD/Ruby License |
|
net-ssh |
2.0.15 |
否 |
BSD/Ruby License |
|
net-ssh-gateway |
1.0.1 |
否 |
BSD/Ruby License |
|
net-ssh-multi |
1.0.1 |
否 |
BSD/Ruby License |
|
passenger |
2.2.11 |
否 |
GPLv2 |
|
pg |
0.8.0 |
否 |
Ruby 许可证 |
|
rails |
2.3.4 |
否 |
Ruby 许可证 |
|
rake |
0.8.7 |
否 |
MIT/X 联合会许可证 |
|
sqlite3-ruby |
1.2.5 |
否 |
BSD |
| 版权所有 © 2011 CA。 保留所有权利。 | 就该主题发送电子邮件至 CA Technologies |