2017-11-22 5 views
-1

Ich einen Apache-Server auf einem freigegebenen Host, der cPanel verwendet. Ich habe node.js erfolgreich auf dem Server installiert, aber das Problem ist, dass mein Host nur ausgehende Ports öffnen kann und ich über den Browser auf den Port zugreifen kann. Ich habe mich gefragt, ob ich keinen Port verwenden muss. Wie zum Beispiel hier ist mein Code:Muss eine node.js-Anwendung einen Port überwachen?

const express = require('express'); 
const req = require('request') 

var app = express(); 
var port = process.env.PORT || 8016; 

var server = app.listen(port,() => { 
    console.log('Server listening on ' + port); 
}); 

Das könnte ich beispielsweise die Anwendung machen keinen Port benötigen und es geht aus der Domäne anstelle eines Ports wie example.com? Wie ich hinzufügen möchte ein app.route() wäre ich in der Lage, das nur in public_html zu tun?

+0

Ein Web-Service ist ohne Port nicht verfügbar. Der Domainname, den Sie in einen Browser eingeben, verbirgt nur die Komplexität. http://example.com wird zu Port 80 gehen. https://example.com wird zu Port 443 gehen.Sie sollten in der Lage sein, Apache httpd zu [Proxy-Anfragen an Ihre Node-App] zu konfigurieren (https://serverfault.com/questions/497856/using-a-apache-virtualhost-to-access-a-node-js-instance- on-the-same-server) – Matt

Antwort

1

Alle Serverprozesse müssen auf einem Port warten.

Wenn Sie eine URL wie http://www.example.com sehen, gibt es einen implizierten Port. Wenn das Protokoll http ist und in der URL kein Port vorhanden ist, verwendet der Browser automatisch Port 80. Wenn diese URL einen Server erreicht, liegt das daran, dass der Server von example.com Port 80 überwacht. Der Standardport für https ist 443.

Könnte ich zum Beispiel die Anwendung machen keinen Port benötigen und es geht von der Domäne anstelle eines Ports wie example.com

Nr Ihr Anwendungsserver überwachen muss weg an einem Hafen. Wie oben erwähnt, können Sie den Port aus der URL herauslassen, wenn der Port der "Standard" für dieses Protokoll ist und wer auch immer die URL verarbeitet, wird automatisch den korrekten Port verwenden. Aber Ihr Server muss immer noch den richtigen Port abhören.

Wie möchte ich eine app.route() hinzufügen würde ich nur in public_html tun?

Ich weiß nicht, was das bedeutet. Sie würden in Ihrer HTML-Datei keine Routen hinzufügen. Das Hinzufügen von Routen erfolgt in einer JS-Datei auf Ihrem Server.

Ich einen Apache-Server auf einem freigegebenen Host, der cPanel verwendet.

Sie können normalerweise keinen node.js-Server ausführen, der eingehende Verbindungen von dieser Art von Hosting direkt bedient. Sie benötigen ein Hosting, das lange laufende Serverprozesse unterstützt und eingehende Verbindungen an sie weiterleitet. Ihr Provider kann dies (auf einer anderen Serviceebene) anbieten oder Sie benötigen möglicherweise einen anderen Anbieter.

Es gibt Möglichkeiten, Apache als Proxy zum Weiterleiten eingehender Verbindungen zu Ihrem node.js-Server zu verwenden. Dies ist jedoch normalerweise nicht möglich, wenn Sie sich in einer gemeinsam genutzten Hosting-Umgebung selbst konfigurieren. Das würde normalerweise einen höheren Hosting-Service erfordern.

Es ist auch möglich, node.js als Batch-Ausführungsumgebung von Apache zu verwenden (ähnlich wie PHP von Apache ausgeführt wird), aber es läuft kein node.js-Server. Das bedeutet, dass jedes Mal, wenn eine bestimmte Route in Apache getroffen wird, ein node.js-Skript von Grund auf neu erstellt wird (das ist also wahrscheinlich nicht das, wonach Sie suchen oder fragen).

Sie können dies eine nützliche lesen: Running Node.js in apache?.

+0

@CraigMitchell - Wird Ihr Hosting 80 eingehende Anfragen, die an Ihre Domain gerichtet sind, an Ihren node.js Server umleiten? Das brauchst du. Und wird Ihr Hosting einen lang laufenden node.js Server zulassen? – jfriend00

+0

Ich bemerkte es sagte 'EACCES 0.0.0.0: 443' So sagt es der Server ist 0.0.0.0? Tritt deshalb dieser Fehler auf? –

+0

@CraigMitchell - Haben Sie versucht, [Google "EACCES nodejs. Server"] (https://stackoverflow.com/questions/9164915/node-js-eacces-error-when-listening-on-most-ports). Wenn Sie dies getan hätten, hätten Sie schnell festgestellt, dass für den Start eines Servers auf einem beliebigen Port unter 1024 erhöhte Rechte erforderlich sind. Dies ist ein typischer Fehler, den Sie möglicherweise erhalten, wenn Sie nicht über die erforderlichen Berechtigungen verfügen. – jfriend00

Verwandte Themen