我已设置好所有内容,并且我可以通过免费套餐上的ssh连接到服务器
现在我的项目是如何上传服务器文件和数据库?
我看到有一些宝石在轨道上如橡胶将文件部署到服务器但是我如何集成git以便我也可以提交更改?
答案 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更稳定在一个单一的实例上。