【问题标题】:Capistrano starting Sunspot does not find JavaCapistrano 启动 Sunspot 找不到 Java
【发布时间】:2013-02-06 11:48:00
【问题描述】:

我正在使用 Sunspot Solr,并且正在编写 Capistrano 任务来启动/停止它。

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

但是当我运行这个任务时,我得到了找不到 Java 的错误:

*** [err :: example.com] /home/user/deploy/project/shared/bundle/ruby/1.9.1/gems/sunspot_solr-1.3.3/lib/sunspot/solr/java.rb:5:in ``': No such file or directory - java -version (Errno::ENOENT)
*** [err :: example.com] from /home/user/deploy/project/shared/bundle/ruby/1.9.1/gems/sunspot_solr-1.3.3/lib/sunspot/solr/java.rb:5:in `installed?'
*** [err :: example.com] from /home/user/deploy/project/shared/bundle/ruby/1.9.1/gems/sunspot_solr-1.3.3/lib/sunspot/solr/server.rb:200:in `ensure_java_installed'
*** [err :: example.com] from /home/user/deploy/project/shared/bundle/ruby/1.9.1/gems/sunspot_solr-1.3.3/lib/sunspot/solr/server.rb:27:in `initialize'
*** [err :: example.com] from /home/user/deploy/project/shared/bundle/ruby/1.9.1/gems/sunspot_solr-1.3.3/bin/sunspot-solr:16:in `new'
*** [err :: example.com] from /home/user/deploy/project/shared/bundle/ruby/1.9.1/gems/sunspot_solr-1.3.3/bin/sunspot-solr:16:in `<top (required)>'
*** [err :: example.com] from /home/user/deploy/project/shared/bundle/ruby/1.9.1/bin/sunspot-solr:23:in `load'
*** [err :: example.com] from /home/user/deploy/project/shared/bundle/ruby/1.9.1/bin/sunspot-solr:23:in `<main>'
failed: "rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell '1.9.3@project' -c 'cd /home/user/deploy/project/current && RAILS_ENV=staging bundle exec rake sunspot:solr:start'" on example.com

Sunspot 的 Java 检查代码是here

如果我在服务器上手动运行cd /home/user/deploy/project/current &amp;&amp; RAILS_ENV=staging bundle exec rake sunspot:solr:start,它会按预期工作。如果通过 Capistrano 调用命令,我不知道为什么 Java 不存在。

【问题讨论】:

  • 您是否以同一用户身份手动运行命令并通过 capistrano 运行命令?
  • 你检查#{rails_env} 是否正确。 “分期”?
  • @NikitaBeloglazov 是同一用户(抱歉回复晚了)
  • @Nishant 是的,它作为分期/生产是正确的
  • 你知道java的路径是在哪里指定的吗?我通常将其添加到.bashrc。我不知道 capistrano 是否读取 .bashrc 并从中加载 PATH。检查this 问题:您可能需要在一些更具体的地方指定java 的路径。

标签: java ssh capistrano sunspot


【解决方案1】:

在我的服务器上,Java 路径加载在 `/etc/profile' 脚本中。

但是 Capistrano 不会加载该脚本。

根据this discussion,在 Capistrano deploy.rb 文件中进行设置将确保其 shell 加载配置文件脚本,该脚本为我设置 Java 路径。

default_run_options[:shell] = '/bin/bash --login'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 2023-03-07
    • 2021-07-20
    相关资源
    最近更新 更多