2016-12-27 19 views
8

Elastic Beanstalkでデフォルトのクリーンなnode.jsアプリケーションをプロビジョニングしましたが、nodeディレクトリにnpm installを実行しようとしました。/var/app/current/deploy-dist )は、しかし、次の権限エラーがスローされます。エラー:EACCES:Elastic Beanstalkで `npm install`を実行したときにアクセス権が拒否されました

npm WARN locking Error: EACCES: permission denied, open '/tmp/.npm/_locks/staging-f212e8d64a01707f.lock' 
npm WARN locking  at Error (native) 
npm WARN locking /tmp/.npm/_locks/staging-f212e8d64a01707f.lock failed { Error: EACCES: permission denied, open '/tmp/.npm/_locks/staging-f212e8d64a01707f.lock' 
npm WARN locking  at Error (native) 
npm WARN locking errno: -13, 
npm WARN locking code: 'EACCES', 
npm WARN locking syscall: 'open', 
npm WARN locking path: '/tmp/.npm/_locks/staging-f212e8d64a01707f.lock' } 
npm WARN deploy-dist No description 
npm WARN deploy-dist No repository field. 
npm WARN deploy-dist No license field. 
npm ERR! Linux 4.4.35-33.55.amzn1.x86_64 
npm ERR! argv "/opt/elasticbeanstalk/node-install/node-v6.9.1-linux-x64/bin/node" "/opt/elasticbeanstalk/node-install/node-v6.9.1-linux-x64/bin/npm" "install" 
npm ERR! node v6.9.1 
npm ERR! npm v3.10.8 
npm ERR! path /tmp/.npm/_locks/staging-f212e8d64a01707f.lock 
npm ERR! code EACCES 
npm ERR! errno -13 
npm ERR! syscall open 

npm ERR! Error: EACCES: permission denied, open '/tmp/.npm/_locks/staging-f212e8d64a01707f.lock' 
npm ERR!  at Error (native) 
npm ERR! { Error: EACCES: permission denied, open '/tmp/.npm/_locks/staging-f212e8d64a01707f.lock' 
npm ERR!  at Error (native) 
npm ERR! errno: -13, 
npm ERR! code: 'EACCES', 
npm ERR! syscall: 'open', 
npm ERR! path: '/tmp/.npm/_locks/staging-f212e8d64a01707f.lock' } 
npm ERR! 
npm ERR! Please try running this command again as root/Administrator. 

npm ERR! Please include the following file with any support request: 
npm ERR!  /var/app/current/deploy-dist/npm-debug.log 

package.jsonだけである:明らかにsudoとnpm installを実行

{ 
    "dependencies": { 
    "node-fetch": "^1.3.3" 
    } 
} 

は動作しますが、として回避することが好ましいです。 解決策。

npm docs suggestionのディレクトリにNPM_CONFIG_PREFIXを設定しても、npm docs suggestionというディレクトリに設定すると、問題は解決しません。

私はこの問題は、私は箱から出して動作するように簡単なnpm installを予想通りこれは、混乱して

drwxr-xr-x 114 root root 4.0K Dec 27 17:04 .npm 

ある/tmp/.npmための不正なアクセス許可、である疑いがあります。

UPDATE:は、プロジェクトのディレクトリがすでにnode_modulesフォルダが含まれていないことを、それでもそれを削除し、npm installを実行すると、それを修正しません。

+0

誰かが持っているように見えますAWSフォーラムでもまったく同じ問題が発生しています:https://forums.aws.amazon.com/thread.jspa?messageID=758699&tstart=0 – Sbbs

+0

このElastic Beanstalkインスタンスでは、どのようにsudoで「npm install」を実行しましたか?これは方法ではありませんが、私はこの一時的な回避策で私のアプリケーションをテストすることができるでしょう。 – sergi

+0

@sergi 'sudo /opt/elasticbeanstalk/node-install/node-v6.9.1-linux-x64/bin/node /opt/elasticbeanstalk/node-install/node-v6.9.1-linux-x64/bin/npm install ' – Sbbs

答えて

4

この問題がありました。 ebextensionsを使用して、tmp/npm/.locksフォルダーのアクセス許可を変更するpost-deploy scriptを作成できます。

あなたのnode.jsプロジェクトでは、まだ持っていない場合は.ebextensionsフォルダを作成してください。次に、新しい設定ファイルを追加します。 00_create_postdeploy_script.config、以下のYAMLで:あなたが展開するとき、これは99_fix_node_permissions.shと呼ば/opt/elasticbeanstalk/hooks/appdeploy/postでスクリプトを作成します

files: 
    "/opt/elasticbeanstalk/hooks/appdeploy/post/99_fix_node_permissions.sh": 
    mode: "000755" 
    owner: root 
    group: root 
    content: | 
     #!/usr/bin/env bash 
     chown -R nodejs:nodejs /tmp/.npm/_locks/ 

、次のようになります。それはpostフォルダ内にありますので

#!/usr/bin/env bash 
chown -R nodejs:nodejs /tmp/.npm/_locks/ 

、それは次のようになりますアプリがデプロイされた後に自動的に実行されるため、必要に応じて権限が変更されます。

EDIT:あなたが全体.npmフォルダのアクセス権に問題を抱えている場合は、あなたが設定ファイルの最後の行を変更する必要があります。

chown -R nodejs:nodejs /tmp/.npm/ 
+0

あなたの答えを少し修正して問題を完全に解決しました(ちょうど '/ tmp/.npm/_locks'ではなくchwon'/tmp/.npm') – Sbbs

+0

私はここでどのように編集作業がうまくいくのか分かりませんが、答え! – hsriskantha

1

過去に私はこの問題を抱えていましたが、私の場合はキャッシュをクリーニングして問題を解決しました。 てみてください。この

npm cache clean 

はそれがお役に立てば幸いです。

+1

残念ながらそれを修正しませんでした。 – Sbbs

関連する問題