2016-06-24 6 views
0

Ich habe den Knoten js auf Ec2 erfolgreich installiert und meine Website und Domain laufen gut, aber wenn ich versuche, Knoten js ausgeführt wird es nicht ausgeführt.Run node.js und PHP/Apache auf der gleichen Instanz auf AWS

Ich habe das einige Tutorial folgen und ich habe den folgenden Schritt auf meinem AWS getan.

1. I have added a port 9000 on my security group 
2. I have done the pre-routing on iptables using below command 

    sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 9000 

Aber nach meiner Domain Stop läuft über Code ausgeführt wird, bedeutet, wenn ich versuche, meine Website mydomain.com zu öffnen es zeigt nichts und wenn ich die diese Regel als wieder seine Arbeits entfernen.

Ich habe auch versucht, die unterhalb Lösung Knoten als Root-Ebene zu laufen Port auf 80.

sudo node server.js 

zu hören, aber nach, dass ich unter Störung erhalte

Error: listen EADDRINUSE :::80 
    at Object.exports._errnoException (util.js:949:11) 
    at exports._exceptionWithHostPort (util.js:972:20) 
    at Server._listen2 (net.js:1253:14) 
    at listen (net.js:1289:10) 
    at Server.listen (net.js:1385:5) 
    at Object.<anonymous> (/home/mcook/domains/development.mcook.co.in/public_html/server.js:36:5) 
    at Module._compile (module.js:541:32) 
    at Object.Module._extensions..js (module.js:550:10) 
    at Module.load (module.js:456:32) 
    at tryModuleLoad (module.js:415:12) 

Ich möchte nur machen Mein Node und meine Site müssen beide laufen und für welchen Befehl und Port muss ich laufen.

+0

Fügen Sie einen Reverse-Proxy mit entsprechenden Bedingungen hinzu, der Anfragen von 80 bis 9000 für jede Anforderung, die auf eine Datei/ein Verzeichnis abzielt, das nicht existiert, anfordert. Dies ist etwas, was Sie innerhalb von Apache tun würden, und Sie müssten Port 9000 in Ihrer Sicherheitsgruppe und Firewall nicht öffnen. –

+0

Warum unten zu dieser Frage abstimmen .. ?? –

Antwort

1

folgenden Befehl vorwärts all Ihren Traffic von PORT 80 zu PORT 9000.

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 9000 

Warum machst du das? Da Sie bereits die PORT 9000 von AWS Sicherheitsgruppen geöffnet haben, können Sie Ihre node.js auf PORT 9000 direkt aus dem Code herstellen.

Der Grund, warum die leere Seite nach Ausführung des obigen Codes angezeigt wird, ist, dass Ihr Webserver auf PORT 80 und jeder Anfrage läuft, die an den Knoten node.js auf Port 9000 weitergeleitet wird, der eigentlich nichts zu zeigen hat.

Führen Sie den Befehl nicht aus, führen Sie einfach den Knoten node.js auf PORT 9000 aus, und stellen Sie die Verbindung zum PORT 9000 nur vom Client her her.

+0

ja du hast Recht. Wir können es an einem anderen Port verwenden, wenn wir keinen Proxy oder Pre-Routing umkehren müssen –