stdout deployment

首先值得一提的是为了支持HostMonster的fastcgi,我人为copy了几个以raild -D生成的项目结构里面的dispatch文件以及create了一个.htaccess文件,如果你不用fastcgi(通常情况下你不需要,而且也不推荐),你可以简单的删除它们(以下RAILS_ROOT是指rails app的根目录): [cc lang=”ruby”] RAILS_ROOT/config.ru RAILS_ROOT/public/dispatch.cgi RAILS_ROOT/public/dispatch.fcgi RAILS_ROOT/public/dispatch.rb RAILS_ROOT/public/.htaccess [/cc] [Development Environment] Assume你的os已经装好ruby,如果没有请自行google,这里不再赘述。 首先update一下rubygems,最近rubygems貌似打了鸡血,更新极其频繁… 且bug具多…如果出了问题建议rollback到1.4.2… [Note: 由于我使用rvm,所以以下command都没有sudo,根据你的情况你可能需要加上sudo] [cc lang=”bash”] $ gem update –system [/cc] 从github上checkout一份最新的code,rails 2.3.11已经freeze进了source code,所以安装rails并不是必须的: [cc lang=”bash”] $ git clone git://github.com/samsonw/stdout.git $ cd stdout [/cc] 复制一份database.yml,不需要什么特别的修改,默认的dev环境配置是使用sqlite3的database: [cc lang=”bash”] $ cp config/database.yml.example config/database.yml [/cc] 运行rake db:migrate之前确保已经装好了sqlite3-ruby gem和parse_feeds.rake所依赖的gem,不然rake可能会报错: [cc lang=”bash”] $ gem install sqlite3-ruby $ gem install base64 json rest-client twitter nokogiri open-uri $ rake db:migrate [/cc] 如果没有报错,database应该已经建好,接下来我们需要给database populate some data,首先来搞Source表,编辑RAILS_ROOT/db/seeds.rb文件,修改blog的link或者删除某些不需要的link,也可以加上你需要的source,我默认加了4个source: [cc lang=”ruby” nowrap=”false”] Source.find_or_create_by_name :name=>”blog”, :display_name=>”Weblog”, :url=>”http://blog.samsonis.me/" Source.find_or_create_by_name :name=>”twitter”, :display_name=>”Twitter”, :url=>”http://twitter.com/" Source.find_or_create_by_name :name=>”sina”, :display_name=>”新浪微博”, :url=>”http://t.sina.com.cn/" Source.find_or_create_by_name :name=>”douban”, :display_name=>”豆瓣”, :url=>”http://www.douban.com/" [/cc] 完成后我们就可以populate database: [cc lang=”bash”] $ rake db:seed [/cc] 接下来来搞Activity表,这个表是需要实时更新的(我在production上是半小时一次),数据的更新是通过RAILS_ROOT/lib/tasks/parse_feeds.rake脚本完成的,根据你的需要你需要修改一下这个文件,比如blog的feed地址,sina的username/password,douban的miniblogs feed地址以及twitter的帐号(请自行注意翻墙),根据需要也可以删除或添加新的rake tasks,完成修改后,务必做下测试,我用一个vitual task stdout以简化运行(也为了之后方便cron job配置): [cc lang=”bash”] $ rake stdout [/cc] 如果需要,你也可以执行单个task: [cc lang=”bash”] $ rake feeds:parse $ rake twitter:parse $ rake sina:parse $ rake douban:parse [/cc] 如果一切正常,database应该已经populate完成,大功告成,server start,http://localhost:3000/, welcome abroad: [cc lang=”bash”] $ script/server [/cc] [Production Environment] 完成了开发环境的搭建,Production的deployment就会简单很多(当然用fastcgi的不算),因为本质上是差不多的,区别可能只在database和web server的配置之上(我们是卢瑟,没有多少点击率的小site根本不需要load balance,不需要cdn,不需要nosql,不需要distributed). database的配置请修改database.yml的production section,比如我们要用mysql database(最新driver是mysql2,不过as you may already know,HostMonser支持只支持mysql,你可以根据你的需要使用mysql2): [cc lang=”bash”] $ gem install mysql [/cc] [cc lang=”ruby”] production: adapter: mysql encoding: utf8 database: MYSQL_DATABASE_NAME pool: 5 username: MYSQL_USER password: PASSWORD host: localhost [/cc] web/app server建议使用passenger,然后apache抑或nginx,这里不再赘述;当然你也可以直接mongrel或是webrick抑或fastcgi. 最后你还需要配置一个cron job,定时更新数据,我在Production上每30分钟更新一次,你可以根据你的需要配置,比如某些话捞可能需要15分钟一次甚至5分钟一次: [cc lang=”bash” nowrap=”false”] 15,45 cd RAILS_ROOT && rake RAILS_ENV=”production” stdout >/dev/null 2>&1 [/cc] 能回忆记起的大致就这些了,如果deploy中有问题请留言,I’m more than happy to assist.

Buy me a coffee
  • Post author: Samson Wu
  • Post link: 2785.html
  • Copyright Notice: All articles in this blog are licensed under BY-NC-SA unless stating additionally.
0%