收藏 分销(赏)

在Windows平台使用Apache2.2及Mongrel运行Ruby-on-Rails(单个多个程序).doc

上传人:仙人****88 文档编号:7176119 上传时间:2024-12-27 格式:DOC 页数:19 大小:144.50KB
下载 相关 举报
在Windows平台使用Apache2.2及Mongrel运行Ruby-on-Rails(单个多个程序).doc_第1页
第1页 / 共19页
在Windows平台使用Apache2.2及Mongrel运行Ruby-on-Rails(单个多个程序).doc_第2页
第2页 / 共19页
点击查看更多>>
资源描述
在Windows平台使用Apache2.2和Mongrel运行Ruby on Rails 资料一 一、安装Ruby、rails、mongrel和Apache2.2 从rubyforge网站下载One-Click Ruby Install,运行安装程序,就安装好了ruby和rubygems。 运行命令: gem install rails –y gem install mongrel –y gem install mongrel_service -y 安装好了rails和mongrel 从Apache网站下载Windows版本的Apache2.2,运行安装程序,就安装好了Apache2.2。 二、把Mongrel作为Services启动 mongrel_rails service::install -N depot -c d:\Rubyproject\depot -p 3000 -e production -N指明服务名称,-d指明rails应用的目录,-p是mongrel监听的tcp端口,-e是启动模式为生产模式 这样打开控制面版|管理工具|服务,就可以发现增加了一项名为“depot”的服务,就可以通过控制面版来管理服务了。如果需要命令行启动和关闭该服务,那么: mongrel_rails service::start -N depot mongrel_rails service::stop -N depot 如果需要从服务中注销该项服务,那么: mongrel_rails service::remove -N depot 如果需要安装多个mongrel实例,那么可以这样: mongrel_rails service::install -N depot0 -c d:\Rubyproject\depot -p 3000 -e production mongrel_rails service::install -N depot1 -c d:\Rubyproject\depot -p 3001 -e production 诸如此类。 三、配置Apache2.2 用编辑工具打开Apache2.2目录下面的conf/httpd.conf,需要取消如下模块的注释: LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_http_module modules/mod_proxy_http.so 如果你希望对页面输出使用压缩,也需要取消如下模块的注释: LoadModule deflate_module modules/mod_deflate.so 然后按如下内容配置基于HTTP代理的负载均衡: 1. ProxyRequests Off    2. <Proxy balancer://myCluster>   3.   BalancerMember http://localhost:3000    4.   BalancerMember http://localhost:3001    5. </Proxy>   6.    7. <VirtualHost *:80>   8.   ServerName     9.   DocumentRoot d:/rubyproject/depot/public    10.   ProxyPass /images !    11.   ProxyPass /stylesheets !    12.   ProxyPass /javascripts !    13.   ProxyPass / balancer://myCluster/    14.   ProxyPassReverse / balancer://myCluster/    15.   ProxyPreserveHost on    16. </VirtualHost>   myCluster定义了群集中的每个mongrel应用服务器节点。ProxyPass /images !指明该URL开始的请求不代理给Mongrel群集,而由Apache自己处理。重起Apache,然后打开浏览器访问,检查配置是否正确。至此,在Windows Server上面一个具备良好稳定性和性能的Ruby on rails生产环境就搭建好了。对于页面输出,还可以使用mod_deflate进行输出内容压缩,以提高页面下载速度,这个就留给大家自己配置了。 注:根据以上配置完成后,可能出现图片、css文件、javascript文件无法使用的问题,此时需要对public进行定位说明: · Alias /images " c:/depot/public/images"   ·   <Directory " c:/depot/public/images">   ·    ·    Order allow,deny   ·    Allow from all   ·    ·   </Directory>   ·   Alias /stylesheets " c:/depot/public/stylesheets"   ·   <Directory " c:/depot/public/stylesheets">   ·    ·    Order allow,deny   ·    Allow from all   ·    ·   </Directory>   ·   Alias /javascripts "c:/depot/public/javascripts"   ·   <Directory " c:/depot/public/javascripts">   ·    ·    Order allow,deny   ·    Allow from all   ·    ·   </Directory> 资料二 在 Windows 上用 Apache 与 Mongrel 服务多个 Rails 应用程序(一) 这篇文章将带你安装 Ruby,Gems,Rails,及 Windows XP 或 2003 服务器上重要的其它库,它们使用 Apache 来服务静态内容及使用 Mongrel 来服务多个 Rails 应用程序。 我们将带你来安装一个 production 环境,它将有类似于下面的 URL 结构: 我们将使用 Apache 来代理对高端口上 WEBrick 及 Mongrel 的请求,允许我们分别地管理应用程序,甚至移到应用程序到不同的服务器。 一、下载及安装 Apache.........................................................................................2 1、启动 Apache 为一个服务..... .............................................................2 二、安装 Rails ........................................................................................................3 1、安装 Ruby, Rubygems, 与 RDoc ............................................................3 2、安装 Rails..................................................................................................3 3、安装 Rmagick ...........................................................................................3 4、安装 Mongrel ............................................................................................3 三、为 Rails Hosting 配置 Apache.........................................................................3 1、配置 Apache .............................................................................................3 四、服务 Rails 应用程序.........................................................................................4 1、准备 Rails 应用程序..................................................................................4 2、配置 Apache 来代理 Rails 应用程序.......................................................4 3、链接配置. ...................................................................................................5 4、测试连接.....................................................................................................5 五、Reverse Proxy 与 URLs ..................................................................................5 1、安装 proxy 插件.........................................................................................5 2、创建 proxy 插件.........................................................................................6 六、使用 Mongrel 代替 WEBrick ............................................................................6 1、设置一个新的 Rails 应用程序.....................................................................6 2、用 Mongrel 测试 .......................................................................................6 3、安装 Reverse Proxy 插件到该新应用程序内..............................................7 4、安装 Mongrel 为 Windows 服务 ............................................................7 5、修改 Apache Proxy 配置 ..................................................................... .....7 七、Wrapping Up .......................................................................................................8 八、感谢......................................................... ...... .....................................................8 九、附录......................................................................................................................8 1、Apache httpd.conf...........................................................................................8 2、Apache conf/http-proxy.conf .........................................................................12 3、plugin/reverse_proxy_fix/lib/reverse_proxy_fix.rb .........................................13 一、下载及安装 Apache 这篇文章使用 2.0x 版本的 Apache 。在写此文章时,2.2x版本可以下载了,但它在 FastCGI 上有问题。 1、从下面链接下载 Windows 版本的 Apache : http://apache.cs.utah.edu/httpd/binaries/win32/apache_2.0.55-win32-x86-no_ssl.msi 2、以 Administrators 组成员的身份登录,并运行 installer。 3、确保选择了 “only for the current user on port 8080”。我们稍后将安装它为一个服务,但我们需要安排有配置的机会。(当然也可以使用第一项) 4、选择 Custom Install 并修改安装文件夹为 c:apache ,然后选择 Next 。 5、安装将花费一些时间,并且你会看到一个用于一些配置的控制台窗口出现。在这之后安装完成。 1、启动 Apache 为一个服务 1、 打开命令提示符窗口并导航到文件夹 c:apacheapache2bin 。 2、 输入 apache –k install 来安装 Apache 为一个服务。 3、 如果 Windows 防火墙询问你是否需要允许对 Apache 的访问,你应该允许它。 4、 现在该服务应该做为一个 Windows 服务出现了,并也应该出现在 Apache 监控器内。 5、 Apache 现在做为一个服务运行,但它还没有启动。这很好因为我们还有很多工作要做。 以上步骤可参考:http://www.evance.name/tools/Apache-Chs/index.html 二、安装 Rails 1、安装 Ruby, Rubygems, 与 RDoc 1、 下载 Ruby 一键安装程序。 2、 安装软件到缺省位置 c:ruby 并接受所有缺省值。 2、安装 Rails 1、 打开一个命令提示符窗口。 2、 安装 Rails (gem install rails –include-dependencies) 。 3、 安装 RedCloth (gem install redcloth) 。 3、安装 Rmagick 1、 从下面链接下载 Rmagic 的 Windows 版本 http://rubyforge.org/frs/download.php/6276/RMagick-1.9.2-IM-6.2.4-6-win32.zip 2、 解压缩到一临时目录内。 3、 打开一个命令提示符窗口并导航到临时目录内。 4、 用 gem 安装 gem install Rmagick-1.9.2-IM-6.2.4-6-win32.gem 5、 运行 postinstall.rb 脚本 ruby postinstall.rb 4、安装 Mongrel 1、 打开一个命令提示符窗口。 2、 安装 mongrel 及相关程序 (gem install mongrel –include-dependencies) 。 3. 选择 win32 <> 在 Windows 上用 Apache 与 Mongrel 服务多个 Rails 应用程序(二) 可参考 Mongrel 文档:http://mongrel.rubyforge.org/docs/index.html 三、为 Rails Hosting 配置 Apache 这儿有一些重要的步骤需要完成,以便于 Apache 能有效地服务于 Rails 应用程序。 1、配置 Apache 1、 找到文件 c:apacheapache2confhttpd.conf ,并用文本编辑器打开它。出于方便,Apache 安装程序可能为这个以放置了一个项目在你的启动项内。你可能必须为这个文件关联一个编辑器。选择“记事本”或类似的文本编辑器。 2、找到行 LISTEN 并修改它的值为 80,以设置 Apache 运行在 80 端口。 3、找到行 LoadModule alias_module modules/mod_alias.so 并移除 # 字符来去除注释行。我们稍后将需要这个! 4、 保存文件。但不要关闭它! 5、 使用 Apache 控制台启动 Apache ,或者从 Windows 的 Services 面板启动服务。 6、 导航到 http://localhost 并确保你有一个服务在运行! 7、 关闭 Apache 服务。 四、服务 Rails 应用程序 1、准备 Rails 应用程序 1、 在你的服务器上创建个目录来存放 Rails 应用程序。 c:web 2、 复制一个可正常工作的 Rails 应用程序到此目录内。 c:webapp1 3、 用 WEBrick 测试以确保此 Rails 应用程序能正常工作。确保用于 production 的数据库配置正确。(Sorry ,这儿就不讲数据库配置了!) cdwebapp1 ruby script/server –e production –p 4000 2、配置 Apache 来代理 Rails 应用程序 1、在 c:apacheapache2conf 目录创建个名为 http-proxy.conf 的新文件。 2、在文件的顶部,放置下面代码行: LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> 这设置了 proxy 模块并设置了缺省的代理政策。有关 mod_proxy 的更多信息可参阅文档。 3、现在粘贴下面代码以便 Apache 可以找到你的静态文件。我们将创建一个别名,它会让 Apache 在/app1 上找到我们文件,然后我们定义 c:webapp1 为一个由 Apache 提供服务的目录。 Alias /app1 "c:/web/app1/public" <Directory "C:/web/app1/public"> Options Indexes FollowSymLinks AllowOverride none Order allow,deny Allow from all </Directory> 4、现在应用至关重要的 proxy 规则以便 Apache 可以找到你的应用程序! ProxyPass /app1/images ! ProxyPass /app1/stylesheets ! ProxyPass /app1/javascripts ! ProxyPass /app1/ http://127.0.0.1:4000/ ProxyPass /app1 http://127.0.0.1:4000/ ProxyPassReverse /app1/ http://127.0.0.1:4000/ 头三行告诉 Apache 不要代理这些目录。也就是说,你的 images,stylesheets,和 javascript 目录将由 Apache 服务,可提升速度。 下三行实际上发送请求。该行 ProxyPass /app1 http://127.0.0.1:4000/ 实际上是防止人们查看包含 dispatcher 的 public 目录的内容。 3、链接配置 1、 打开 c:apacheapache2confhttpd.conf 。 2、 在文件的最底部,添加下面行。因此在 Apache 启动时,你的新 proxy 配置文件会被添加。 Include conf/httpd-webrick-proxy.conf 4、测试连接 你还应该让你的 Rails 应用程序运行在 http://localhost:4000/ 上,并且你现在应该有一个 Apache 实例运行在 http://localhost/ 上,因此如果 proxy 真正工作了的话,你就会看到这些。 导航到 http://localhost/app1/ ,你应该看到你的 Rails 应用程序在运行。但是,它可能看起来不正确并且你会有大量坏掉的链接。继续往下读找出为什么。 五、Reverse Proxy 与 URLs 我们现在面临的最大问题是由 Rails 在内部创建的 URL ,例如 stylesheet 样式表链接,url_for 链接及其它不能按我们期望那样工作的链接等等。相反,它们引导用户绕到代理。这很不好因为它暴露了代理服务器。 通常的解决办法是使用一些工具解析来自代理的 HTML 应答,并重写适当的链接。但是,它们可能在 Windows 上更复杂,因为你需要为你的特定 Apache 版本找到一个 mod_proxy_html 编译完的版本。幸运地,还有一种方法… 使用一个简单的 Rails 插件,它修改 Rails 创建它的 URL 的方式。我们打算让 Rails 对它通过系统创建的任何 URL 预先考虑我们额外的 URL 。这将强迫所有用户的请求通过 IIS 代理返回。 1、安装 proxy 插件 从你应用程序的根目录内运行命令: ruby script/plugin install 该插件进行安装然后向你询问基本的 url 。输入 http://localhost/app1 后按下 ‘enter’ 键。如果正常的话,则配置文件将被写成。如果配置文件没有被修改,你可以导航到 vendor/plugins/reverse_proxy_fix 并自己修改它。 若安装失败,你可以按下一节的介绍自己构建插件。 2、创建 proxy 插件 若你没有完成 Subversion 安装,你可以按下面步骤来适当地配置插件。 · 创建个名为 “reverse_proxy_fix” 的 Rails 插件。 ruby/script generate reverse_proxy_fix · 定位到你应用程序的 vendor/plugins/reverse_proxy_fix 目录并编辑 init.rb 文件 o 给文件添加下面代码 Require ‘reverse_proxy_fix” · 编辑 vendor/plugins/iis_proxy_fix/lib/reverse_proxy_fix.rb ,并且用附录的代码做该文件内容。 · 修改第一行代码匹配你的应用程序的 url… BASE_URL = ‘http://localhost/app1’ · 最后,关闭 WEBrick 并重启动它来重启动应用程序。 · 如果正常的话,应用程序的所有内部链接现在应该正确了并通过代理被路由回来。 六、使用 Mongrel 代替 WEBrick 应用程序前面已经用基本的 WEBrick 服务器测试过了,它对没有许多用户的小伸缩应用程序的服务很好。但现在我们遂步添加 Mongrel 。实际上我们将通过添加第二个 Rails 应用程序来完成。 1、设置一个新的 Rails 应用程序 1、 导航到 c:web 目录。 cdweb 2、 在该目录内创建个新的 Rails 应用程序 (或者是你现有的应用程序) 。 rails app2 3、 确保 Rails 应用程序用 WEBrick 测试过。确保数据库内对 production 的配置正确。 cdwebapp2 ruby script/server –e production –p 4001 4、 用 CTRL+Break 停止 WEBrick 。 2、用 Mongrel 测试 要用 Mongrel 测试,简单地运行命令 mongrel_rails start –p 4001 。 如果你看到这些,你就做对了!你现在可以在 Production 模式下把该应用程序安装为一个服务。当然,你应该导航到 http://localhost:4001/ 来测试它。 3、安装 Reverse Proxy 插件到该新应用程序内 现在我们知道应用程序可以工作在 Mongrel 下,我们需要在应用程序内使用在第一个应用程序内使用的 reverse_proxy_fix 插件,或者是创建它。可参阅前一步对该插件的创建。 4、安装 Mongrel 为 Windows 服务 我们将使用 production 模式来安装应用程序,因此对于你的应用程序要确保它的 database.yml 文件指向 production 数据库。 1、按下 ctrl+break 确保 Mongrel 被停止。如果提示“Terminate Batch Job” 就回答 “Yes”。 2、运行下面命令把应用程序安装为一个服务 mongrel_rails_service install –n rails_app2 –p 4001 这将创建个名为 rails_app2 的新 Windows 服务,你可以控制面板内观察到它。 3、你可以从控制面板中启动该服务,或者使用下面命令行来启动它: mongrel_rails_service start –n rails_app2 a、使用 mongrel_rails_service stop –n rails_app2 来中止服务。 B、若有些东西不能正确工作,你可以移除该服务 mongrel_rails_service delete –n rails_app2 4、你可能希望配置完后,能设置该服务在机器启动时自动完成。 5、修改 Apache Proxy 配置 Add a new section to 对于该新应用程序要给你的httpd-proxy.conf 文件添加个新节。你可引用附录内已完成httpd-proxy.conf 文件。 Alias /app2 "c:/web/app2/public" <Directory "C:/web/app2/public"> Options Indexes FollowSymLinks AllowOverride none Order allow,deny Allow from all </Directory> ProxyPass /app2/images ! ProxyPass /app2/stylesheets ! ProxyPass /app2/javascripts ! ProxyPass /app2/ http://127.0.0.1:4001/ ProxyPass /app2 http://127.0.0.1:4001/ ProxyPassReverse /app2/ http://127.0.0.1:4001/ 保存文件并重启动 Apache 服务器。导航到http://localhost/app2/ ,你应该看到你的应用程序工作正常了。 七、Wrapping Up 现在你应该有两个应用程序通过 Apache 运行在被代理的高端口上。一旦你设置了它,它就会完美地运行而不会有错误。但是,你可能希望在 Windows 的性能趋于下降时,考虑运行你自己的 benchmark 。 同样,你将注意到此处的用法并没有允许 Apache 来缓存由 Rails 创建的页面。请求总是被发送给 Mongrel 。要解决这个问题,你应该使用 Apache 做为对在高端口依次调用 Mongrel 的 Ligttpd 实例的代理。我认为这有太多的层次而且不是必须的,像 Mongrel 在服务静态内容时,就完成得很好。你可以使用 rewrite 重写规则来处理这些问题中的一些,但这是另一个主题了。 八、感谢 · Zed Shaw for developing Mongrel and for giving me a hard time about Rails on Windows. · Gael Martin for Rails Prod ( which gave me some insight into how proxying should work. · The Ruby on Rails community for the various postings that led to this article. 九、附录 1、Apache httpd.conf ServerRoot "C:/apache/Apache2" PidFile logs/httpd.pid Timeout 300 MaxKeepAliveRequests 100 KeepAliveTimeout 15 <IfModule mpm_winnt.c> ThreadsPerChild 250 MaxRequestsPerChild 0 </IfModule> Listen 80 LoadModule access_module modules/mod_access.so LoadModule actions_module modules/mod_actions.so LoadModule alias_module modules/mod_alias.so LoadModule asis_module modules/mod_asis.so LoadModule auth_module modules/mod_auth.so LoadModule autoindex_module modules/mod_autoindex.so LoadModule cgi_module modules/mod_cgi.so LoadModule dir_module modules/mod_dir.so LoadModule env_module modules/mod_env.so LoadModule imap_module modules/mod_imap.so LoadModule include_module modules/mod_include.so LoadModule isapi_module modules/mod_isapi.so LoadModule log_config_module modules/mod_log_config.so LoadModule mime_module modules/mod_mime.so LoadModule negotiation_module modules/mod_negotiation.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule setenvif_module modules/mod_setenvif.so LoadModule userdir_module modules/mod_userdir.so #LoadModule ssl_module modules/mod_ssl.so ServerAdmin ServerName :80 UseCanonicalName Off DocumentRoot "C:/apache/Apache2/htdocs" <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory "C:/apache/Apache2/htdocs"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> DirectoryIndex index.html index.html.var AccessFileName .htaccess <FilesMatch "^.ht"> Order allow,deny Deny from all </FilesMatch> TypesConfig conf/mime.types DefaultType text/plain
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服