2011-02-18 112 views
1

我正在使用:Rails 3,ruby 1.9.2并尝试使用capistrano进行部署。 当我运行cap deploy时:check,capistrano告诉我它无法在我的部署服务器上找到git(见下文)。新手capistrano rails部署问题(在路径中找不到git)

对我做错什么想法?

这是我的设置。

  • 我有一个混帐回购协议@ github上
  • 我有一个 笔记本电脑的 的GitHub库更新本地副本
  • 我有一个本地 “生产”服务器(192.168.0.103),其中 生产应用应该部署
  • 我跑我的笔记本电脑从本地回购所有命令(而不是生产服务器)

如果我运行cap deploy:setup,我的deploy.rb文件成功地将“发布”和“共享”目录添加到我的生产服务器上(又名192.168.0.103)。

如果我运行cap deploy:check命令,则会失败,并显示错误消息 在路径(192.168.0.103)中找不到`git'。

奇怪的是(对我来说至少)是git肯定安装在192.168.0.103上,并且当我登录到192.168.0.103时,用于查看git是否存在(哪个git)的命令。

所以,很明显我做错了什么(也许在deploy.rb文件?)

这里的deploy.rb文件

default_run_options[:pty] = true 
set :application, "myapp" 
set :repository, "[email protected]:xxxxxxx/myapp.git" 
set :user, "abcde" #username that's used to ssh into 192.168.0.103 
set :scm, :git 
set :scm_passphrase, "xxxxxxxx" 
set :branch, "master" 
set :deploy_via, :remote_cache 
set :deploy_to, "/Users/abcde/www" 

role :web, "192.168.0.103" 
role :app, "192.168.0.103" 

这里的消毒版本帽部署的输出:检查

* executing `deploy:check' 
    * executing "test -d /Users/abcde/www/releases" 
    servers: ["192.168.0.103"] 
Password: 
    [192.168.0.103] executing command 
    command finished 
    * executing "test -w /Users/abcde/www" 
    servers: ["192.168.0.103"] 
    [192.168.0.103] executing command 
    command finished 
    * executing "test -w /Users/abcde/www/releases" 
    servers: ["192.168.0.103"] 
    [192.168.0.103] executing command 
    command finished 
    * executing "which git" 
    servers: ["192.168.0.103"] 
    [192.168.0.103] executing command 
    command finished 
The following dependencies failed. Please check them and try again: 
--> `git' could not be found in the path (192.168.0.103) 
+0

看来,git不在服务器部署的用户的路径中。你将哪个用户ssh服务器作为服务器部署的用户?我有道理吗?我有限的服务器知识,但这似乎是我的问题。此外,这将公平更好的serverfault.com。 – AndrewKS 2011-02-18 22:03:55

+0

AndrewKs,谢谢你。我没有意识到serverfault.com存在,但我会发布任何未来的问题。原来,这不是一个用户/路径/权限问题(请参阅下面的我的“自我回答”)。 – user141146 2011-02-18 22:06:54

回答

2

好吧,我想我想通了。

这里描述我基本上有同样的问题:http://groups.google.com/group/capistrano/browse_thread/thread/50af1daed0b7a393

这里有一个选择摘录:

我尝试部署在 共享环境上,我 安装的git的应用程序。我已经将路径 添加到bashrc,,但这只能在交互式bash中使用 。当上限为 时,它将不会运行 bash。如果我运行deploy:检查它失败 by - >在路径中找不到`git'(例如。com)如果我设置 :scm_command,“/ home/user/opt/bin/git” 这个问题是用 deploy:check命令解决的,但是当我运行 deploy:cold时,它失败了,因为它 试图在本地运行/ home/user/opt/bin/git ,因为我在我的电脑上使用了Windows,所以我甚至不能把git放在 那里。

增加:scm_command,“path/to/my/git”修复了这个问题,虽然我不是100%,但这是正确的方法。

0

我会建议使用:

default_run_options[:env] = {'PATH' => '/home/user/opt/bin/git:$PATH'} 

这将允许调整PATH系统环境变量(和他们如果需要更多的),这样不仅“Capistrano的找不到SCM”的问题得到解决bu任何其他与Capistrano没有在交互式bash中运行的类似问题(不执行.bashrc等)。