#はじめに
よく理解しないまま続けてしまい、ハマってしまったので書き残しておきます。
#問題
前回まででローカル(VScode)からリモートサーバー(AWS EC2)の編集ができるようになりましたが、いざindex.jsファイルを追加し、実行しようとすると以下のようなエラーが出ます。
前回の記事:https://qiita.com/kobyta/items/510e638ba6693de12871
permission deniedとなっているので、安直にsudo権限からアクセスしたら、「sudo : node : コマンドが見つかりません」と出てくきます。
同じような問題にぶつかっていた人がいたので、自分もそれに習い下のようにシンボリックリンクを作成しましたが、下記画像のようにaddress already in useと出てきて断念、、(既に22番ポートをローカルとリモートサーバーのやりとりに使っていたせいか、、。そもそもシンボリックリンクを作る理由がわかっていない。管理者ユーザーとrootユーザーでPATHが同じならばエラーが解決するのか、、。)
$ 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
- 一言メモ 「管理者ユーザーと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番のポートを増やす。
実行しようとしていた「index.js」のポート番号を3000に変更。ローカルからリモートサーバーに変更を送信。
「管理者」ユーザーで実行した後、「 http://パブリックIPアドレス:3000/ 」にアクセスすると実行できていました。
- 一言メモ「ブラウザのアクセス先について」
httpやhttpsなどではポート番号のデフォルトが80、443と決まっており「 http://パブリックIPアドレス/ 」とすればアクセスできる。今回のように別のポートを使いたい場合、「 http://パブリックIPアドレス:ポート番号/ 」というように指定しなければならない。
なんとか実行できる環境まで行けたので、nodeでのアプリ制作を進めたいと思います。