【译文】Nginx已经成为世界第三大Web服务器,在国内十大网站使用的Web服务器调查中,Nginx也名列前茅。Ruby on Rails是近几年开始流行的新一代Web开发语言,其易用、敏捷的特性收到很多Web开发人员的瞩目。

创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站制作、成都网站建设、外贸营销网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的威远网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
本文将指导您在Ubuntu/Debian上从Ruby和Rails开始,一步一步的安装配置Ruby on Rails环境,并结合Nginx运行环境获得优异的性能。
安装Ruby
- export PATH="${PATH}:/var/lib/gems/1.8/bin/"
 - echo 'export PATH="${PATH}:/var/lib/gems/1.8/bin/"' >> /etc/bash.bashrc
 - aptitude install ruby rubygems vim-ruby rub y-dev libzlib-ruby
 - libyaml-ruby libreadline-ruby libncurses-ruby rdoc ri libcurses-ruby
 - libruby libruby-extras libfcgi-ruby build-essential libopenssl-ruby
 - libdbm-ruby libdbi-ruby libxml-ruby libxml2-dev
 
安装Rails
- gem install -v=2.3.5 rails
 
gem install rails也应该可以工作,但2.3.6-2.3.8(目前正在编写)存在问题。如果你想尝试***版本,则可以使用:
- gem install rails –pre
 
或使用RVM,RVM是一个命令行工具,允许我们更容易安装,管理和使用多个Ruby环境。
应用程序
我的新应用程序叫做myapp.example.com。
- cd /var/www
 - rails new myapp.example.com
 - cd myapp.example.com
 
Thin服务器
Thin将成为Ruby服务器:
- gem install thin
 - thin install
 - /usr/sbin/update-rc.d -f thin defaults
 - thin config -C /etc/thin/myapp.example.com -c
 - /var/www/myapp.example.com --servers 3 -e development # or: -e production for caching, etc
 
如果你不喜欢Thin,还有Mongrels:
- aptitude install mongrel mongrel-cluster
 - mongrel_rails cluster::configure -e development -p 3000 -N 3 -c /var/www/myapp.example.com
 - -a 127.0.0.1 # or: -e production for caching, etc
 - mkdir /etc/mongrel_cluster
 - sudo ln -nfs /var/www/myapp.example.com/config/mongrel_cluster.yml /etc/mongrel_cluster/myapp.example.com.yml
 - #sudo ln -nfs /var/www/myapp.example.com/config/mongrel_cluster.yml
 - /etc/mongrel-cluster/sites-enabled/myapp.example.com.yml
 
安装Nginx
Nginx将作为Web服务器,代理发送给Thin的Ruby请求,运行在端口3000-3002上,使用下面的命令进行安装:
- aptitude install nginx
 
#p#安装好Nginx后,创建一个Vhost(虚拟主机),编辑/etc/nginx/sites-enabled/myapp.example.com,输入:
- upstream myapp {
 - server 127.0.0.1:3000;
 - server 127.0.0.1:3001;
 - server 127.0.0.1:3002;
 - }
 - server {
 - listen 80;
 - server_name .example.com;
 - access_log /var/www/myapp.example.com/log/access.log;
 - error_log /var/www/myapp.example.com/log/error.log;
 - root /var/www/myapp.example.com;
 - index index.html;
 - 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 off;
 - try_files /system/maintenance.html $uri $uri/index.html $uri.html @ruby;
 - }
 - location @ruby {
 - proxy_pass http://myapp;
 - }
 - }
 
数据库
首先安装SQLite:
- aptitude install -y libdbd-sqlite3-ruby sqlite3 libsqlite3-dev libsqlite3-ruby
 - gem install sqlite3-ruby
 
MySQL
如果你想使用MySQL,则使用下面的命令进行安装:
- aptitude install -y libmysqlclient-dev
 - gem install mysql
 
然后修改你的/var/www/myapp.example.com/config/database.yml,如:
- development:
 - adapter: mysql
 - host: localhost
 - database: myapp
 - username: myapp
 - password: xxxxxxx
 
注意,database.yml不支持Tab键,如果你使用的是vim,可能需要做如下设置:
- :set expandtab
 - #:set tabstop=4 # how many spaces should tabs be replaced withs
 - :retab
 
然后将下面的内容添加到./Gemfile,让你的应用程序使用MySQL:
- gem 'mysql', '2.8.1'
 
假设你已经有一个MySQL服务器在运行,如果没有,你需要先运行aptitude install mysql-server安装它。
gem安装配置
- gem install uuidtool
 - gem install ruby-debug
 - gem install ruby-graphviz
 - gem install json
 - gem install activemerchant
 
启动应用程序
让我们重启我们的守护程序,看看它是否能正常工作。
对于Thin:
- /etc/init.d/thin restart && /etc/init.d/nginx reload; tail -f log/*.log
 
对于Mongrel
- mongrel_cluster_ctl restart && /etc/init.d/nginx reload; tail -f log/*.log
 
在config/routs.rb中添加:
- map.root :controller => "home"
 
创建一个home控制器,移除‘Welcome aboard’HTML:
- script/generate controller home index
 - rm public/index.html
 - echo '
 HeyO! h1>
- param>
 - param>
 - param>
 
如果一切顺利,在浏览器中输入你创建的Vhost地址,你将会看到预期的内容,到此,我们就成功地在Ubuntu上的Nginx安装配置并运行起了Ruby on Rails环境。