Skip to content

Instantly share code, notes, and snippets.

@justqyx
Forked from doitian/solr_cap.rb
Last active December 22, 2016 03:44
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save justqyx/7688264 to your computer and use it in GitHub Desktop.
Save justqyx/7688264 to your computer and use it in GitHub Desktop.

这是从其他地方 fork 过来的部署脚本(deploy.rb 部分代码)

namespace :deploy do
  task :setup_solr_data_dir do
    run "mkdir -p #{shared_path}/solr/data"
  end
end

namespace :solr do
  desc "start solr"
  task :start, :roles => :app, :except => { :no_release => true } do 
    run "cd #{current_path} && RAILS_ENV=#{rails_env} bundle exec sunspot-solr start --port=8983 --data-directory=#{shared_path}/solr/data --pid-dir=#{shared_path}/pids"
  end
  desc "stop solr"
  task :stop, :roles => :app, :except => { :no_release => true } do 
    run "cd #{current_path} && RAILS_ENV=#{rails_env} bundle exec sunspot-solr stop --port=8983 --data-directory=#{shared_path}/solr/data --pid-dir=#{shared_path}/pids"
  end
  desc "reindex the whole database"
  task :reindex, :roles => :app do
    stop
    run "rm -rf #{shared_path}/solr/data"
    start
    run "cd #{current_path} && RAILS_ENV=#{rails_env} bundle exec rake sunspot:solr:reindex"
  end
end

after 'deploy:setup', 'deploy:setup_solr_data_dir'

现在,我是这么做的(可能由于 capistrno 版本不同,对于 shared_path 有不同写法)

# config/deploy.rb (部分)

# 设置共享的文件夹
set :shared_children, %w(solr/data solr/pids log tmp/pids tmp/sockets public/uploads)

namespace :solr do
  desc "start solr"
  task :start, roles: :app, except: { no_release: true } do
    run "cd #{current_path} && RAILS_ENV=#{rails_env} bundle exec rake sunspot:solr:start"
  end

  task :stop, roles: :app, except: { no_release: true } do
    run "cd #{current_path} && RAILS_ENV=#{rails_env} bundle exec rake sunspot:solr:stop"
  end

  task :reindex, roles: :app do
    stop
    run "rm -rf #{shared_path}/solr/data"
    start
    run "cd #{current_path} && RAILS_ENV=#{rails_env} bundle exec rake sunspot:solr:reindex"
  end
end

注意

只要你的 solr 配置不变,每次部署就不需要重启 solr 服务。

所以 solr 服务应该设置成手动重启,或是你写个逻辑,每次部署前判断配置文件有没有变化,如果有,则重启 solr 服务。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment