【问题标题】:Deploying Laravel 4 with Capistrano. Permission denied during `composer install`使用 Capistrano 部署 Laravel 4。在“作曲家安装”期间权限被拒绝
【发布时间】:2014-02-07 05:07:21
【问题描述】:

我正在尝试使用 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 标志运行我的部署以逐步完成部署,我尝试修复权限以防它们不正确,但似乎都无法修复此错误。另外,我到处寻找可能的答案,但找不到其他人遇到这个特定问题。

那么,我有两个问题:

  1. 有解决此问题的想法吗?
  2. 似乎每次部署时都运行composer install 只是创建了不必要的工作。是否会更好:

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

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

【问题讨论】:

    标签: permissions laravel capistrano composer-php


    【解决方案1】:

    我想通了。而不是:

    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

    【讨论】:

      猜你喜欢
      • 2019-11-18
      • 2015-11-08
      • 2014-01-03
      • 1970-01-01
      • 2014-04-18
      • 1970-01-01
      • 2016-04-25
      • 2021-08-10
      • 1970-01-01
      相关资源
      最近更新 更多