如何通过部署 Node.js AWS Beanstalk 解决 /tmp/.config 中的权限问题?

Posted

技术标签:

【中文标题】如何通过部署 Node.js AWS Beanstalk 解决 /tmp/.config 中的权限问题?【英文标题】:how to fix permission problem in /tmp/.config by deployment Node.js AWS Beanstalk? 【发布时间】:2020-08-17 06:31:58 【问题描述】:

我正在尝试将我的 React 应用程序部署到 Node.js AWS Beanstalk 不幸的是一直在 /var/log/nodejs/nodejs.log:

ℹ 「wds」: Project is running at http://172.31.28.128/
ℹ 「wds」: webpack output is served from 
ℹ 「wds」: Content not from webpack is served from /var/app/current/public
ℹ 「wds」: 404s will fallback to /
Starting the development server...


┌──────────────────────────────────────────────────┐
│             npm update check failed              │
│       Try running with sudo or get access        │
│       to the local update config store via       │
│ sudo chown -R $USER:$(id -gn $USER) /tmp/.config │
└──────────────────────────────────────────────────┘

我已经尝试了所有可能的解决方案,包括:

通过 .ebextensions 中的配置更改权限(检查了许多变体) .npmrc 文件 unsafe-perm=true 在应用程序的根文件夹中(也添加到 src 只是为了检查) 环境属性中的 NPM_CONFIG_UNSAFE_PERM=true 删除 package-lock.json 然后 npm I 将实例更改为更强大的,目前为 t2.small

有趣的事实是 /tmp/.config 当前拥有足够的权限,但仍然失败

drwxrwxrwx  3 ec2-user ec2-user  4096 May  2 12:05 .config

在我通过 eb deploy 部署的文件下方(我从 s3 下载)

wrmac:app-388c-200502_153210 wojtek$ ls -la
total 1600
drwxr-xr-x@  12 wojtek  staff     384 May  2 20:57 .
drwx------@ 294 wojtek  staff    9408 May  2 20:57 ..
-rw-r--r--@   1 wojtek  staff    6148 May  2 20:57 .DS_Store
drwxr-xr-x@   4 wojtek  staff     128 May  2 15:22 .ebextensions
-rw-r--r--@   1 wojtek  staff     407 May  1 15:26 .gitignore
-rw-r--r--@   1 wojtek  staff      17 May  2 14:46 .npmrc
-rw-r--r--@   1 wojtek  staff  121322 Sep 29  2018 README.md
-rw-r--r--@   1 wojtek  staff     296 Sep 29  2018 frontend.iml
-rw-r--r--@   1 wojtek  staff  667957 May  2 15:31 package-lock.json
-rw-r--r--@   1 wojtek  staff    1035 May  1 22:14 package.json
drwxr-xr-x@  11 wojtek  staff     352 Oct 17  2019 public
drwxr-xr-x@  13 wojtek  staff     416 May  2 14:46 src
wrmac:app-388c-200502_153210 wojtek$ ls -la .ebextensions/
total 16
drwxr-xr-x@  4 wojtek  staff   128 May  2 15:22 .
drwxr-xr-x@ 12 wojtek  staff   384 May  2 20:57 ..
-rw-r--r--@  1 wojtek  staff   212 May  2 14:45 00_change_npm_permissions.config
-rw-r--r--@  1 wojtek  staff  3856 Apr 25 15:40 https-redirect-nodejs.config

如您所见,我没有 node_modules 对某些人来说是什么情况。 在 .ebignore 我也排除了

node_modules/
.idea/
.git/

(我也尝试过排除 .DS_Store、.gitignore 和 frontend.iml)

我还有另外两个环境属性:NODE_ENV 和 NPM_CONFIG_PRODUCTION,都是真的。

具体来说我正在使用:

Platform branch Node.js running on 64bit Amazon Linux Current platform
version 4.14.1 Current Node.js version 12.16.1

你有什么想法可以解决这个问题吗?

【问题讨论】:

【参考方案1】:

对于这个奇怪的 AWS 特定问题,似乎唯一的解决方案是购买他们的“商业”支持,成本 >100 美元,还有更便宜的“开发者”支持选项,但根据描述可能还不够。

最后我决定转向完全解决我的问题的 VPS(不同的托管服务提供商),另外它比 AWS 便宜几倍,我没有这种奇怪的 cpu 周期计数,价格很容易预测,可能很少有其他的好处。

【讨论】:

以上是关于如何通过部署 Node.js AWS Beanstalk 解决 /tmp/.config 中的权限问题?的主要内容,如果未能解决你的问题,请参考以下文章

在aws中部署node js的方法都有哪些?

如何从部署在 AWS Elastic beanstalk 上的 node.js express 应用程序获取客户端 IP?

Node.js AWS 部署错误:找不到模块

AWS 部署 NGINX 连接被拒绝用于 Node.JS 项目

我可以使用哪些 aws 服务来部署 node.js 应用程序?

Node.js 进程在 AWS Fargate 中的行为如何?