使用弹性 beantalk 部署 PHP 应用程序
Posted
技术标签:
【中文标题】使用弹性 beantalk 部署 PHP 应用程序【英文标题】:PHP application deployment with elastic beanstalk 【发布时间】:2016-01-11 08:59:09 【问题描述】:我有一个 Laravel 5.1 php 应用程序,它使用 composer 作为 PHP 依赖管理器和 npm 作为 javascript 依赖管理器,到目前为止一切都很好。
我想要这个应用程序的实时版本,我想要使用 ElasticBeanstalk 自动部署,我创建了一个如下所示的配置文件:
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】:您应该能够为此使用环境配置选项,而不是自己编写 bash 文件:
Customising software on linux servers
这将允许您执行以下操作:
packages:
yum:
nodejs: []
npm: []
但是:
Elastic Beanstalk 目前支持以下包管理器:yum、rubygems、python 和 rpm
所以你仍然需要手动执行npm install gulp
, ...
【讨论】:
以上是关于使用弹性 beantalk 部署 PHP 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
使用弹性 beantalk 问题部署 Asp.net Web 应用程序
在弹性 beantalk 部署上的 ec2 微型实例上创建交换文件/驱动器
使用弹性 beantalk 部署的 Rails 应用程序响应“无法访问站点”
在 AWS 弹性 beantalk 上部署 Flask 应用程序