0

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

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

我看到rails中有一些宝石,例如将文件部署到服务器的rubber,但是我怎样才能集成git以便我也可以提交更改?

4

1 回答 1

2

代码

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

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

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"

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

数据库

就数据库而言,您可以在部署过程中运行迁移,也可以cap deploy:migrations通过cap deploy:migrate. 请务必列出具有角色的服务器:db

role :db, "<IP_OR_PUBLIC_DNS>", :primary => true

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

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

于 2012-07-28T10:43:24.880 回答