使用弹性beanstalk部署PHP应用程序

使用弹性beanstalk部署PHP应用程序,php,deployment,laravel-5,amazon-elastic-beanstalk,Php,Deployment,Laravel 5,Amazon Elastic Beanstalk,我有一个Laravel5.1PHP应用程序,它使用composer作为PHP依赖项管理器,使用npm作为JavaScript依赖项管理器,到目前为止还不错 我想要此应用程序的实时版本,我想要使用ElasticBeanstalk进行自动部署,我创建了一个confi文件,如下所示: files: /opt/elasticbeanstalk/hooks/appdeploy/pre/11_build.sh: group: root mode: "000755" owner:

我有一个Laravel5.1PHP应用程序,它使用composer作为PHP依赖项管理器,使用npm作为JavaScript依赖项管理器,到目前为止还不错

我想要此应用程序的实时版本,我想要使用ElasticBeanstalk进行自动部署,我创建了一个confi文件,如下所示:

files:
  /opt/elasticbeanstalk/hooks/appdeploy/pre/11_build.sh:
    group: root
    mode: "000755"
    owner: root
    content: |
        #!/usr/bin/env bash
        set -xe
        . /opt/elasticbeanstalk/support/envvars
        EB_APP_STAGING_DIR=$(/opt/elasticbeanstalk/bin/get-config  container -k app_staging_dir)
        cd $EB_APP_STAGING_DIR
        php artisan migrate --env="local"
        yum -y --enablerepo=epel install nodejs npm
        npm install -g gulp
        npm install 
        gulp --production 

    option_settings:
      -
        namespace: "aws:elasticbeanstalk:command"
        option_name: Timeout
        value: 1600
这套设备有时可以工作,有时需要30多分钟才能完成和安装 elasticbeanstalk触发超时错误

下面的代码块出现的原因是

yum -y --enablerepo=epel install nodejs npm
npm install -g gulp
因为如果应用程序需要扩展到多个服务器,则节点可能 未安装,这将为我安装节点

现在我的问题是:我做得对吗?这是解决自动部署问题的正确方法吗? 有时部署需要30分钟以上才能执行,这正常吗?我可以改进部署吗?
我非常喜欢键入“eb deploy”,一切都将上线

您应该能够为此使用环境配置选项,而不是自己编写bash文件:

这将允许您执行以下操作:

packages: 
  yum:
    nodejs: [] 
    npm: []
然而:

Elastic Beanstalk目前支持以下包管理器:yum、rubygems、python和rpm

因此,您仍然需要执行
npm安装gulp
。。。人工