使用Capistrano部署Laravel 4。 `composer install`期间被拒绝

时间:2014-02-07 05:07:21

标签: permissions laravel capistrano composer-php

我正在尝试使用Capistrano部署我的Laravel 4网站,当我尝试:

run "cd #{current_path} && composer install --no-dev"` 

在我的deploy.rb中我收到此错误:

sh: 1: composer: Permission denied

以后几行:

failed: "sh -c 'cd /var/www/public/mysite/current && composer install --no-dev'" on root@my.ip.add.ress

如果我注释掉上面的run命令,那么Capistrano就能够成功完成部署。但是,我必须从我网站的composer install版本目录手动运行current,以便让我网站上的所有内容正常运行。

我尝试使用-d标志运行我的部署以逐步完成部署,我已尝试修复权限,以防它们不正确,但似乎都没有解决此错误。此外,我已经全神贯注地寻找可能的答案,并且找不到其他任何有此特定问题的人。

所以,我有两个问题:

  1. 有什么想法解决这个问题吗?
  2. 每次部署时运行composer install似乎只是创造了超出必要的工作量。是否会更好:

    a)在每次部署时不要忽略vendor文件夹in my local repository therefore removing the need to run composer install`?或者,

    b)在根目录中运行composer install(与currentreleases处于同一目录级别),然后在{{1}中将路径更改为vendor/autoload.php目录指向这个新目录,所以我再也不需要再次运行bootstrap了?

1 个答案:

答案 0 :(得分:0)

我明白了。而不是:

run "cd #{current_path} && composer install --no-dev"

我正在这样做:

run "cd #{releases_path}/#{release_name} && php /usr/local/bin/composer/composer.phar install --no-dev"

(我将#{current_path}更改为#{releases_path}/#{release_name},因为Capistrano在rm -f /var/www/public/myapp/current命令之后正在执行composer install