2014-06-26 34 views
1

我正在通過cap staging deploy首次部署到計算機。截至Cap3,deploy:setup不再需要。然而,奇怪的是,我得到的mkdir權限錯誤:Capistrano 3首次部署失敗,出現/ var/www/XXX權限錯誤

INFO[cb348f12] Running /usr/bin/env mkdir -pv /var/www/myapp/shared /var/www/myapp/releases on ec2-xx-xx-xx-xx.us-west-2.compute.amazonaws.com 
DEBUG[cb348f12] Command: /usr/bin/env mkdir -pv /var/www/myapp/shared /var/www/myapp/releases 
DEBUG[cb348f12] mkdir: 
DEBUG[cb348f12] cannot create directory ‘/var/www’ 
DEBUG[cb348f12] : Permission denied 
DEBUG[cb348f12]  
DEBUG[cb348f12] mkdir: 
DEBUG[cb348f12] cannot create directory ‘/var/www’ 
DEBUG[cb348f12] : Permission denied 
DEBUG[cb348f12]  
cap aborted! 
SSHKit::Runner::ExecuteError: Exception while executing on host ec2-xx-xx-xx-xx.us-west-2.compute.amazonaws.com: mkdir exit status: 1 

當然,我能去的創建和chmod該目錄自己,但是這不是問題的關鍵。第3章本應該照顧自己。我很困惑,爲什麼它不這樣做。我還應該注意到,我之前用另一臺機器成功完成了同樣的設置(儘管這是「生產」環境)。

下面是我的一些deploy.rb基本設置:

set :application, "myapp" 
set :user, 'ec2-user' 

回答

0

而不是創建以下目錄結構:/var/www/myapp/shared/var/www/myapp/releases 嘗試:/var/www/myapp/releases

+1

這只是我手動編輯日誌的工件 – Yevgeniy

0

編輯:重讀你的問題,我發現,您已經知道如何在服務器上創建文件夾並設置權限。

Cap3 is supposed to take care of that itself. I'm confused why it doesn't do that

沒有。如果提供給Cap3的用戶沒有創建文件夾的權限,則Cap3不能自動在服務器上創建文件夾。這裏只有unix權限沒有魔法。

在您的情況下,您提供的用戶ec2-user無權在/var中創建導致錯誤的文件夾。


原來的答覆

檢查是否您的服務器上存在/var/www文件夾。如果沒有,則創建該文件夾並將其所有權設置爲ec2-user,以便Capistrano可以在部署期間根據需要創建任何其他文件夾。

sudo mkdir -p /var/www sudo chown ec2-user:ec2-user /var/www

使用上面的命令運行,嘗試用Capistrano的部署一次。權限錯誤現在應該消失。

+0

ec2-user可以在sudo下運行。 afaik(或記住),cap3承諾爲mkdir應用sudo(cap2沒有這樣做) – Yevgeniy

+0

「本主題的第二部分是我們的部署用戶需要被授權在服務器上的部署目錄中工作。意味着我們需要能夠工作,理想情況下無需使用sudo(默認的Capistrano配方都無法使用sudo),或者對於您的自定義配方,您需要配置無密碼sudo。配置sudo以使某些用戶可以訪問命令在某些情況下超出了本文的範圍「 from http://capistranorb.com/documentation/getting-started/authentication-and-authorisation/澄清了我的觀點。 – shankardevy

+0

我確實有用於創建目錄的無密碼sudo – Yevgeniy