加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Capistrano无法部署到远程服务器

发布时间:2020-12-17 01:28:17 所属栏目:百科 来源:网络整理
导读:解 解决方案是将以下内容添加到production.rb的顶部: $:.unshift(File.expand_path('./lib',ENV['rvm_path'])) # Add RVM's lib directory to the load path.require "rvm/capistrano" # Load RVM's capistrano plugin.set :rvm_ruby_string,'1.9.2@rails31

解决方案是将以下内容添加到production.rb的顶部:

$:.unshift(File.expand_path('./lib',ENV['rvm_path'])) # Add RVM's lib directory to the load path.
require "rvm/capistrano"                  # Load RVM's capistrano plugin.
set :rvm_ruby_string,'1.9.2@rails31dataserver'        # Or whatever env you want it to run in.
set :rvm_bin_path,'/usr/local/rvm/bin'

我之前缺少的部分是:rvm_bin_path,’/usr/local/rvm / bin’,因为我之前从未在Capistrano部署中使用过该配置设置,而且我做了一些.哦,好吧,一天都在工作.信用转到irc.freenode.net上#rvm频道的tonyflint!

原帖

克利夫说

>我正在运行RVM的系统安装
>我正在通过Capistrano部署

我目前傻眼了.基本上正在发生的事情是我正在尝试通过Capistrano进行部署,而且它很难,很难.这是我的deploy.rb和production.rb文件的贴图(我正在做一个多阶段环境并省略staging.rb文件,因为它工作正常). http://pastie.org/2523675

以下是cap生产部署的输出:setup:

$cap production deploy:setup
  * executing `production'
    triggering start callbacks for `deploy:setup'
  * executing `multistage:ensure'
  * executing `deploy:setup'
  * executing "sudo -p 'sudo password: ' mkdir -p /var/www/html/dataserver /var/www/html/dataserver/releases /var/www/html/dataserver/shared /var/www/html/dataserver/shared/system /var/www/html/dataserver/shared/log /var/www/html/dataserver/shared/pids"
    servers: ["omitted"]
Password: 
    [omitted] executing command
*** [err :: omitted] sudo
*** [err :: omitted] :
*** [err :: omitted] sorry,you must have a tty to run sudo
*** [err :: omitted] 
    command finished in 60ms
failed: "sh -c 'sudo -p '''sudo password: ''' mkdir -p /var/www/html/dataserver /var/www/html/dataserver/releases /var/www/html/dataserver/shared /var/www/html/dataserver/shared/system /var/www/html/dataserver/shared/log /var/www/html/dataserver/shared/pids'" on omitted

现在,我知道为什么会这样.我正在远程尝试使用sudo,这是一个安全禁忌.所以,这意味着我需要使用default_run_options [:pty] = true.所以我取消注释它并运行cap生产部署:再次设置并且所有运行都很好和花花公子.部署的目录结构获取设置和所有内容.真棒.现在我尝试运行cap生产部署,这是输出:

$cap production deploy
  * executing `production'
    triggering start callbacks for `deploy'
  * executing `multistage:ensure'
  * executing `deploy'
  * executing `deploy:update'
 ** transaction: start
  * executing `deploy:update_code'
    updating the cached checkout on all servers
    executing locally: "hg log -r default --template '{node|short}'"
    command finished in 52ms
  * executing "if [ -d /var/www/html/dataserver/shared/cached-copy ]; then hg pull --repository /var/www/html/dataserver/shared/cached-copy https://cowfish.unh.edu/hg/DataServerApp && hg update --repository /var/www/html/dataserver/shared/cached-copy --clean 6979cec4fc00; else hg clone --noupdate https://cowfish.unh.edu/hg/DataServerApp /var/www/html/dataserver/shared/cached-copy && hg update --repository /var/www/html/dataserver/shared/cached-copy --clean 6979cec4fc00; fi"
    servers: ["omitted"]
Password: 
    [omitted] executing command
 ** [omitted :: out] warning: certificate for omitted can't be verified (Python too old)
 ** [omitted :: out] http authorization required
 ** [omitted :: out] realm: Mercurial Project Repository
 ** [omitted :: out] user:
 ** [omitted :: out] d
 ** [omitted :: out] e
 ** [omitted :: out] p
 ** [omitted :: out] l
 ** [omitted :: out] o
 ** [omitted :: out] y
 ** [omitted :: out]
 ** [omitted :: out] password:
 ** [omitted :: out]
 ** [omitted :: out] warning: certificate for omitted can't be verified (Python too old)
 ** [omitted :: out] warning: certificate for omitted can't be verified (Python too old)
 ** [omitted :: out] warning: certificate for omitted can't be verified (Python too old)
 ** [omitted :: out] requesting all changes
 ** [omitted :: out] warning: certificate for omitted can't be verified (Python too old)
 ** [omitted :: out] warning: certificate for omitted can't be verified (Python too old)
 ** [omitted :: out] adding changesets
 ** [omitted :: out] adding manifests
 ** adding file changes
 ** [omitted :: out] added 11 changesets with 187 changes to 125 files
 ** [omitted :: out] warning: certificate for omitted can't be verified (Python too old)
 ** [omitted :: out] warning: certificate for omitted can't be verified (Python too old)
 ** [omitted :: out] 114 files updated,0 files merged,0 files removed,0 files unresolved
    command finished in 1332ms
    copying the cached version to /var/www/html/dataserver/releases/20110912233835
  * executing "cp -RPp /var/www/html/dataserver/shared/cached-copy /var/www/html/dataserver/releases/20110912233835 && (echo 6979cec4fc00 > /var/www/html/dataserver/releases/20110912233835/REVISION)"
    servers: ["omitted"]
    [omitted] executing command
    command finished in 23ms
  * executing `deploy:finalize_update'
  * executing "chmod -R g+w /var/www/html/dataserver/releases/20110912233835"
    servers: ["omitted"]
    [omitted] executing command
    command finished in 7ms
  * executing "rm -rf /var/www/html/dataserver/releases/20110912233835/log /var/www/html/dataserver/releases/20110912233835/public/system /var/www/html/dataserver/releases/20110912233835/tmp/pids &&n      mkdir -p /var/www/html/dataserver/releases/20110912233835/public &&n      mkdir -p /var/www/html/dataserver/releases/20110912233835/tmp &&n      ln -s /var/www/html/dataserver/shared/log /var/www/html/dataserver/releases/20110912233835/log &&n      ln -s /var/www/html/dataserver/shared/system /var/www/html/dataserver/releases/20110912233835/public/system &&n      ln -s /var/www/html/dataserver/shared/pids /var/www/html/dataserver/releases/20110912233835/tmp/pids"
    servers: ["omitted"]
    [omitted] executing command
    command finished in 8ms
  * executing "find /var/www/html/dataserver/releases/20110912233835/public/images /var/www/html/dataserver/releases/20110912233835/public/stylesheets /var/www/html/dataserver/releases/20110912233835/public/javascripts -exec touch -t 201109122338.35 {} ';'; true"
    servers: ["omitted"]
    [omitted] executing command
 ** [out :: omitted] find: /var/www/html/dataserver/releases/20110912233835/public/images: No such file or directory
 ** [out :: omitted] find: /var/www/html/dataserver/releases/20110912233835/public/stylesheets: No such file or directory
 ** [out :: omitted] find: /var/www/html/dataserver/releases/20110912233835/public/javascripts: No such file or directory
    command finished in 6ms
  * executing `deploy:symlink'
  * executing "rm -f /var/www/html/dataserver/current && ln -s /var/www/html/dataserver/releases/20110912233835 /var/www/html/dataserver/current"
    servers: ["omitted"]
    [omitted] executing command
    command finished in 6ms
 ** transaction: commit
  * executing `deploy:restart'
  * executing "sudo -p 'sudo password: ' touch /var/www/html/dataserver/current/tmp/restart.txt"
    servers: ["omitted"]
    [omitted] executing command
    command finished in 10ms
    triggering after callbacks for `deploy'
  * executing `deploy:migrate'
    triggering before callbacks for `deploy:migrate'
  * executing `sqlite3:link_configuration_file'
  * executing "ln -nsf /var/www/html/dataserver/shared/sqlite_config.yml /var/www/html/dataserver/releases/20110912233835/config/database.yml"
    servers: ["omitted"]
    [omitted] executing command
    command finished in 6ms
  * executing "cd /var/www/html/dataserver/releases/20110912233835 && rake RAILS_ENV=production  db:migrate"
    servers: ["omitted"]
    [omitted] executing command
 ** [out :: omitted] sh: rake: command not found
    command finished in 5ms
failed: "sh -c 'cd /var/www/html/dataserver/releases/20110912233835 && rake RAILS_ENV=production  db:migrate'" on omitted

因此看来无论加载什么环境都看不到rake.要查看我创建部署任务的路径中加载的内容,请输出以下内容:

$cap production test_path
  * executing `production'
    triggering start callbacks for `test_path'
  * executing `multistage:ensure'
  * executing `test_path'
  * executing "echo $PATH"
    servers: ["omitted"]
Password: 
    [omitted] executing command
 ** [out :: omitted] /usr/local/bin:/bin:/usr/bin
    command finished in 11ms
  * executing "echo $rvm_path"
    servers: ["omitted"]
    [omitted] executing command
 ** [out :: omitted] 
    command finished in 5ms

现在你会发现路径绝对不正确.对于正在建立会话的用户,应该是以下内容:

/usr/local/rvm/gems/ruby-1.9.2-p290@rails31dataserver/bin:/usr/local/rvm/gems/ruby-1.9.2-p290@global/bin:/usr/local/rvm/rubies/ruby-1.9.2-p290/bin:/usr/local/rvm/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/lpeabody/bin

而且,我知道为什么这不起作用.这是因为我正在运行default_run_options [:pty] = true我的环境正在加载,至少这是我目前的理论.所以,毕竟,我得出结论 – 我需要以某种方式加载我的环境,以便rake可以在不启用远程sudo的情况下运行.

现在,我知道我不是唯一需要这样做的人,所以任何指针或提示都将受到高度赞赏.我已经把我的大脑放在了8小时的大部分时间里,我需要尽快部署这个应用程序.

解决方法

解决方案是将以下内容添加到production.rb的顶部:

$:.unshift(File.expand_path('./lib',一天都在工作.信用转到irc.freenode.net上#rvm频道的tonyflint!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读