AWS-ElasticBeanstalk-PHP平台-运行NPM命令

时间:2019-10-17 18:03:42

标签: php node.js amazon-web-services deployment amazon-elastic-beanstalk

目标:

  1. 想在同一ec2上运行wordpress和node应用。
  2. 使用ElasticBeanstalk部署wordpress和node应用。
  3. 选择的ElasticBeanstalk平台是PHP
  4. 我在根文件夹中有两个文件夹-WordPressSite和NodeApp。
  5. WordPress站点正在按预期运行默认端口,因为选择的EB平台是PHP
  6. NodeApp不在3000端口上运行。

尝试了以下操作

  1. 书面命令和容器命令将它们放在.ebextensions中-它将安装,节点,npm并运行节点应用程序
  2. 检查下面的ebextension配置文件。
commands:
    01_node_download:
        cwd: /tmp
        test: '[ ! -f /usr/bin/node ] && echo "node not installed"'
        command: 'sudo curl --silent --location https://rpm.nodesource.com/setup_10.x | sudo bash -'
    02_node_install:
        cwd: /tmp
        test: '[ ! -f /usr/bin/node ] && echo "node not installed"'
        command: 'sudo yum -y install nodejs'
    03_create_post_dir:
        command: "mkdir /opt/elasticbeanstalk/hooks/appdeploy/post"
        ignoreErrors: true
files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/npm_run_job.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      cd /var/app/current/NodeApp
      npm run start
container_commands:
    03_npm_install:
        cwd: /var/app/ondeck/NodeApp
        command: 'sudo npm install'
    04_npm_config_set:
        cwd: /var/app/ondeck/NodeApp
        command: 'npm config set scripts-prepend-node-path auto'

配置文件说明

  1. 我们已经编写了安装节点的命令。
  2. 创建了一个文件夹以供后期部署执行(如果不存在)。
  3. 书面文件:脚本,其中包含要在程序包部署后运行的代码,其中包含npm run start(一般的节点应用程序启动脚本)
  4. 用于安装节点模块并设置少量标志的容器命令。

结果

  1. 当我们进行eb部署时,eb状态永远不会结束进程-因为在部署时会在php平台上执行“ npm run start”。部署运行了很长时间,不得不手动中止操作,没有日志记录为什么它不起作用。
  2. 试图在不带文件的情况下部署代码:部署脚本后,部署工作正常,所有节点模块和其他命令均无问题地执行。手动ssh到ec2并在节点应用程序文件夹中执行命令“ npm run start”,这不会出现任何错误并运行。 3000上的节点应用。
  3. 当我们尝试在部署后或命令或container_commands上通过ebextensions运行相同的命令时,eb部署过程长时间没有响应-节点应用程序正在运行,但elasticbeanstalk部署没有响应吗?

所以问题是我们可以在Elasticbeanstalk php平台上通过eb命令运行node app吗?

0 个答案:

没有答案