Elastic Beanstalk 预部署 Laravel 节点错误
Posted
技术标签:
【中文标题】Elastic Beanstalk 预部署 Laravel 节点错误【英文标题】:Elastic Beanstalk pre-deploy Laravel Node error 【发布时间】:2021-12-07 06:02:33 【问题描述】:在我使用 GitHub 包之一时,在 Laravel 上部署 Elasticbean 茎的问题
https://github.com/rennokki/laravel-aws-eb
我在我的根项目中删除了 .ebextensions 和 .platform 文件夹。
当我部署并遇到错误时,我决定检查日志报告,它说这是由于 node.js
2021-10-20 10:48:34,072 [INFO] -----------------------Starting build-----------------------
2021-10-20 10:48:34,079 [INFO] Running configSets: Infra-EmbeddedPostBuild
2021-10-20 10:48:34,082 [INFO] Running configSet Infra-EmbeddedPostBuild
2021-10-20 10:48:34,086 [INFO] Running config postbuild_0_Ergnation_rowing
2021-10-20 10:48:34,103 [INFO] Command 00_copy_env_file succeeded
2021-10-20 10:48:36,241 [INFO] Command 01_install_composer_dependencies succeeded
2021-10-20 10:48:36,263 [ERROR] Command 02_install_node_dependencies (sudo npm install) failed
2021-10-20 10:48:36,263 [ERROR] Error encountered during build of postbuild_0_Ergnation_rowing: Command 02_install_node_dependencies failed
Traceback (most recent call last):
File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 573, in run_config
CloudFormationCarpenter(config, self._auth_config).build(worklog)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 273, in build
self._config.commands)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/command_tool.py", line 127, in apply
raise ToolError(u"Command %s failed" % name)
cfnbootstrap.construction_errors.ToolError: Command 02_install_node_dependencies failed
2021-10-20 10:48:36,266 [ERROR] -----------------------BUILD FAILED!------------------------
2021-10-20 10:48:36,266 [ERROR] Unhandled exception during build: Command 02_install_node_dependencies failed
Traceback (most recent call last):
File "/opt/aws/bin/cfn-init", line 176, in <module>
worklog.build(metadata, configSets)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 135, in build
Contractor(metadata).build(configSets, self)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 561, in build
self.run_config(config, worklog)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 573, in run_config
CloudFormationCarpenter(config, self._auth_config).build(worklog)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 273, in build
self._config.commands)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/command_tool.py", line 127, in apply
raise ToolError(u"Command %s failed" % name)
cfnbootstrap.construction_errors.ToolError: Command 02_install_node_dependencies failed
我决定检查文件,这个文件显示
02_install_node_dependencies:
command: "sudo npm install"
cwd: "/var/app/staging"
看来安装node.js的方法是正确的
我已尝试“Sudo yum install -y nodejs
”并再次部署,但控制台日志一直显示错误sudo npm install
,即使我删除它仍然显示错误 npm 问题
02_install_node_dependencies (sudo npm install) failed
2021-10-20 11:48:45,727 [ERROR] Error encountered during build of postbuild_0_Ergnation_rowing: Command 02_install_node_dependencies failed
Traceback (most recent call last):
【问题讨论】:
【参考方案1】:如果您使用的是 Amazon Linux 2,我建议您使用 Hooks,因为您将拥有更多控制权。
根据docs:
在 Amazon Linux 2 平台上,我们建议使用 Buildfile、Procfile、 和平台挂钩来配置和运行您的自定义代码 实例配置期间的环境实例。
您仍然可以在 .ebextensions 中使用命令和容器命令 配置文件,但它们并不容易使用。为了 例如,在 YAML 文件中编写命令脚本可能具有挑战性 从语法的角度来看
在这种情况下,在您的项目中创建以下文件
.platform/hooks/prebuild/install_node_js.sh
这是文件的内容:
#!/bin/sh
# Install Node alongside with the paired NPM release
if [[ ! "$(node --version)" =~ "v12" ]]; then
sudo yum remove -y nodejs npm
sudo rm -fr /var/cache/yum/*
sudo yum clean all
curl --silent --location https://rpm.nodesource.com/setup_12.x | sudo bash -
sudo yum install nodejs -y
fi
就是这样,部署你的代码,你应该让 Node 启动并运行。
【讨论】:
以上是关于Elastic Beanstalk 预部署 Laravel 节点错误的主要内容,如果未能解决你的问题,请参考以下文章
在添加/删除 ENV 变量时,Elastic Beanstalk 导致我的 Rails 6 应用程序预编译资产中断
在 AWS Elastic Beanstalk 上使用 Docker 预编译资产
如何在Elastic Beanstalk容器中提供Rails应用程序的webpacked资产?
带有 Puma 和 Nginx 服务页面的 Elastic Beanstalk 上预编译资产的 Rails 4 应用程序以及旧资产链接
Python 3.4 Docker 容器中的 AWS Elastic Beanstalk container_commands