Elastic Beanstalk CMD-AppDeploy活动失败(Composer问题???)

时间:2014-12-12 17:26:40

标签: php amazon-web-services composer-php elastic-beanstalk amazon-elastic-beanstalk

我安装了php应用程序(Laravel)和eb CLI。在当地,一切都很好。

初始应用程序按预期工作(上传为archive.zip on created)。

当我使用以下命令将我的仓库推送到我的应用程序时

git aws.push

失败了。日志说:

[2014-12-12T16:53:38.652Z] INFO  [28264] - [CMD-AppDeploy/AppDeployStage0/AppDeployPreHook/10_composer_install.sh] : Activity failed.
[2014-12-12T16:53:38.652Z] INFO  [28264] - [CMD-AppDeploy/AppDeployStage0/AppDeployPreHook] : Activity failed.
[2014-12-12T16:53:38.652Z] INFO  [28264] - [CMD-AppDeploy/AppDeployStage0] : Activity failed.
[2014-12-12T16:53:38.653Z] INFO  [28264] - [CMD-AppDeploy] : Completed activity. Result:
Command CMD-AppDeploy failed.

和这个

[2014-12-12T16:53:38.653Z] ERROR [28264] : Command CMD-AppDeploy failed!
[2014-12-12T16:53:38.654Z] INFO  [28264] : Command processor returning results: 
{"status":"FAILURE","api_version":"1.0","truncated":"true","results":
[{"status":"FAILURE","msg":"[CMD-AppDeploy/AppDeployStage0/AppDeployPreHook/10_composer_install.sh] 
command failed with error code 1:
/opt/elasticbeanstalk/hooks/appdeploy/pre/10_composer_install.sh\n++ /opt/elasticbeanstalk/bin/get-config container -k app_staging_dir\n+ EB_APP_STAGING_DIR=/var/app/ondeck\n+ 
cd /var/app/ondeck\n+ '[' -f composer.json ']'\n+ 
export COMPOSER_HOME=/root\n+ COMPOSER_HOME=/root\n+ '[' -d vendor ']'\n++ /opt/elasticbeanstalk/bin/get-config optionsettings -n aws:elasticbeanstalk:container:php:phpini -o composer_options\n+ PHP_COMPOSER_OPTIONS=\n+ 
echo 'Found composer.json file. Attempting to install vendors.'\nFound composer.json file.   
Attempting to install vendors.\n+ composer.phar install --no-ansi --no-interaction\nLoading composer repositories with package information\nInstalling dependencies (including require-dev) from lock file\n  - Installing symfony/finder (v2.5.8)\n ","returncode":1,"events":[]}]}

我当时认为这是一个Composer问题,我已经进入实例并在机器内完成了一个作曲家更新,但工作正常。

我已从.gitignore

中删除了composer.lock文件

我无法在网上找到任何相似内容,所以我假设我正在做某事/错过了一些非常明显的事情。

3 个答案:

答案 0 :(得分:5)

上周我遇到了与Symfony部署相同的问题。由于Symfony prod / dev环境存在问题,安装后脚本会以某种方式失败。

我的临时修复是禁用后安装脚本并在以后设置正确的SYMFONY_ENV时运行它们。

在我的.elasticbeanstalk/application.config

option_settings:
  - namespace: aws:elasticbeanstalk:container:php:phpini
    option_name: composer_options
    value:  --no-dev --optimize-autoloader --no-scripts

container_commands:
  21_composer_postinstall:
    command: composer.phar run-script post-install-cmd

我的案例中AppDeployPreHook/10_composer_install.sh失败的实际错误是在其他一个日志文件中,因此您可能需要深入挖掘。

答案 1 :(得分:5)

我设法解决了我遇到的问题。我有一些失败的私人回购,因为我没有在bitbucket中设置部署密钥,因此无法下载它们。将以下内容添加到我的配置文件中解决了这个问题。

files:
  "/root/.ssh/bitbucket_deployment_key":
     mode: "000600"
     owner: root
     group: root
     content: |
       -----BEGIN RSA PRIVATE KEY-----
       PUT YOUR PRIVATE KEY HERE
       -----END RSA PRIVATE KEY-----
  "/root/.ssh/config":
       mode: "000600"
       owner: root
       group: root
       content: |
         Host bitbucket.org
            StrictHostKeyChecking no
            IdentityFile /root/.ssh/bitbucket_deployment_key
            UserKnownHostsFile /dev/null

来自https://github.com/modern-media/wordpress-on-beanstalk

我不确定这是否能解决问题。错误消息非常通用。我不得不深入研究完整的EB日志到达我的底部。

其他 我还发现有时作曲家可能会失败,因为它在尝试下载回购时会得到404。虽然composer.lock文件应该可靠,但我总是很奇怪。这是一个简单的解决方案。只需删除您的.lock文件并再次运行composer update即可在.lock文件中获取正确的repo网址。

答案 2 :(得分:0)

在aws beantalk上设置wordpress时,我遇到了同样的问题。我的问题是,我在Windows机器上本地压缩了文件,然后上传了始终无法部署的文件。但是,将文件压缩在服务器上然后下载并使用该zip作为将来的部署应用程序总是可行的。因此,将文件从/ var / app / current /复制到/ home / ec2-user /文件夹,然后从那里压缩文件,下载该zip文件,并将其作为软件包使用。