2011-02-18 130 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等)。