[解決済み] Node.jsアプリが80番ポートで実行できない(他のプロセスがブロックしていないのに
2023-01-23 17:20:54
質問
Node.jsをインストールしたAmazon EC2上でDebianのインスタンスを動かしています。以下のようなコードを実行すると
http = require('http');
http.createServer(function (request, response){
response.writeHead(200, {'Content-Type':'text/plain'});
response.end('Hello World\n');
}).listen(80);
console.log("Running server at port 80");
以下のような出力があり、ポート80でリッスンしている別のプロセスがあることがわかりました。
Running server at port 80
events.js:72
throw er; // Unhandled 'error' event
^
Error: listen EACCES
at errnoException (net.js:901:11)
at Server._listen2 (net.js:1020:19)
at listen (net.js:1061:10)
at Server.listen (net.js:1127:5)
at Object.<anonymous> (/home/admin/nodetests/nodetest.js:6:4)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
今、ポート 80 を使用してリッスンしているプロセス (何か隠されている場合に備えて root として) があるかどうかを確認すると、次のようになります。
netstat -tupln
以下のような出力があり、ポート80で何もリッスンしていないことがわかります。
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1667/sshd
tcp6 0 0 :::22 :::* LISTEN 1667/sshd
もしそれが違いを生むなら、debian は受信ルールとしてポート 80 を開いていることに注意すべきです。
私の質問は、何が間違っているのか、ということです。なぜポート 80 をリッスンしているプロセスを特定できないのでしょうか?なぜ Debian ではブロックされているのでしょうか? コードを正しく実行するためにどのようなステップを踏むべきでしょうか?
どのように解決するのですか?
エラーコード
EACCES
は、そのポートでアプリケーションを実行するための適切な権限を持っていないことを意味します。Linux システムでは、1024 未満のポートには root 権が必要です。
関連
-
[解決済み】Heroku + node.jsのエラー(Webプロセスが起動後60秒以内に$PORTにバインドできなかった)。
-
[解決済み] Node.jsをバックグラウンドプロセスとして実行し、決して死なないようにする方法とは?
-
[解決済み】node.jsアプリをバックグラウンドサービスとして実行するにはどうすればいいですか?
-
[解決済み] 文字列のn番目の出現箇所を取得するには?
-
[解決済み] URL/アドレスバーからJavascriptの関数を呼び出す
-
[解決済み] React js 親コンポーネントから子コンポーネントの状態を変更する
-
[解決済み] <ng-content>が空かどうかを確認する方法は?(これまでのAngular 2+で)
-
[解決済み] querySelectorAllがない場合、ライブラリを使用せずに属性で要素を取得する?
-
[解決済み] V8 Javascript エンジンのスタンドアロン実行
-
[解決済み] これは純関数ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Node.jsを80番ポートで実行する際のベストプラクティス(Ubuntu / Linode)【終了しました
-
[解決済み] <Enter>でjQuery UIダイアログを送信する
-
[解決済み] Javascriptによるタッチスクリーンデバイスの検出
-
[解決済み] なぜ "use strict "はパフォーマンスを10倍向上させるのか?
-
[解決済み] React js 親コンポーネントから子コンポーネントの状態を変更する
-
[解決済み] TypeScriptプロジェクトで既存のC#クラス定義を再利用する方法
-
[解決済み] Node.jsのES6クラスをrequireで作る
-
[解決済み] なぜjavascriptのES6 Promisesはresolve後も実行を継続するのですか?
-
[解決済み] V8 Javascript エンジンのスタンドアロン実行
-
[解決済み] リダイレクトされずにHTMLフォームを送信する方法