ubuntu中安装rails的方法
记录一下如何在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/publicOptions 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 NoneServerSignature 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