Ich habe eine node.js App, die auf Port 3000
läuft. Ich habe es auf Amazon Web Services (ec2
) bereitgestellt und es funktioniert dort. Meine server.js
Datei sagt:Ich führe gerade meine Amazon ec2-Instanz auf Port 3000. Ich möchte es stattdessen auf Port 80 ausführen. Wie kann ich es tun?
var port = process.env.PORT || 3000;
(...)
app.listen(port);
console.log('App listening on port ' + port);
Meine Sicherheitsgruppe in aws Einstellungen scheint den Port 80 auch geöffnet zu haben:
so dachte ich, es ist genug, um nur die var port
-= 80
und Neustart zu ändern der Server. Aber wenn ich es tat, dass ich einen Fehler bekam:
[email protected]:~/apps/myproject/www/myproject$ sudo node server.js
App listening on port 80
events.js:141
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE :::80
at Object.exports._errnoException (util.js:856:11)
at exports._exceptionWithHostPort (util.js:879:20)
at Server._listen2 (net.js:1237:14)
at listen (net.js:1273:10)
at Server.listen (net.js:1369:5)
at Function.app.listen (/opt/bitnami/apps/myproject/www/myproject/node_modules/express/lib/application.js:542:24)
at Object.<anonymous> (/opt/bitnami/apps/myproject/www/myproject/server.js:43:5)
at Module._compile (module.js:398:26)
at Object.Module._extensions..js (module.js:405:10)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Function.Module.runMain (module.js:430:10)
at startup (node.js:141:18)
at node.js:1003:3
Ich bin mit dem Bitnami MEAN 3.2.1-0
System auf Amazon.
Auch der Grund, warum ich diesen Port ändern möchten, ist dies:
bisher alle meine Web Service auf Port betreiben 3000. Allerdings habe ich es auch einen public_html
Ordner mit dem index.html
Datei. Wenn also ein Benutzer meine Webseite anzeigen möchte, muss er nicht nur die Webseite eingeben, sondern auch den Port (3000
), was nicht gerade praktisch ist.
Bis jetzt bleibt die ganze App unter www.ec2-some-random-amazom-numbers.eu-west-1.compute.amazonaws.com:3000/index.html so werde ich eine normale Top Level Domain kaufen zeigen Sie darauf (zB something.com) aber dann - muss ich in diesem Fall immer noch den Port 3000 auf 80 ändern? Oder ist es üblich, Apps auf einem anderen Port als 80 zu lassen?
Wenn letzteres, dann wird es mir möglich sein, den Port zu verlassen, wie es ist, und nur die Top-Level-Domain auf diesem ganzen langen Amazonas mit einem Port 3000 am Ende zeigen?
Also zum Beispiel: wenn Benutzer www.something.com
gibt, wird es ihn auf www.ec2-some-random-amazom-numbers.eu-west-1.compute.amazonaws.com:3000/index.html
umleiten?
Danke. Könntest du mir einen Hinweis geben, ob die App auf Port '3000' sicher ist und als Produktionsumgebung funktionieren könnte? Dann würde ich nur meine Top-Level-Domain auf die Adresse "address.com: 3000/index.html" verweisen und alle Webservices auf Port "3000" arbeiten lassen. – user3766930
Ich glaube nicht, dass es "unsicher" wäre. Ich persönlich mag es einfach nicht, dass Benutzer sich daran erinnern müssen, einen Port einzugeben, aber wenn Sie eine kleine Anzahl von Benutzern haben und sie "trainiert" werden können, dann glaube ich nicht, dass es ein Problem geben würde. –