Ubuntu14.04下Ruby on rails,Passenger与Nginx的环境搭建
前期工作
在安装rails环境前,有一些必要的包需要安装,以免后面的安装遇到各种缺少库的问题(参见http://ihower.tw/rails3/)。执行如下指令:
$sudo apt-get install build-essential bison openssl libreadline6libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-devlibyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-devlibxslt-dev autoconf libc6-dev
在使用apt-get安装时,有时会遇到unableto locate的问题,一般可以用更新来解决:
$sudo apt-get update
若update也无法执行,出现”isthe internet authenticated?”之类的提示,则很可能是网络有限制。我在用旅馆的网络时就发现了这个问题。。。。
RVM安装
RVM是一个命令行工具,可以提供一个便捷的多版本ruby环境的管理和切换,这可以给你学习ruby/rails带来极大的便利。当然也可以不用rvm进行管理,但我个人比较倾向于用rvm。
安装rvm需要用到curl,这个上面已经装过了。之后按照rvm官网指示安装,很简单,执行两条命令即可:
$ gpg --keyserver hkp://keys.gnupg.net--recv-keys D39DC0E3
$ \curl -sSL https://get.rvm.io | bash -sstable
安装完成后,运行:$source ~/.rvm/scripts/rvm
这样便算完成了rvm的安装。可通过运行$ rvm-v来检查rvm是否安装成功。
用rvm安装ruby
运行$rvm install 2.0.0来安装ruby2.0.0版本。这个可根据自己的需要安装相应的版本。若出现Errorrunning ‘requirements_debian…’的错误,可先运行$rvm autolibs disable然后再安装。若如步骤1中已把各种包都安装了则这里应该能成功安装,否则将会出现missingxxx的错误。
Ruby版本的设置
RVM可以用来安装多个版本的ruby,所以若同一台电脑上安装的多个版本的ruby,则需要指定使用哪个版本的ruby。可用$rvm 2.0.0 --default指令来指定默认的版本(这里是2.0.0版)。
注意,对于ubuntu其terminal实gnome-terminal,所以会出现RVMis not a function的错误,需打开terminal的Edit->profile->preferences->Titleand Command,选中Runcommand as a loginshell。关闭terminal再重新打开个terminal即可运行ruby版本设置的命令。具体可参见:https://rvm.io/integration/gnome-terminal
安装rails
鉴于国内的网络环境,在安装rails前,可将RVM的Ruby安装源到国内的 淘宝镜像服务器http://ruby.taobao.org/,否则会长时间没有响应而无法安装:
$gemsources --remove https://rubygems.org/
$gemsources -a https://ruby.taobao.org/
$gemsources -l
***CURRENT SOURCES ***
https://ruby.taobao.org
使用rvm设定相应的ruby/rails的gemset。如我们想用2.0.0版本的ruby和4.1.8版本的rails进行组合,则可为其设置一个gemset环境。具体操作如下:
$rvm use 2.0.0 (使用2.0.0版本的ruby)
$rvm gemset create rails418 (创建名为rails418的gemset,这个名称可任意起)
$gem install rails [--version=’4.1.8’](安装rails,后面的version参数可选,若不填,则是安装最新版本的rails。若在安装过程中出现unableto convert “/x89” from ASCII to UTF8之类的错误,可运行$gem install rdoc和$gem rdoc --all --overwrite来解决)
$rvm use 2.0.0@rails418 –default(将ruby2.0.0和rails4.1.8组合的gemset作为默认使用的gemset)
可以用$rvm gemset list来查看自己设了哪些gemset环境,同样的,$rvm list可查看安装了哪些版本的ruby。
我们可能会问,如果我有多个rails项目,每个项目需要不同的环境,那每次切换项目时我都需要手动切换gemset环境?事实上,我们可以在各项目的根目录建个.rvmrc文件,在其中写入例如rvmuse 2.0.0@rails418的指令来指定所用的gemset环境。这样,当我们每次进入这个目录是就会切换为此环境。
Rails的部署
我用的是passenger+nginx的部署方式。passenger是一个webapp server,nginx是一个高性能的HTTP和反向代理服务器。可用于部署的软件其实有若干,大家可以自行选择。
首先安装passenger:$gem install passenger
之后使用rvmsudo指令来安装带passenger模块的nginx:
$ rvmsudopassenger-install-nginx-module
这样nginx默认的安装路径为/opt/nginx,修改/opt/nginx/conf/nginx.conf文件来指定根目录为rails项目的public目录。之后启动nginx:
$ sudo /opt/nginx/sbin/nginx
如此即可通过浏览器来使用自己用rails开发的项目了。
使用这种方法安装带passenger的nginx十分方便。Nginx不像apache,apache在需要某模块时只需配置文件添加模块,重启即可。而nginx则只能配置好需要的模块后再进行编译安装,一旦安装完成将无法再添加模块。所以若要自己分开安装的,需要上网查阅如何配置nginx和passenger。对于分开安装如何配置nginx使其能支持passenger,这里给出passenger的官方参考文档地址:https://www.phusionpassenger.com/documentation/UsersguideNginx.html至于如何将nginx添加至服务中以及开机启动,下面给出http://www.nginx.cn/204.html上的一段脚本:
#!/bin/sh
DESC="nginxdaemon"
NAME=nginx
DAEMON=/opt/nginx/sbin/$NAME
CONFIGFILE=/opt/nginx/conf/$NAME.conf
PIDFILE=/opt/nginx/logs/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
set-e
[-x "$DAEMON" ] || exit 0
do_start(){
$DAEMON -c $CONFIGFILE || echo-n "nginx already running"
}
do_stop(){
kill -INT `cat $PIDFILE` ||echo -n "nginx not running"
}
do_reload(){
kill -HUP `cat $PIDFILE` ||echo -n "nginx can't reload"
}
case"$1" in
start)
echo -n "Starting $DESC:$NAME"
do_start
echo "."
;;
stop)
echo -n "Stopping $DESC:$NAME"
do_stop
echo "."
;;
reload|graceful)
echo -n "Reloading $DESCconfiguration..."
do_reload
echo "."
;;
restart)
echo -n "Restarting$DESC: $NAME"
do_stop
do_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME{start|stop|reload|restart}" >&2
exit 3
;;
esac
exit0
将这段脚本以新建文件/etc/init.d/nginx的方式保存,之后便可使用sudoservice nginx start/stop/restart来操作nginx服务了。
下面给出如何用rvm卸载ruby,gemset的指令:
卸载一个ruby版本:$rvm remove 2.0.0
清空一个gemset的所用gem,想重新安装所有gem:
$rvm gemset empty 2.0.0@rails418
删除一个gemset:$rvm gemset delete rails418
以上就介绍了Ubuntu14.04下Ruby on rails,Passenger与Nginx的环境搭建,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
推荐阅读