Karron's profile咸鱼翻身还是咸鱼(技术,软件,linux,vim...PhotosBlogListsMore Tools Help

Blog


    June 17

    ubuntu中安装rails的方法

    最近看了看rails,感觉很不错,现在我的项目用的castle框架,就是一个模仿rails的C#框架,不过目前我们只用了ActiveRecord和Windsor IOC Container。

    记录一下如何在ubuntu中安装rails。

    ubuntu的源里面已经有rails的包了,直接apt-get就可以获得,但是不推荐这种方式,apt-get的rails好像有点问题,然后也不是最新的版本。我们还是用标准的ruby的方式来安装。

    首先安装ruby环境。

    sudo apt-get install ruby rdoc irb libyaml-ruby libzlib-ruby ri ruby1.8-dev build-essential

    再安装rubygem,这个是ruby的包管理器,类似与apt-get,命令也类似。到下面下载最新的rubygem

    http://rubyforge.org/frs/?group_id=126


    解压之后,进入文件夹, sudo ruby setup.rb

    安装rails和mongrel.

    sudo gem install rails mongrel --include-dependencies
    根据网速不同,等待时间不一样, 有时候我要很久,有时候一会儿就好. 注意安装mongrel的时候会有几个候选, 我们选择最新的ruby版本就行,不要选择mswin的那个.

    如果想用mysql数据库, 可以安装mysql的连接程序.

    sudo apt-get install libmysqlclient15-dev
    然后
    sudo gem install mysql

    配置apache, 用apache做服务器.(可选,非必须, 官方推荐用lighttpd, 我感觉apache简单方便一点.)

    sudo apt-get install apache2 mysql-server


    设定apache FCGI模式 (可以不用)

    启用 mod_rewrite

    sudo a2enmod rewrite

    安装fcgi

    sudo apt-get install libapache2-mod-fcgid

    编辑配置文件 /etc/apache2/mods-available/fcgid.conf.


    AddHandler fcgid-script .fcgi
    SocketPath /var/lib/apache2/fcgid/sock
    IdleTimeout 600
    ProcessLifeTime 3600
    MaxProcessCount 8
    IPCConnectTimeout 8
    IPCCommTimeout 48

    安装ruby的fcig包.

    sudo apt-get install build-essential ruby1.8-dev libfcgi-dev 
    sudo gem install fcgi

    下面是配置站点.

    编辑一个虚拟目录的站点的配置文件.

    sudo vim /etc/apache2/sites-available/rails (rails是站点名字, 自己可以随便起名字, ubuntu的apache的站点配置文件都放到这个目录里面, 还有个sites-enabled目录是这个目录里面文件的链接, 表示生效的站点)


    SetEnv RAILS_ENV development
    ServerName www.mysite.com
    DocumentRoot /home/myuser/www/myrailsproject/public

    Options ExecCGI FollowSymLinks
    AddHandler fcgid-script .fcgi
    Order allow,deny
    Allow from all
    RewriteEngine On
    RewriteRule ^$ index.html [QSA]
    RewriteRule ^([^.]+)$ $1.html [QSA]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /dispatch.fcgi?$1 [QSA,L]
    AllowOverride None

    ServerSignature On
    # ErrorDocument 500 /500.html
    ErrorLog /var/log/apache2/www.mysite.com.error.log
    CustomLog /var/log/apache2/www.mysite.com.access.log combined
    LogLevel warn


    注意把上面的 /home/myuser/www/myrailsproject 改成你自己的rails应用的目录, 注意最后一定是 public 目录.

    让上面的站点生效.

    sudo a2ensite rails (rails 就是上面的站点名字, a2dissite rails 是不生效)

    reload apache.

    sudo /etc/init.d/apache2 force-reload