我有一個failed: "sh -c 'cd /var/www
錯誤。然後,通過在deploy.rb加入以下固定它...爲什麼我在獲得權限時拒絕在capistrano生成的文件上部署錯誤?
set :default_environment, {
'PATH' => "/var/lib/gems/1.9.1/bin:$PATH"
}
現在我得到這個新的錯誤。
** [out :: ip.address] Rails Error: Unable to access log file. Please ensure that /var/www/releases/20111208152807/log/production.log exists and is chmod 0666. The log level has been raised to WARN and the output directed to STDERR until the problem is fixed.
** [out :: ip.address] mkdir -p /var/www/releases/20111208152807/public/assets
** [out :: ip.address] mkdir -p /var/www/releases/20111208152807/public/assets
** [out :: ip.address] mkdir -p /var/www/releases/20111208152807/public/assets
** [out :: ip.address]
** [out :: ip.address] mkdir -p /var/www/releases/20111208152807/public/assets
** [out :: ip.address] mkdir -p /var/www/releases/20111208152807/public/assets
** [out :: ip.address]
** [out :: ip.address] rake aborted!
** [out :: ip.address]
** [out :: ip.address] Permission denied - /var/www/releases/20111208152807/public/assets/manifest.yml
所以我用ls -lha檢查了manifest.yml和production.log的權限,而且它們是由root擁有的。
capistrano 部署由擁有/ var/www目錄的linux用戶(不是root用戶)完成。我猜這是因爲無論什麼命令創建這些文件都讓他們擁有所有權。
CLARIFICATION: 我知道,可能只是使用根部署將解決問題,但我不想使用root。
你在使用什麼Web服務器,根本不應該擁有這些文件。 –
這就是我的想法,那些由部署創建的文件,而不是我。我正在使用Apache。 – leonel
好吧,讓我們看看這裏,試試'ps aux | grep apache'並查看Apache正在運行的用戶。還有,你需要將日誌文件的權限設置爲0666,就像消息所要求的那樣? –