在elasticbeanstalk上安装npm canvas - npm安装错误
问题描述:
我试图通过Elasticbeanstalk部署在EC2上运行的node.js服务器。 我遇到的问题是重建画布npm模块。 命令'[email protected]安装:node-gyp rebuild
'如下失败:在elasticbeanstalk上安装npm canvas - npm安装错误
> [email protected] install /tmp/deployment/application/node_modules/canvas
> node-gyp rebuild
gyp ERR! clean error
gyp ERR! stack Error: EACCES, unlink 'build'
gyp ERR! System Linux 3.10.35-43.137.amzn1.x86_64
gyp ERR! command "node" "/opt/elasticbeanstalk/node-install/node-v0.10.26-linux-x64/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /tmp/deployment/application/node_modules/canvas
gyp ERR! node -v v0.10.26
gyp ERR! node-gyp -v v0.12.2
gyp ERR! not ok
npm ERR! [email protected] install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is most likely a problem with the canvas package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node-gyp rebuild
npm ERR! You can get their info via:
npm ERR! npm owner ls canvas
npm ERR! There is likely additional logging output above.
这个问题似乎是该npm install canvas
命令没有被具有适当特权运行。如果我手动ssh进入服务器并运行'sudo npm install canvas',一切正常。这告诉我,所有适当的依赖关系安装正常(我遵循这些指示:https://github.com/Automattic/node-canvas/wiki/Installation---Amazon-Linux-AMI-(EC2))。这只是导致悲伤的elasticbeanstalk部署。
我试图通过添加命令到config文件中.ebextensions使部署过程中的root访问权限如下:
option_settings:
- namespace: aws:elasticbeanstalk:container:nodejs:staticfiles
option_name: /public
value: /public
- option_name: NODE_ENV
value: production
commands:
01_enable_rootaccess:
command: echo Defaults:root \!requiretty >> /etc/sudoers
02_no-cert:
command: sudo /opt/elasticbeanstalk/node-install/node-v0.10.10-linux-x64/bin/npm config set ca ""
,但它似乎没有任何区别。
我在做什么错,我怎样才能让画布在eb部署期间很好地安装?
答
您是否拥有画布的所有依赖关系?为了它为我工作,我必须安装以下内容:cairo
,cairo-devel
,libjpeg-devel
,giflib-devel
,libpng-devel
(应该已经安装)。
可以确保所有的这些都是通过添加下列之一安装在您的.ebextensions
:
packages:
yum:
cairo: []
cairo-devel: []
libjpeg-devel: []
giflib-devel: []
libpng-devel: []
我想画布可能会尝试安装的东西它没有,它没有权限对于。
试试看,让我知道它是如何工作的。
这应该放在:/.ebextensions/node.config - 正确吗? – 2017-10-24 09:17:06