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

时间:2015-10-13 14:38:39

标签: php deployment laravel-5 elastic-beanstalk amazon-elastic-beanstalk

我有一个Laravel 5.1 PHP应用程序,它使用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"一切都会上线!

1 个答案:

答案 0 :(得分:0)

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

Customising software on linux servers

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

CREATE VIEW MYVIEW 
  AS (SELECT DEC(ROW_NUMBER() OVER(),7,0) AS numb
      ...
     )

然而:

  

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

所以你仍然需要手动执行packages: yum: nodejs: [] npm: [] ,...