アプリケーションはlocalhostで正常に動作しますが、サーバーへの接続時にエラーが発生します。
ポート22を介してサーバーに接続します
これはエラーです
Error: listen EADDRNOTAVAIL Error: listen EADDRNOTAVAIL
at errnoException (net.js:904:11)
at Server._listen2 (net.js:1023:19)
at listen (net.js:1064:10)
at net.js:1146:9
at dns.js:72:18
at process._tickCallback (node.js:419:13)
at Function.Module.runMain (module.js:499:11)
at startup (node.js:119:16)
at node.js:906:3
助けて!!!
-更新-
走る netstat -tulpn | grep 22
結果:
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 683/sshd
tcp6 0 0 :::22 :::* LISTEN 683/sshd
しかし、私はnetstat -tulpn | grep 80
何も表示されません。
このサーバーに障害がありますか?
ランニング netstat -nlt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:5901 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:5902 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:6001 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:6002 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
ランニング netstat -anp | grep :80
tcp 1 0 162.243.145.226:60728 91.189.94.25:80 CLOSE_WAIT 1726/ubuntu-geoip-p
tcp 1 0 162.243.145.226:47842 74.125.239.148:80 CLOSE_WAIT 8104/epiphany-brows
tcp 1 0 162.243.145.226:60727 91.189.94.25:80 CLOSE_WAIT 1417/ubuntu-geoip-p
tcp 1 0 162.243.145.226:58818 198.41.30.199:80 CLOSE_WAIT 8104/epiphany-brows
使用済みのポートを使用しています。ポートを変更するか、ポートで待機しているプロセスを強制終了する必要があります。ターミナルを開いて書きます(例):lsof -i :22
またはlsof -i :80
またはlsof -i :8000
およびkill PID
プロセスの。
Total.jsのリスニング[〜#〜]ポート[〜#〜]を変更する方法は?
default-ip : 127.0.0.1
default-port : 8000
または
// For e.g. Heroku
default-ip : auto
default-port : auto
var fs = require("fs");
var options = {};
// options.ip = "127.0.0.1";
// options.port = parseInt(process.argv[2]);
options.port = 8000;
// for development:
require('total.js').http('debug', { port: 8000 });
// or for production:
require('total.js').http('release', { port: 8000 });
感謝とドキュメント: http://docs.totaljs.com
今日これを見ただけです。ユーザーが127.0.0.1 localhost
ファイルで/etc/hosts
をコメントアウトし、別のネットワークサービスがlocalhost
を別のIPアドレスに解決していたnotユーザーのマシンに関連付けられていた。
解決策は、この行を/etc/hosts
に追加することでした
127.0.0.1 localhost
UnixベースのOSを使用していると思います。その場合、Sudoアクセスなしで1024未満のポートを使用することはできません。
また、深く掘り下げる前に、リスニングポートが他のプロセスで使用されていないことを確認してください。
クイックフィックス(開発のみ):
Sudo node file.js
_またはserver.listen(3000); // any number > 1024
本番用(rootアクセスで本番環境でノードを実行しないでください)
iPテーブルを使用して、リスニングポート(例:3000)を80にマップする必要があります。
_Sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
_
ポート22はssh用に予約されており、既知のポートのリストで確認してください http://en.wikipedia.org/wiki/Port_(computer_networking)#Common_port_numbers
ポート8000〜9000で開発用のノードアプリを実行することをお勧めしますが、登録済みのポート範囲から任意のものを使用できます。