1

我在 AWS EC2 实例(运行 Amazon Linux 2)上运行 Meteor 应用程序( OHIF的修改版本)。t2.medium

尝试使用流星启动应用程序或在流星中运行任何命令时,我看到以下错误。基于其他类似问题,我尝试了许多不同的方法,主要使用 chown 将所有指示文件夹的所有权重新分配给ec2-user,但无论我尝试什么,我都会不断收到此EACCES: permission denied错误。

[ec2-user@ip-10-1-2-35 APPFolder]$ meteor npm install
/home/ec2-user/.meteor/packages/meteor-tool/.1.12.0.13oys96.0sq8++os.linux.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.linux.x86_64/tools/cli/dev-bundle.js:120
         throw e;
         ^
 
 Error: EACCES: permission denied, stat
 '/Cansrdata/cansrohif/OHIFViewer/.meteor/local/dev_bundle'
     at Object.statSync (fs.js:1016:3)
     at statOrNull (/home/ec2-user/.meteor/packages/meteor-tool/.1.12.0.13oys96.0sq8++os.linux.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.linux.x86_64/tools/cli/dev-bundle.js:117:21)
     at getDevBundleDir (/home/ec2-user/.meteor/packages/meteor-tool/.1.12.0.13oys96.0sq8++os.linux.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.linux.x86_64/tools/cli/dev-bundle.js:37:25)
     at Object.<anonymous> (/home/ec2-user/.meteor/packages/meteor-tool/.1.12.0.13oys96.0sq8++os.linux.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.linux.x86_64/tools/cli/dev-bundle.js:177:20)
     at Object.<anonymous> (/home/ec2-user/.meteor/packages/meteor-tool/.1.12.0.13oys96.0sq8++os.linux.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.linux.x86_64/tools/cli/dev-bundle.js:180:3)
     at Module._compile (internal/modules/cjs/loader.js:1137:30)
     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
     at Module.load (internal/modules/cjs/loader.js:985:32)
     at Function.Module._load (internal/modules/cjs/loader.js:878:14)
     at Module.require (internal/modules/cjs/loader.js:1025:19) {   errno: -13,   syscall: 'stat',   code: 'EACCES',   path:
 '/app/.meteor/local/dev_bundle' }

无论我尝试什么,都会发生这种情况。我已使用 chown 和 chmod 函数重新分配错误日志中提到的所有目录和所有文件的权限,以及可能使用相对链接从这些目录指向的所有目录和文件。

在系统中(使用 ls -l),这些都显示为分配给默认ec2-user用户(我相信从很多谷歌搜索/GitHub/Stack Overflow 来看这是正确的状态,但我不确定)。我还重新安装了流星,看看这是否会改变权限,但没有成功。

该应用程序以前在此 EC2 实例上运行,所以我不确定为什么现在尝试它时它不起作用。

你知道为什么会发生这种情况,我能做些什么来解决它吗?

4

1 回答 1

0

我能够帮助克雷格解决这个特定问题,并且完成如下:

问题是流星以root用户运行(不推荐)

要解决此问题,请停止应用服务器,在本例中为 tomcat,使用以下命令:

sudo systemctl stop tomcat.service

可选步骤:出于安全原因,如果您愿意,请执行此操作

  • cp -a local/home/ec2-user/meteor_local_copy

转到您的项目文件夹:

  • cd myProject/.meteor/local
  • 警告:只删除/local目录(不是/.meteor/local):
  • 删除没有问题,会重新创建:
    • sudo rm -rf ../myProject/.meteor/local

现在更新你的流星:

meteor update

等到出现这样的消息:

“已安装。在特定...内运行'meteor update --release 2.0'”

在您的项目目录中运行:

meteor npm rebuild

再次启动应用服务器:

systemctl start tomcat.service

检查问题是否已解决!

于 2021-01-22T14:13:55.153 回答