在EC2上部署Ruby on Rails项目

时间:2012-07-28 08:37:40

标签: ruby-on-rails git deployment amazon-ec2

我已设置好所有内容,并且我可以通过免费套餐上的ssh连接到服务器

现在我的项目是如何上传服务器文件和数据库?

我看到有一些宝石在轨道上如橡胶将文件部署到服务器但是我如何集成git以便我也可以提交更改?

1 个答案:

答案 0 :(得分:2)

代码

要上传文件,请查看capistrano。另一个流行的工具是Vlad the deployer

对于rails3应用程序(假设乘客)来说,这是一个简单的deploy.rb,它现在只需要一台服务器(用实际值替换所有服务器):

require 'bundler/capistrano'
require 'capistrano_colors'

set :application, "<APP_NAME>"
set :repository,  "git@github.com:<USER>/<PROJECT>.git"
set :branch, "master"
set :deploy_to, "/home/<DEPLOY_USER>/<APP_NAME>"
set :keep_releases, 3

set :scm, :git
set :user, "<DEPLOY_USER>"
set :use_sudo, false
set :deploy_via, :remote_cache

default_run_options[:pty] = true
default_run_options[:shell] = '/bin/bash -l'

ssh_options[:forward_agent] = true

role :web, "<IP_OR_PUBLIC_DNS>"
role :app, "<IP_OR_PUBLIC_DNS>"

namespace :deploy do
  task :start do ; end
  task :stop do ; end
  task :restart, :roles => :app, :except => { :no_release => true } do
    run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
  end
end

after "deploy", "deploy:cleanup"

注意:在运行cap deploy之前,您应该为部署用户ssh添加私钥以及用于github的密钥。 (例如ssh-add ~/.ssh/id_dsa

数据库

就数据库而言,您可以通过cap deploy:migrations作为部署的一部分运行迁移,也可以通过cap deploy:migrate独立运行迁移。请务必列出具有角色:db

的服务器
role :db, "<IP_OR_PUBLIC_DNS>", :primary => true

注意:这是将用于运行迁移的服务器,而不是实际的数据库。应在database.yml中指定数据库。)

设置数据库本身超出了这个答案的范围,但您可以直接在实例上运行db,或者查看Amazon的RDS,它的设置非常简单,比运行db更稳定在一个单一的实例上。