LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1722|回复: 1

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

[复制链接]
发表于 2008-10-22 16:42:19 | 显示全部楼层 |阅读模式
ruby on rails推荐的生产运行环境是Linux/FreeBSD/Unix,即Unix系列的操作系统,采用nginx+mongrel的解决方案。在网上参考了N篇文章和经过2天的实验后,我终于搭建成功,非常感谢网上的高手们无私的奉献,当然,高手们毕竟是高手,有些东西还是讲的有些模糊,于是我自己做实验,借鉴高手的文章并整理出下面的这篇文章,希望对刚刚入门的朋友能够有所帮助。同时,恳请大家能够指正,谢谢!以下我将以CentOS5.1 Linux操作系统,nginx+mongrel,MySQL数据库为例,从源代码编译安装开始讲解。

准备工作:配置好网络,使其能够连接上互联网,利用CentOS Linux系统自带的yum命令安装、升级所需的程序库(RedHat等其他Linux发行版可从安装光盘中找到这些程序库的RPM包,进行安装):
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2
libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl
curl-devel

说明:以下的一切软件均安装在/lab目录下,例如:/lab/ruby等,操作的用户都是root



一、安装 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=/lab/ruby
make && make install
如果想浏览所有的configure参数,可以:
./configure –help |more
如果不定制安装的目录,默认将安装到/usr/local目录下面。然而我建议自行定制一个ruby的安装目录,例如/lab/ruby,这样便于以后的升级,不会和操作系统其他软件混在一起。

安装好以后,修改操作系统PATH路径,加入/lab/ruby/bin:
export PATH=/lab/ruby/binPATH
将我们自己安装的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的版本。

P.S:在安装rails的过程中,由于需要远程安装rails的时候,但是安装不成功,
命令提示:
ERROR:  While executing gem ... (Gem::RemoteFetcher::FetchError)
    getaddrinfo: Temporary failure in name resolution (SocketError)
        getting size of http://gems.rubyforge.org/Marshal.4.8
原因是此服务器没设置DNS,不能对外访问网络。
解决方法:
   #>vi /etc/resolv.conf
nameserver 192.168.0.1                      (局域网内DNS)
nameserver 202.101.172.35                (电信DNS服务器)
nameserver 202.101.172.45                (电信DNS服务器)



三、安装 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=/lab/mysql  
make && make install
注意:--with-mysql-dir应该指向MySQL数据库的安装路径,如果数据库服务器和Web服务器不在同一台机器上,那么Web服务器上也必须安装MySQL软件,因为ruby的C版本MySQL适配器需要在编译的时候联接MySQL的系统库。MySQL的安装过程省略。


四、安装 Ruby 的 FCGI 支持

由于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=/lab/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=/lab/fcgi/include --with-fcgi-lib=/lab/fcgi/lib
ruby install.rb setup
ruby install.rb install

五、安装mongrel

在确认服务器已经连接互联网的情况下执行:
gem install mongrel –y
gem install mongrel_cluster -y

即通过gem从rubyforge网站下载rails所有依赖包安装。

可以通过gem query --local查看通过gem安装的软件包

配置mongrel:

假如你的rails工程放在/下

        cd /
        rails test
        cd  test
        mongrel_rails start
** Starting Mongrel listening at 0.0.0.0:3000

** Starting Rails with development environment...

** Rails loaded.

** Loading any Rails specific GemPlugins

** Signals ready.  TERM => stop.  USR2 => restart.  INT => stop (no restart).

** Rails signals registered.  HUP => reload (without restart).  It might not work well.

** Mongrel 1.1.5 available at 0.0.0.0:3000

** Use CTRL-C to stop.


然后无反应,我不知道是什么原因,只好CTRL+C强制退出:
** INT signal received.

但是不影响后面的结果,等待高手指点。
   访问一下http://localhost:3000 看一下你的mongrel是否能启动能启动,OK则继续搭建mongerl的集群,(网上是这么说了,可是我是没有成功看到ROR的welcome aboard页面,反正继续往下做了,最后成功了)

mongrel_rails cluster::configure -e production -p 8000 -N 3 -c /test -a 127.0.0.1

注:-e 指定production | environment。-p 端口 。 -N mongrel服务进程数

这样会在test工程下生成一个config/mongrel_cluster.yml 这样一个配置文件,内容是:
 cwd: /test
  log_file: log/mongrel.log
  port: "8000"
  environment: production    //此为开发模式,改为environment即为开发模式
  address: 127.0.0.1
  pid_file: tmp/pids/mongrel.pid
  servers: 3

mongrel_rails cluster::start
就可以把起来了三个mongrel进程。

六、下载安装nginx:

nginx下载地址:http://sysoev.ru/nginx/nginx-0.7.17.tar.gz
nginx所需pcre库文件:
ftp://ftp.csx.cam.ac.uk/pub/soft ... cre/pcre-7.7.tar.gz

安装Pcre库:
tar zxvf pcre-7.7.tar.gz
cd pcre-7.7
./configure
make && make install

安装nginx:
tar zxvf nginx-0.7.17.tar.gz
cd nginx-0.7.17
./configure --prefix=/lab/nginx  --with_http_stub_status_module --with-http_ssl_module
make && make install

配置/lab/nginx/conf/nginx.conf文件:(仅供参考)
 #user nobody;
  worker_processes  1;   
  error_log  logs/error.log debug;   
   #error_log  logs/error.log  notice;   
   #error_log  logs/error.log  info;   
   pid        /lab/nginx/nginx.pid;   
  events {   
      worker_connections  1024;   
        use epoll;
  }   
  http {   
    include       mime.types;   
    default_type  application/octet-stream;   
    sendfile        on;   
     tcp_nopush     on;   
    keepalive_timeout  65;   
    tcp_nodelay        on;   
    gzip  on;   
    gzip_min_length  1100;   
    gzip_buffers     4 8k;   
    gzip_types       text/plain;   
    upstream mongrel {   
      server 127.0.0.1:8000;   
      server 127.0.0.1:8001;   
    }   
    server {   
      listen       80;   
      server_name  XXX.XXX.XXX.XXX;   你可以用你的域名代替以可以是你的对用户发布的IP   
      root /usr/local/depot/public;   
      index  index.html index.htm;   
      location / {   
        proxy_set_header  X-Real-IP  $remote_addr;   
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;   
        proxy_set_header Host $http_host;   
        proxy_redirect false;   
        if (-f $request_filename/index.html) {   
          rewrite (.*) $1/index.html break;   
        }   
        if (-f $request_filename.html) {   
          rewrite (.*) $1.html break;   
        }   
        if (!-f $request_filename) {   
          proxy_pass http://mongrel;   
          break;   
        }   
      }   
      error_page   500 502 503 504  /50x.html;   
      location = /50x.html {   
          root   html;   
      }   
    }   
  }

测试nginx.conf文件配置是否正确:/lab/nginx/sbin/nginx -t,若出现:
the configuration file /lab/nginx/conf/nginx.conf syntax is ok

the configuration file /lab/nginx/conf/nginx.conf was tested successfully

则说明配置OK,否则,会有相应的提示。

启动nginx:/lab/nginx/sbin/nginx

然后打开浏览器,输入http://xxx.xxx.xxx.xxx/就可以看到R0R的welcome aboard页面

至此,一个基本的CentOS5.1+Nginx+Mongrel+ROR的环境就基本搭建好了。
 楼主| 发表于 2008-10-22 16:47:52 | 显示全部楼层
小弟第一次发这么严肃的帖子,欢迎大家指正!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表