我正在尝试使用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
标志运行我的部署以逐步完成部署,我已尝试修复权限,以防它们不正确,但似乎都没有解决此错误。此外,我已经全神贯注地寻找可能的答案,并且找不到其他任何有此特定问题的人。
所以,我有两个问题:
每次部署时运行composer install
似乎只是创造了超出必要的工作量。是否会更好:
a)在每次部署时不要忽略vendor
文件夹in my local repository therefore removing the need to run
composer install`?或者,
b)在根目录中运行composer install
(与current
和releases
处于同一目录级别),然后在{{1}中将路径更改为vendor/autoload.php
目录指向这个新目录,所以我再也不需要再次运行bootstrap
了?
答案 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
。