`
robbin
  • 浏览: 4821967 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
377a9ecd-1ea1-34ac-9530-9daa53bb2a7b
robbin谈管理
浏览量:137099
社区版块
存档分类
最新评论

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

    博客分类:
  • Ruby
阅读更多
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官方网站下载:
 
下载源代码包到本地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:
下载好源代码包,解压缩,安装:
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:
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的系统库。
 
 
四、安装 Ruby FCGI 支持
 
由于ruby的fcgi支持库需要在编译的时候联接FCGI的系统库,因此我们需要先安装FCGI库,下载FCGI源代码发行包:
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:
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:
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是ubuntu,那么需要自己创建启动脚本,lighttpd官方wiki上面已经给出来该脚本,地址在:

其他Linux发行版本可以自行参考该文件内容进行修改,或者自己写一个控制脚本,也不过举手之劳:

#!/bin/sh

case "$1" in 
  start)         
    /usr/local/lighttpd/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf > /dev/null 2>&1
    ;;
  stop) 
    killall lighttpd
    ;;
  restart) 
   $0 stop
   sleep 1
   $0 start 
   ;;
  *) 
  echo "Usage: lighttpd.sh {start|stop|restart}" 
  ;; 
esac

exit 0 

 

然后修改/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通信。
 
Lighttpd的FAQ:无法启动Ruby on Rails
 
FastCGI的启动脚本位于Rails应用目录下面public/dispatch.fcgi,如果无法启动Lighttpd,报告FastCGI错误,你可以尝试着手工运行该脚本cd public && ./dispatch.fcgi,看看是否可以运行。一般来说,很多人都是在Windows下面创建Rails项目,导致dispatch.fcgi脚本的ruby运行路径指向windows下面的ruby,部署到Linux上面就无法运行了,另外一方面Windows上面创建的Rails项目在Linux上面dispatch.fcgi没有可执行权限,所以也需要授予可执行权限。
 
 
六、安装 ImageMagick RMagic
 
RMagic是ruby处理图片需要用到的库,很多ruby应用由于都涉及图片处理的功能,往往需要依赖RMagic,但安装ImageMagick和RMagic相当烦琐,需要特别的说明。
 
安装 ImageMagick
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
在rubyfoge上面下载RMagic的源代码发行包,不要下载gem包,然后解压缩编译:
./configure
make && make install
 
如果配置和编译过程没有报错,即大功告成。
 
对于MacOSX来说,安装RMagic以上步骤会出错,请参考:
 
总体来说,ImageMagick和RMagic的安装很容易出错,安装起来比较困难,如果碰到无法解决的问题,可以通过Google寻求解决办法。
 
如果你在安装过程当中,遇到了什么问题,请看:Lighttpd和RoR安装配置的疑难解答

分享到:
评论
12 楼 LongCT 2007-01-07  
楼主辛苦了! 可否将删去的部分加上 或重发个帖?
11 楼 robbin 2007-01-06  
引用
期待更多来自robbin的经验之谈,能讲讲JavaEye考虑过尝试过的配置方案,包括硬件、操作系统、数据库、Web服务器等等的选择和配置参数,每个方案的优势劣势,最终采用的配置,就太棒了。



其实在这篇文章的安装步骤中,我已经穿插了不少自己摸索出来的解决方案的内容。但后面的跟贴让我感觉自己在对牛弹琴,所以我现在把这些内容去掉了,就让这篇文章当个单纯的安装指南好了。
10 楼 sean_gao 2007-01-06  
引用
在目前的ruby on rails文档和资料中,比较多的都是编程方面的内容,很少涉及到ruby on rails的安装,部署,性能优化的话题,鉴于我们运营JavaEye网站,在这方面经验比较丰富,因此我计划在空闲的时间写一些这方面的文章,补充一下这方面资料的不足。


支持!

我想补充一下,我认为GNU/Linux!=RHEL/FC,GNU/Linux!=Gentoo,当然GNU/Linux也!=Debian/Ubuntu,不能简单混为一谈。每个发行版的GNU/Linux对于软件包的管理也不尽相同。

对Debian/Ubuntu感兴趣的朋友:
在Debian下,查找软件包的方式是
sudo apt-cache search 包名 #支持模糊查询

你会发现有些包的名称和RHEL/FC不太一样,如:
pcre在Debian下叫做libpcre3;
libpng-devel在Debian下叫做libpng3-dev;
gd-dev在Debian下叫做libgd-dev。
等等
安装的方法是
sudo apt-get install 包名


我觉得自己从源码build来安装是蛮有趣的一件事,尤其对于一些相对比较新的软件包,很可能你找不到一个现成的rpm或者deb,抑或需要定制一些选项。但这有一个度的问题,如果你是一个懒人,你可能很依赖rpm或者apt; 如果你是一个purist,你可能想什么都自己build(Gentoo?),从内核开始DIY; 不过如果你是一个pragmatist,我想你应该有选择的定制自己的环境,如果现成的包足够满足需要,就拿来用,如果对特定的软件(包)追求性能和其他精细化的控制,就自己从源码构建。

期待更多来自robbin的经验之谈,能讲讲JavaEye考虑过尝试过的配置方案,包括硬件、操作系统、数据库、Web服务器等等的选择和配置参数,每个方案的优势劣势,最终采用的配置,就太棒了。
9 楼 siko 2007-01-05  
生产环境和开发环境还是有相当的不同的。
8 楼 robbin 2007-01-05  
tmj 写道
linux虽然很好,但很多情况下不得不部署在window平台下。按照robbin推荐的window下最佳配置方式apache+mongrel,目前我就怎么都无法配置成功,全部抛出502错误。问了不少,但目前为止没有一个能够解决问题。恳请robbin能够在window做下研究,到时能指导指导。



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

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

6 楼 robbin 2007-01-05  
/etc/lighttpd/lighttpd.conf
5 楼 wlbookwl 2007-01-05  
$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")
      )
    )
 )
}


这些代码是放在哪个文件的?
4 楼 axgle 2007-01-05  
good
3 楼 robbin 2007-01-05  
用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的需要。




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

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

1、安装ruby, rubygems, rails
emerge rails -Dav

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


2、安装rmagick:
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环境,结果也不会让你失望。
1 楼 gigix 2007-01-05  
sudo apt-get install rails
sudo apt-get install mysql
...
唯一麻烦的就是gem,apt装不到,只有down下来装

相关推荐

    Ruby on Rails

    在Linux平台上安装和配置Ruby on Rails详解 - rails - Ruby - JavaEye论坛.htm

    ruby on rails 教程

    - **Rails安装**:提供了在Apple、Linux和Windows平台上安装Rails的详细指南。例如,文档提到在Apple系统中使用Locomotive进行安装,在Windows系统中推荐使用InstantRails套件。这些套件通常包含了运行Rails项目所需...

    Ruby语言教程知识点详解 ruby重点知识点总结掌握.docx

    安装Ruby:介绍了在不同操作系统(如Windows、macOS、Linux)上安装Ruby的方法,以及使用Ruby版本管理器(如rvm、rbenv)管理多个Ruby版本的技巧。 Ruby环境配置:包括设置环境变量、安装文本编辑器或IDE(如...

    mac snow leopard安装ruby

    ### Mac Snow Leopard 安装 Ruby 及 Ruby on Rails 开发环境搭建详解 #### 背景介绍 在 Mac OS X Snow Leopard(版本 10.6)系统下安装 Ruby 和进行 Ruby on Rails 的开发,是许多开发者特别是初学者可能会遇到的...

    Pragmatic Bookshelf - Agile Web Development with Rails (Final)

    - **多平台安装指导**:提供了在Windows、Mac OS X和Unix/Linux系统上安装Ruby on Rails的详细步骤,帮助读者跨越平台限制,快速上手开发环境。 - **数据库集成**:讨论了Rails与各种数据库的兼容性,如MySQL、...

    x10switch:Ruby on Rails 移动应用程序 (JQuery Mobile),可帮助在 Linux 上使用 Heyu 控制 X10 照明

    “x10switch”是一个基于Ruby on Rails框架开发的移动应用程序,它利用JQuery Mobile库为用户提供友好的移动界面,主要用于在Linux操作系统上操控X10照明系统。X10是一种常见的家庭自动化协议,允许用户通过电力线...

    Ruby详解及安装流程,Ruby是一种高级编程语言,具有简单易学、灵活多变、优雅美丽的语法特点.md

    在安装向导中,您可以选择安装Ruby的目标位置和其他可选配置。 - 根据您的需求进行选择,并继续进行安装。 3. **设置环境变量(仅适用于Windows)** - 如果您是Windows用户,安装完成后,您需要配置系统环境变量,...

    Rails 101 入门电子书

    #### 四、Ruby on Rails安装最佳实践 - **安装步骤**: - 环境准备: 确保操作系统支持,并安装必要的软件包。 - 安装Ruby: 使用rbenv、RVM或其他工具进行管理。 - 安装Rails: 使用gem工具安装最新的Rails版本。 ...

    如何在局域网安装Redmine(原创)

    Redmine是一款基于Web的项目管理和跟踪工具,由Ruby on Rails (RoR)框架编写而成。它为团队提供了全面的功能,包括但不限于问题追踪、任务管理、版本控制集成、时间追踪、文件管理等。Redmine的设计初衷是为了提供一...

    centos6 安装redmine+apache2

    在安装 Redmine 之前,需要安装一些软件包,包括 Ruby、Ruby-devel、Ruby-libs、Ruby-irb、Ruby-rdoc、Ruby-mysql 等。 [root@test ~]# yum -y install ruby ruby-devel ruby-libs ruby-irb ruby-rdoc ruby-mysql ...

    Agile Web Development with Rails中文版 3rd Edition

    本书《敏捷Web开发之Rails应用详解》第三版主要介绍了如何使用Ruby on Rails框架来进行敏捷Web开发。Rails是一个用Ruby语言编写的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,并且强调代码的简洁...

    Rubyleaing

    - 第二章:介绍Ruby的安装配置方法,包括不同操作系统(如Windows、Linux)下的安装步骤和推荐使用的编辑器或IDE(如SciTE、Eclipse RDT插件)。 - **高级应用**:这部分内容将深入探讨Ruby的一些高级特性,如元...

    Redmine安装实践

    **Redmine**是一款基于Web的项目管理和问题跟踪工具,采用Ruby on Rails (ROR)框架进行开发,支持跨平台运行,并兼容多种数据库系统。其设计初衷是为了解决团队协作中的需求管理、任务分配、文档共享等问题,提供了...

    【后端开发框架】教程&案例&相关项目资源.docx

    - **跨平台**:支持 Windows、macOS 和 Linux。 - **高性能**:针对速度和性能进行优化。 - **模块化和可扩展**:通过 NuGet 包管理器轻松添加和更新功能。 - **统一的 MVC 和 API 框架**:简化开发和维护工作。...

    redmine安装脚本 2.6.10版本

    通过以上步骤,我们已经完成了 Redmine 2.6.10 版本在服务器上的安装配置。这不仅涉及到了环境搭建、依赖安装等基础准备工作,还涉及到了数据库配置、Redmine 安装与配置等多个方面,确保了 Redmine 能够顺利运行。

    Redmine安装使用说明文档

    它采用Ruby on Rails框架进行开发,支持跨平台部署,能够很好地兼容多种数据库系统。相比于传统的项目管理软件,Redmine更加轻量级且易于使用,同时又具备强大的定制性和扩展性。 #### 二、Redmine特点概述 1. **...

    VirtualRails-开源

    《VirtualRails:开源Ruby on Rails虚拟开发环境详解》 在当今的软件开发领域,Ruby on Rails(RoR)作为一个高效且流行的Web应用框架,深受开发者喜爱。为了方便开发者进行便捷、高效的开发工作,"VirtualRails...

Global site tag (gtag.js) - Google Analytics