2012-11-22 90 views
3

用簡單的配方測試capistrano。Capistrano部署:設置工作,但不部署:檢查

$ cap deploy:setup 
    * executing `deploy:setup' 
    * executing "sudo -p 'sudo password: ' mkdir -p /u/apps/ [..] 
    [..] 

deploy:setup作品exprected。

然而

$ cap deploy:check 
    * executing `deploy:check' 
    * executing "test -d /u/apps/[..] 
    [..] 

當運行deploy:check我得到以下錯誤:

The following dependencies failed. Please check them and try again: 
--> You do not have permissions to write to `/u/apps/ 
[..] 
--> `/u/apps/app/shared is not writable [..] 

似乎Capistrano的未使用sudo而在deploy:check模式。

我不明白!

而在deploy:setup整個目錄結構由capistrano創建沒有任何問題?

爲什麼capistrano不使用sudo,如deploy:check

回答

1

我碰到了same issue:訣竅是明確配置Capistrano不要使用sudo
你可以把它們關掉你的deploy.rb文件有:

set :use_sudo, false 

如果需要使用sudo,如何使用您的命令sudo DSL Action Invocation

run "#{sudo} apachectl restart" 
+0

在我的情況下,我需要使用sudo。 – pl1nk

+0

如果你需要使用sudo,怎麼樣使用:'run「#{sudo} apachectl restart'' - [sudo ** DSL動作調用](https://github.com/capistrano/capistrano/wiki/ 2.X線DSL-行動,調用,須藤)? –

+0

我在哪裏可以更改這個選項(sudo)的部署操作:檢查**不是我指定的**(請參閱我的問題)? – pl1nk

2

我也跑進這個問題,事實證明,capistrano正在創建除共享文件夾之外的<user>組下的所有文件夾。 SSH到你的服務器上並做一個長列表ls -l。如果你看到 - root - root - 共享文件夾,你只需要更新文件夾的權限:

sudo chown <user> shared 
sudo chgrp <user> shared