我正在尝试使用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能够成功完成部署。但是,然后我必须从我网站的current
发行目录中手动运行composer install
,以使我的网站上的所有内容正常工作。
我尝试使用-d
标志运行部署以逐步进行部署,如果这些权限不正确,我尝试修复权限,但似乎都没有解决此错误。另外,我全部寻找了一个可能的答案,找不到这个特定问题的其他人。
所以,我有两个问题:
- 对此有任何解决的想法?
似乎每次部署时都运行
composer install
,只是创建比必要的更多的工作。最好是:a)不忽略每个部署上的
vendor
文件夹in my local repository therefore removing the need to run
COMENTEMTART?或,b)在根目录中运行
composer install
(在与current
和releases
相同的目录级别上),然后更改bootstrap
目录中vendor/autoload.php
的路径以指向此新目录,因此我不需要再次运行composer install
?
我弄清楚了。而不是:
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在composer install
命令之后执行rm -f /var/www/public/myapp/current
。