Ich führe eine Instanz von Debian auf Amazon EC2 mit installierter Node.js aus. Wenn ich den folgenden Code ausführe:
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");
Ich erhalte die folgende Ausgabe, die mir sagt, dass an Port 80 ein anderer Prozess abhört:
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)
Wenn ich jetzt überprüfe, ob es einen Prozess gibt (als Root, falls etwas versteckt ist), der Port 80 abhört, indem ich:
netstat -tupln
Ich erhalte die folgende Ausgabe, die mir sagt, dass an Port 80 nichts zu hören ist:
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
Ich sollte beachten, dass der Debian Port 80 als eingehende Regel geöffnet hat, wenn dies einen Unterschied macht.
Meine Frage ist: Was mache ich falsch? Wie kommt es, dass ich den Prozess, der Port 80 abhört, nicht identifizieren kann? Warum ist es in Debian blockiert? Welche Schritte muss ich unternehmen, damit der Code ordnungsgemäß ausgeführt wird?