学习什么新的东西,一般都是从构建环境开始的。虽然还没有搞明白怎么用rails开发一个站点,对ruby也不是很清楚,还是先根据网上的文档搭建了一个运行的环境。
Gentoo安装后自带ruby 1.8.7版本,用emerge命令安装上rubygems后一切ruby相关的包都用gem来搞定。thin是ruby的一个轻量级的web框架,在Gentoo下还是被Marked,所以也用gem安装。gem的安装命令:
gem install rails thin rack eventmachine
在rails的项目目录/lib/tasks下创建一个thin.rake文件:
namespace :thin do
namespace :cluster do
desc 'Start thin cluster'
task :start => :environment do
`cd #{RAILS_ROOT}`
port_range = RAILS_ENV == 'developmet' ? 3 : 8
(ENV['SIZE'] ? ENV['SIZE'].to_i : 4).times do |i|
Thread.new do
port = ENV['PORT'] ? ENV['PORT'].to_i + i : ("#{port_range}%03d" % i)
str = "thin start -d -p#{port} -Ptmp/pids/thin-#{port}.pid"
str += " -e#{RAILS_ENV}"
puts str
puts "Starting server on port #{port}…"
`#{str}`
end
end
end
desc 'Stop all thin clusters'
task :stop => :environment do
`cd #{RAILS_ROOT}`
Dir.new("#{RAILS_ROOT}/tmp/pids").each do |file|
Thread.new do
if file.starts_with?("thin-")
str = "thin stop -Ptmp/pids/#{file}"
puts "Stopping server on port #{file[/\d+/]}…"
`#{str}`
end
end
end
end
end
end
启动和关闭thin服务的命令:
rake thin:cluster:start RAILS_ENV=production SIZE=3 PORT=8000
rake thin:cluster:stop
修改Ngin的配置文件/etc/nginx/nginx.conf:
upstream thin {
server 127.0.0.1:8000;
server 127.0.0.1:8001;
server 127.0.0.1:8002;
}
server {
listen 9000;
server_name localhost;
access_log /var/log/nginx/rails.access.log;
error_log /var/log/nginx/rails.error_log info;
root /root/project/xxxxx;
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;
if (-f $request_filename/index.html) {
rewrite (.*) $1/index.html break;
}
if (-f $request_filename.html) {
rewrite (.*) $1.html break;
}
if (!-f $request_filename) {
proxy_pass http://thin;
break;
}
}
}
启动Nginx,访问http://localhost:9000看看是否显示rails的Welcome aboard页面。