如何在Nginx上运行Ruby on Rails?

日期: 2010-10-08 翻译:黄永兵 来源:TechTarget中国 英文

  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 

  安装好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 ‘<h1>HeyO!</h1><object width=”640″ height=”385″>
<param name=”movie” value=”http://www.youtube.com/v/9X2u2cdvJSg?fs=1&amp;hl=en_US”></param>
<param name=”allowFullScreen” value=”true”></param>
<param name=”allowscriptaccess” value=”always”></param>
<embed src=”http://www.youtube.com/v/9X2u2cdvJSg?fs=1&amp;hl=en_US” type=”application/x-shockwave-flash” allowscriptaccess=”always” allowfullscreen=”true” width=”640″ height=”385″>
</embed>
</object>’ > app/views/home/index.erb 

  如果一切顺利,在浏览器中输入你创建的Vhost地址,你将会看到预期的内容,到此,我们就成功地在Ubuntu上的Nginx安装配置并运行起了Ruby on Rails环境。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • 如何选择Web服务器:Nginx对阵Apache

    Nginx人气的迅猛提升与Apache在Web服务器市场份额领域的稳步下降不禁引发诸多猜测,很多从业者认为这种趋势将使新部署流程中的方案选择变得更为清晰。

  • Rails 4.1改进启动时间和响应布局

    在经历了两个候选版本后,Rails团队刚刚发布了Rails 4.1.0。以“单点版本(point release)”发布意在说明更改向后兼容,可以无痛升级。

  • 初学者指南:为开源做贡献

    当我刚开始做Rails开发者时,我认为所有的Rails gems都是魔法。一些聪明人正在制作这些牛逼的类库让我使用!我不知道这些类库有多少可以使用,我认为它们是好的。

  • 2014年web开发者应该学习的技术盘点

    web开发行业发展迅速,每天总有新的技术、框架、语言或技术方法诞生,对大部分人来说都喜欢学习“所有东西”,但这不符合实际!所以,在2014年,作为Web开发者应该学习什么呢?