LoginSignup
4
5

More than 3 years have passed since last update.

AWS EC2上でNode.jsを管理者ユーザーから実行した際のError: listen EACCES: permission denied 0.0.0.0:XXXXについて

Last updated at Posted at 2019-07-29

はじめに

よく理解しないまま続けてしまい、ハマってしまったので書き残しておきます。

問題

前回まででローカル(VScode)からリモートサーバー(AWS EC2)の編集ができるようになりましたが、いざindex.jsファイルを追加し、実行しようとすると以下のようなエラーが出ます。

前回の記事:https://qiita.com/kobyta/items/510e638ba6693de12871

スクリーンショット 2019-07-30 8.03.58.png

permission deniedとなっているので、安直にsudo権限からアクセスしたら、「sudo : node : コマンドが見つかりません」と出てくきます。
同じような問題にぶつかっていた人がいたので、自分もそれに習い下のようにシンボリックリンクを作成しましたが、下記画像のようにaddress already in useと出てきて断念、、(既に22番ポートをローカルとリモートサーバーのやりとりに使っていたせいか、、。そもそもシンボリックリンクを作る理由がわかっていない。管理者ユーザーとrootユーザーでPATHが同じならばエラーが解決するのか、、。)

参考URL:https://stackoverflow.com/questions/4976658/on-ec2-sudo-node-command-not-found-but-node-without-sudo-is-ok

terminal
$ sudo ln -s /home/ec2-user/.nvm/versions/node/v12.6.0/bin/node /usr/bin/node
$ sudo ln -s /home/ec2-user/.nvm/versions/node/v12.6.0/bin/npm /usr/bin/npm
$ sudo ln -s /usr/local/bin/node-waf /usr/bin/node-waf

スクリーンショット 2019-07-30 8.11.04.png

  • 一言メモ 「管理者ユーザーとrootユーザーと一般ユーザー」
    ここまで「管理者」=「root」と思ってきましたが、そうでは無いようです。「root」は管理者より上位にいる神みたいな存在で、「管理者」だけが「sudo」コマンドを使って一時的に神の力を得るということらしいです。「一般」ユーザーはそもそも「sudo」コマンドが使えません。

解決策

別のやり方を模索。以下の参考記事①で1024番以下のポート番号は管理者権限を持たないユーザーには実行できないことを知る。また参考記事②でnode.jeを管理者ユーザーから実行する際にポート番号3000を使っている人がいたので自分も同じようにやってみる。

参考記事①:http://dotnsf.blog.jp/archives/1066514800.html
参考記事②:https://qiita.com/oishihiroaki/items/bc663eb1282d87c46e97

AWS EC2のセキュリティグループで以下のようにインバウンドに3000番のポートを増やす。

スクリーンショット 2019-07-30 8.16.15.png

実行しようとしていた「index.js」のポート番号を3000に変更。ローカルからリモートサーバーに変更を送信。

スクリーンショット 2019-07-30 8.19.09.png

「管理者」ユーザーで実行した後、「 http://パブリックIPアドレス:3000/ 」にアクセスすると実行できていました。

  • 一言メモ「ブラウザのアクセス先について」
    httpやhttpsなどではポート番号のデフォルトが80、443と決まっており「 http://パブリックIPアドレス/ 」とすればアクセスできる。今回のように別のポートを使いたい場合、「 http://パブリックIPアドレス:ポート番号/ 」というように指定しなければならない。

なんとか実行できる環境まで行けたので、nodeでのアプリ制作を進めたいと思います。

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5