在nginx上配置Ruby on Rails
时间:2015-06-28 20:27 来源:linux.it.net.cn 作者:IT
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&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&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环境。
(责任编辑:IT)
Nginx已经成为世界第三大Web服务器,在国内十大网站使用的Web服务器调查中,Nginx也名列前茅。Ruby on Rails是近几年开始流行的新一代Web开发语言,其易用、敏捷的特性收到很多Web开发人员的瞩目。 本文将指导您在Ubuntu/Debian上从Ruby和Rails开始,一步一步的安装配置Ruby on Rails环境,并结合Nginx运行环境获得优异的性能。 安装Rubyexport 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 安装Railsgem 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 安装NginxNginx将作为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:
假设你已经有一个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&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&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环境。 (责任编辑:IT) |