AWS Elasticbeanstalk 在 PHP 实例类型中安装节点和 npm

Posted

技术标签:

【中文标题】AWS Elasticbeanstalk 在 PHP 实例类型中安装节点和 npm【英文标题】:AWS Elasticbeanstalk install node and npm in PHP instance type 【发布时间】:2015-12-22 07:46:10 【问题描述】:

我有一个使用 gulp 构建生产文件的 php 应用程序,我正在使用 elasticbeanstalk 将我的应用程序部署到 AWS EC2 实例,我想在部署期间安装 node 和 npm 以运行 gulp,我目前的配置是:

.ebextensions 文件夹内的01-installPackages.config

commands:
  01updateComposer:
    command: export COMPOSER_HOME=/root && /usr/bin/composer.phar self-update
  02installNode:
    command:
      # run this command from /tmp directory
      cwd: /tmp
      # don't run the command if node is already installed (file /usr/bin/node exists)
      test: '[ ! -f /usr/bin/node ] && echo "node not installed"'
      # install from epel repository
      # flag -y for no-interaction installation
      command: 'sudo yum install -y nodejs --enablerepo=epel'

节点命令失败,但如果我 ssh 进入并运行该命令,则节点已安装

知道我的配置有什么问题吗?

谢谢!

【问题讨论】:

嘿@matteo,你有解决方案吗?可以分享吗? 很遗憾没有 【参考方案1】:

您应该能够为此使用environment configuration options,而不是自己编写 bash 文件。您可以使用 packages 密钥下载和安装预打包的应用程序和组件。

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

packages: 
  yum:
    nodejs: [] 
    npm: []

您需要的软件包将被安装。

注意:这在 Amazon Linux 2 中已被弃用。

【讨论】:

感谢您的回答,我最初尝试过,但是我在使用 sudo 时遇到了一些问题,并且执行速度甚至比创建文件还要慢 这引发了错误,告诉我这些软件包无法通过 yum 获得。 @JamesParker 此处回复相同。有什么解决办法吗?【参考方案2】:

对此的当前答案如下:

commands:
  01enable_epel:
    command: sudo amazon-linux-extras install epel
  02npm_install:
    command: sudo yum -y --enablerepo=epel install nodejs npm

使用记录在案的附加库 in AWS docs

【讨论】:

在 Amazon AMI Linux 2 上的工作就像一个魅力

以上是关于AWS Elasticbeanstalk 在 PHP 实例类型中安装节点和 npm的主要内容,如果未能解决你的问题,请参考以下文章

AWS::ElasticBeanstalk::ConfigurationTemplate 的 AWS CloudFormation 模板失败

在 AWS 上使用 ElastiCache 和 ElasticBeanstalk 配置 Redis

从在 ElasticBeanstalk 中运行的 Flask 应用程序使用 AWS

如何在 AWS elasticbeanstalk 上部署 symfony 3 项目

强制 https aws elasticbeanstalk

如何在 Elasticbeanstalk 环境中运行的 docker 容器中承担 AWS 角色?