在Linux平台上安装和配置Ruby on Rails详解-rails-Ruby

来源:百度文库 编辑:神马文学网 时间:2024/06/05 15:00:55
欢迎 fyting !   收件箱(0) · 我的博客 · 我的圈子 | 设置 · 退出 | 帮助 · 邀请    首页     |    论坛    Java   Ruby   AJAX   Agile   |   文集   专栏   博客   圈子   |   招聘   服务  论坛 -> Ruby -> 在Linux平台上安装和配置Ruby on Rails详解 全部     ruby     rails     rake     DSL     RJS     YAML

主题:   在Linux平台上安装和配置Ruby on Rails详解

该帖已经被评为良好帖 作者 正文 robbin 等级: 资深会员

性别:
文章: 3359
积分: 13406
来自: 上海
圈子: 篮球俱乐部

       时间: 2007-01-05 14:18    关键字:   rails lighttpd fcgi        
在Linux平台上安装和配置Ruby on Rails详解   ruby on rails推荐的生产运行环境是Linux/FreeBSD/Unix,即Unix系列的操作系统,采用lighttpd+FCGI的解决方案。以下我将以Linux操作系统,lighttpd+FCGI,MySQL数据库为例,从源代码编译安装开始讲解。   在安装之前,应该确认Linux操作系统已经安装好gcc编译器,否则请用Linux安装光盘先行安装gcc编译器: gcc –v 如能返回gcc版本号,则gcc正确安装。   一、安装Ruby解析器   一些Linux发行版本,MacOSX操作系统都自带Ruby解析器,但是我仍然建议自行下载ruby源代码编译安装。因为一方面可以自己定制ruby安装的路径,另一方面可以在编译过程中自行添加更多的特性。   ruby的源代码可以从Ruby官方网站下载: http://www.ruby-lang.org/en/downloads/   下载源代码包到本地Linux主机,然后解压缩,进入该目录,进行配置,编译和安装: tar xzvf ruby-1.8.5.tar.gz cd ruby-1.8.5 ./configure –prefix=/usr/local/ruby make && make install 如果想浏览所有的configure参数,可以: ./configure –help |more 如果不定制安装的目录,默认将安装到/usr/local目录下面。然而我建议自行定制一个ruby的安装目录,例如/usr/local/ruby,这样便于以后的升级,不会和操作系统其他软件混在一起。   安装好以后,修改操作系统PATH路径,加入/usr/local/ruby/bin: export PATH=/usr/local/ruby/bin:$PATH 将我们自己安装的ruby放在系统PATH前面,避免操作系统自带的ruby造成的干扰。在Linux上,一般将设置放在/etc/profile中,便于对全局生效。   二、安装ruby on rails   在安装rails之前,要先安装rubygems。rubygems是ruby的在线包管理工具,可以从rubyforge下载rubygems: http://rubyforge.org/projects/rubygems/ 下载好源代码包,解压缩,安装: tar xzvf rubygems-0.9.0.tgz cd rubygems-0.9.0/ ruby setup.rb   然后就可以安装rails了,在确认服务器已经连接互联网的情况下执行: gem install rails –y 即通过gem从rubyforge网站下载rails所有依赖包安装。   安装好rails以后,可以执行: rails –v 确认一下rails的版本。     三、安装ruby的数据库适配器   rails发行包中已经自带纯ruby的MySQL数据库适配器,然而对于生产环境来说,我们仍然应该下载安装C版本的数据库适配器,以达到更好的性能。下载mysql-ruby-2.7.3.tar.gz: http://www.tmtm.org/en/mysql/ruby/ tar xzvf mysql-ruby-2.7.3.tar.gz cd mysql-ruby-2.7.3 ruby extconf.rb --with-mysql-dir=/opt/mysql5 make && make install 注意--with-mysql-dir应该指向MySQL数据库的安装路径,如果数据库服务器和Web服务器不在同一台机器上,那么Web服务器上也必须安装MySQL软件,因为ruby的C版本MySQL适配器需要在编译的时候联接MySQL的系统库。     四、安装RubyFCGI支持   由于ruby的fcgi支持库需要在编译的时候联接FCGI的系统库,因此我们需要先安装FCGI库,下载FCGI源代码发行包: http://www.fastcgi.com/dist/ tar xzvf fcgi-2.4.0.tar.gz cd fcgi-2.4.0 ./configure --prefix=/usr/local/fcgi make && make install 同样,将fcgi安装在自己指定的目录下,而不是默认的/usr/local,避免多个软件混在一起。   然后就可以安装ruby的fcgi支持库了,下载ruby-fcgi-0.8.7.tar.gz: http://rubyforge.org/projects/fcgi/ tar xzvf ruby-fcgi-0.8.7.tar.gz cd ruby-fcgi-0.8.7 ruby install.rb config -- --with-fcgi-include=/usr/local/fcgi/include --with-fcgi-lib=/usr/local/fcgi/lib ruby install.rb setup ruby install.rb install   五、安装lighttpd Web Server   安装Lighttpd   在安装lighttpd之前,应该确认操作系统已经安装pcre,即Perl兼容的规则表达式库: rpm –qa |grep pcre 如果没有,请从Linux安装光盘里面安装。   然后下载lighttpd: http://www.lighttpd.net/download/ tar xzvf lighttpd-1.4.13.tar.gz cd lighttpd-1.4.13 ./configure --prefix=/usr/local/lighttpd   configure完毕以后,会给出一个激活的模块和没有激活模块的清单,可以检查一下,是否自己需要的模块都已经激活,在enable的模块中一定要有“mod_rewrite”这一项,否则重新检查pcre是否安装。然后编译安装: make && make install   编译后配置: cp doc/sysconfig.lighttpd /etc/sysconfig/lighttpd mkdir /etc/lighttpd cp doc/lighttpd.conf /etc/lighttpd/lighttpd.conf   如果你的Linux是RedHat/CentOS,那么: cp doc/rc.lighttpd.redhat /etc/init.d/lighttpd 如果你的Linux是SuSE,那么: cp doc/rc.lighttpd /etc/init.d/lighttpd 其他Linux发行版本可以自行参考该文件内容进行修改。然后修改/etc/init.d/lighttpd,把 LIGHTTPD_BIN=/usr/sbin/lighttpd 改为 LIGHTTPD_BIN=/usr/local/lighttpd/sbin/lighttpd   此脚本用来控制lighttpd的启动关闭和重起: /etc/init.d/lighttpd start /etc/init.d/lighttpd stop /etc/init.d/lighttpd restart   如果你希望服务器启动的时候就启动lighttpd,那么: chkconfig lighttpd on   这样lighttpd就安装好了,接下来需要配置lighttpd。   配置Lighttpd   修改/etc/lighttpd/lighttpd.conf   1)server.modules 取消需要用到模块的注释,mod_rewrite,mod_access,mod_fastcgi,mod_simple_vhost,mod_cgi,mod_compress,mod_accesslog是一般需要用到的。   2)server.document-root, server.error-log,accesslog.filename需要指定相应的目录   3)用什么权限来运行lighttpd server.username            = "nobody" server.groupname           = "nobody" 从安全角度来说,不建议用root权限运行web server,可以自行指定普通用户权限。   4)静态文件压缩 compress.cache-dir         = "/tmp/lighttpd/cache/compress" compress.filetype          = ("text/plain", "text/html","text/javascript","text/css") 可以指定某些静态资源类型使用压缩方式传输,节省带宽,对于大量AJAX应用来说,可以极大提高页面加载速度。   5)配置ruby on rails   最简单的配置如下: $HTTP["host"] == "www.xxx.com" {  server.document-root = "/yourrails/public"  server.error-handler-404 = "/dispatch.fcgi"  fastcgi.server = (".fcgi" =>     ("localhost" =>       ("min-procs" => 10,        "max-procs" => 10,        "socket" => "/tmp/lighttpd/socket/rails.socket",        "bin-path" => "/yourrails/public/dispatch.fcgi",        "bin-environment" => ("RAILS_ENV" => "production")       )     )  ) } 即由lighttpd启动10个FCGI进程,lighttpd和FCGI之间使用本机Unix Socket通信。     六、安装ImageMagickRMagic   RMagic是ruby处理图片需要用到的库,很多ruby应用由于都涉及图片处理的功能,往往需要依赖RMagic,但安装ImageMagick和RMagic相当烦琐,需要特别的说明。   安装ImageMagick http://www.imagemagick.org ImageMagick是用C语言实现的图形处理库,有Unix版本和Windows版本。对于Unix版本来说,安装比较麻烦些,另外不建议安装ImageMagick二进制版本,往往会导致缺少某些图片处理功能,导致RMagic安装失败。下载ImageMagick源代码,解压缩,配置: tar xzvf ImageMagick-6.2.9-0.tar.gz cd tar xzvf ImageMagick-6.2.9 ./configure --prefix=/usr/local/ImageMagick   观察配置后给出来的支持图形格式,看看该图形格式支持是否是yes,如果不是,那么必须先安装该图形格式的本地库。例如,你应该检查是否已经安装如下rpm包: rpm –qa |grep libpng rpm –qa |grep libpng-devel rpm –qa |grep libjpeg rpm –qa |grep gd-devel 如果你希望支持tiff格式,还应该检查 rpm –qa |grep libtiff 如果没有安装,那么在Linux安装光盘找到相应rpm包安装上,再次configure直到确认需要的图形格式全部支持为止,然后编译安装: make && make install   由于ImageMagic被安装在我们自行指定的/usr/local/ImageMagick,后面安装RMagic会找不到需要用到的ImageMagic的命令和库,因此需要配置一下操作系统:   编辑/etc/profile里面的PATH环境变量,在最后面加入: export PATH=/usr/local/ruby/bin:/usr/local/ImageMagick/bin:$PATH   编辑/etc/ld.so.conf,加入: /usr/local/ImageMagick/lib 执行命令: ldconfig 将ImageMagick的库加入系统联接库   然后注销当前用户重新登录,便于环境变量修改生效,执行: convert logo: logo.gif 看是否正确生成一个logo.gif的图片文件。   安装RMagic http://rubyforge.org/projects/rmagick/ 在rubyfoge上面下载RMagic的源代码发行包,不要下载gem包,然后解压缩编译: ./configure make && make install   如果配置和编译过程没有报错,即大功告成。   对于MacOSX来说,安装RMagic以上步骤会出错,请参考: http://rmagick.rubyforge.org/install-osx.html   总体来说,ImageMagick和RMagic的安装很容易出错,安装起来比较困难,如果碰到无法解决的问题,可以通过Google寻求解决办法。   返回顶端   最后更新:2007-01-06 10:49   gigix 等级: 资深会员

性别:
文章: 1307
积分: 2446
来自: 北京

       时间: 2007-01-05 14:42    评级:    (2位会员评分)        

sudo apt-get install rails
sudo apt-get install mysql
...
唯一麻烦的就是gem,apt装不到,只有down下来装

返回顶端   最后更新:2007-01-08 09:32  
初级会员还不能评分 qiezi 等级:

性别:
文章: 557
积分: 568
圈子: D语言

       时间: 2007-01-05 14:47    评级:    (1位会员评分)        

还真麻烦,推荐大家用Gentoo发行版,安装基本系统时稍麻烦点,不过做一次以后再安装升级软件就容易了。

在gentoo上,安装这些东西比较简单。

1、安装ruby, rubygems, rails
代码

  1. emerge rails -Dav   

它会自动计算依赖关系,把rails依赖的相关软件比如ruby, rubygems, rake等都安装上,如果同时还要安装postgres, mysql, sqlite3, fastcgi支持库以及rails文档,只需要:
代码
  1. USE="doc fastcgi mysql postgres sqlite3" emerge rails -Dav   

 

2、安装rmagick:
代码

  1. emerge rmagick -Dav   

它会把imagemagick安装上。上面的-Dav选项可以让你确认安装编译参数,比如:
引用
# emerge imagemagick -Dav
>>> cfg-update-1.8.0-r3 : No new packages have been emerged, checksum index OK...

 

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild R ] media-gfx/imagemagick-6.3.0.5 USE="X jpeg mpeg perl png truetype xml zlib -bzip2 -doc -fpx -graphviz -gs -jbig -jpeg2k -lcms -nocxx -tiff -wmf" 0 kB


上面的USE部分,有减号的显示成蓝色表示不使用这个选项,没减号的显示成红色表示使用这个选项,可以在emerge时加上或减去这些选项,同样它也会自动计算这些依赖,比如加上了png,它会把libpng装上。

 

其它方面,配置 apache, lighttpd都差不多。gentoo的好处是这些新安装的软件都从源代码编译,可以针对你的机器编译出最高效的版本。而且gentoo里面软件巨多,喜欢研究各种语言、库的人最合适了,都有源码配套。少数例外比如D语言还没进入gentoo。

gentoo也有缺点,它的整个系统都从源代码构建,有时你运气不好选了个不稳定的时候构建系统,会出现一系列错误,这时你要自己解决这些错误,会比较麻烦。当然如果你把这当作是熟悉linux环境,结果也不会让你失望。

返回顶端   最后更新:2007-01-06 10:59  
初级会员还不能评分 robbin 等级: 资深会员

性别:
文章: 3359
积分: 13406
来自: 上海
圈子: 读书空间

       时间: 2007-01-05 15:05    评级:    (2位会员评分)        

用ubuntu或者gentoo当然不是不可以。但是我写这篇文章在于指导如何在Linux Server上构建一个高性能的RoR生产运行环境,依赖ubuntu或者gentoo的自动二进制或者自动源代码安装,都达不到这个Production级别的要求。

生产环境的安装部署不是比谁安装起来貌似更加简单,毕竟相同的配置我可以把编译安装好的版本打成一个rpm包,以后安装只要一行rpm -ivh命令全部搞定,保管比你们的办法更简单。真要是炫耀谁的安装简单,那我用MacOSX10.5操作系统,自带ruby on rails全部运行环境,安装都省了,开机就可以跑起来了,不比你们简单多了?

自行手工安装的重点在于每个安装环节的定制,调优和补丁,配置的合理运用,以发挥最好的性能,最方便的维护,以及升级的灵活性。

选择gentoo从源代码完整构建一个操作系统对一个Linux fans来说貌似一件有趣的事情,但是站在工作的角度来说,管理员是完全不称职的。作为一台需要7*24*365运行的服务器来说,操作系统的稳定性,硬件软件应用的兼容性至关重要。为什么商业机构要花钱购买RHEL/SLES软件和服务,就是因为厂商对Kernel有针对性的打了很多补丁,调整了很多Kernel参数,对于整个Kernel+GNU software搭配成的OS也进行了最大幅度的硬件兼容性认证,软件兼容性认证,以确保操作系统的稳定性和兼容性,最终能够达到7*24*365的需要。

 

返回顶端   最后更新:2007-01-14 23:48  
初级会员还不能评分 axgle 等级:

文章: 110
积分: 161
圈子: D语言

       时间: 2007-01-05 15:16    评级:    (4位会员评分)        

good

返回顶端   最后更新:2007-01-14 23:06  
初级会员还不能评分 wlbookwl 等级: 初级会员

性别:
文章: 22
积分: 6
圈子: 读书空间

       时间: 2007-01-05 15:27    评级:    (0位会员评分)        

代码

  1. $HTTP["host"] == "www.xxx.com" {   
  2.  server.document-root = "/yourrails/public"  
  3.  server.error-handler-404 = "/dispatch.fcgi"  
  4.  fastcgi.server = (".fcgi" =>   
  5.     ("localhost" =>   
  6.       ("min-procs" => 10,   
  7.        "max-procs" => 10,   
  8.        "socket" => "/tmp/lighttpd/socket/rails.socket",   
  9.        "bin-path" => "/yourrails/public/dispatch.fcgi",   
  10.        "bin-environment" => ("RAILS_ENV" => "production")   
  11.       )   
  12.     )   
  13.  )   
  14. }  

 

这些代码是放在哪个文件的?

返回顶端   最后更新:2007-01-05 15:27  
初级会员还不能评分 robbin 等级: 资深会员

性别:
文章: 3359
积分: 13406
来自: 上海
圈子: 英语学习

       时间: 2007-01-05 16:09    评级:    (0位会员评分)        

/etc/lighttpd/lighttpd.conf

返回顶端   最后更新:2007-01-05 16:09  
初级会员还不能评分 tmj 等级: 初级会员

文章: 8
积分: 16

       时间: 2007-01-05 17:00    评级:    (0位会员评分)        

linux虽然很好,但很多情况下不得不部署在window平台下。按照robbin推荐的window下最佳配置方式apache+mongrel,目前我就怎么都无法配置成功,全部抛出502错误。问了不少,但目前为止没有一个能够解决问题。恳请robbin能够在window做下研究,到时能指导指导。

 

返回顶端   最后更新:2007-01-05 17:00  
初级会员还不能评分 robbin 等级: 资深会员

性别:
文章: 3359
积分: 13406
来自: 上海
圈子: 篮球俱乐部

       时间: 2007-01-05 20:02    评级:    (0位会员评分)        

tmj 写道 linux虽然很好,但很多情况下不得不部署在window平台下。按照robbin推荐的window下最佳配置方式apache+mongrel,目前我就怎么都无法配置成功,全部抛出502错误。问了不少,但目前为止没有一个能够解决问题。恳请robbin能够在window做下研究,到时能指导指导。

 

 

 

http://www.javaeye.com/topic/43290

 

返回顶端   最后更新:2007-01-05 20:02  
初级会员还不能评分 siko 等级: 初级会员

文章: 32
积分: 6
圈子: Ubuntu For Fun

       时间: 2007-01-05 21:04    评级:    (0位会员评分)        

生产环境和开发环境还是有相当的不同的。

返回顶端   最后更新:2007-01-05 21:04  
初级会员还不能评分   订阅这个主题 (回复通知) 论坛 -> Ruby -> 在Linux平台上安装和配置Ruby on Rails详解 跳转论坛:  
 快速回复         引用上一条消息 (Alt+s)   
广告服务   |   JavaEye黑板报   |   网站地图   |   关于我们   |   服务条款  |   联系我们  |   静态文件 © 2003-2006 JavaEye.com.   All rights reserved. 上海炯耐计算机软件有限公司 [ 沪ICP备05023328号 ]