In diesem Artikel werde ich das Hosten einer Node.js-App auf den gemeinsam genutzten Hosting-Servern von Namecheap mit cPanel behandeln. Ich werde in diesem Artikel nicht auf die Einrichtung des Datenbankservers oder des React-Frontends für Ihre Web-App eingehen. Stattdessen möchte ich mich auf die Herausforderungen konzentrieren, denen Sie möglicherweise gegenüberstehen, wenn Sie eine Node-App in einer gemeinsam genutzten Hosting-Umgebung ausführen. == Zögern Sie nicht, hosten Sie noch heute! == Bevor Sie bei der Entwicklung Ihrer Web-App zu weit gehen, ist es eine gute Idee, eine stabile Version online zu stellen. Dies kann in Ihrer Produktionsumgebung oder in einer Staging-Umgebung sein, die Ihrer Produktionsumgebung ähnlich ist. Die meisten Leute warten, bis ihre App fast fertig ist, bevor sie sie online hosten – und genau das habe ich getan, als ich meine erste React- und Node-Web-App entwickelt habe. An diesem Punkt hatte ich jedoch viele Herausforderungen, meinen Node-API-Server zum Laufen zu bringen, und ich musste auch viele Änderungen an meiner React-App vornehmen. Deshalb empfehle ich, frühzeitig eine Version online zu stellen, damit Sie Anpassungen vornehmen können, bevor Sie zu viel Code schreiben. == Verwendung eines gemeinsam genutzten Hosting-Dienstes == Die gemeinsam genutzten Hosting-Server von Namecheap verwenden cPanel als Control Panel-Schnittstelle zur Verwaltung des Apache-Servers. Diese Anweisungen sollten auch jedem helfen, der einen gemeinsam genutzten Hosting-Dienst mit cPanel wie A2 Hosting und GoDaddy verwendet. Ich habe auch meinen Namecheap-Server mit einem SSL-Zertifikat eingerichtet und cPanel leitet standardmäßig den gesamten HTTP-Verkehr auf HTTPS um. Der gesamte Datenverkehr zu meinem Server ist also sicher. Sie werden viele Anleitungen finden, die Ihnen zeigen, wie Sie eine Node-App auf einem VPS-Hostingdienst (Virtual Private Server) wie DigitalOcean hosten. Wenn Sie bei Null anfangen, dann gibt Ihnen das Hosting mit einem solchen Service mehr Kontrolle. Aber es ist normalerweise teurer als Shared Hosting. Und in meinem Fall hatte ich bereits für einen Shared-Hosting-Service von Namecheap bezahlt. Einige Vorteile der Verwendung von cPanel und Shared Hosting: - Verwaltet mit einer einfachen Webverwaltungskonsole - Einfach zu konfigurieren - Günstig, besonders wenn Sie bereits eine Website / Domain hosten - Kann problemlos dynamische Websites mit anderen Technologien wie PHP usw. einrichten, wenn Sie verschiedene Technologien erforschen Einige Nachteile: - Weniger Kontrolle, da Sie keinen Zugriff auf das zugrunde liegende Betriebssystem haben - Nicht skalierbar == Wohin geht alles? == Zuerst müssen Sie einen Ordner für alle Quelldateien für Ihre Node-Apps erstellen. Ich habe im Verzeichnis /home/username einen Ordner mit dem Namen „nodejs“ erstellt und in diesem Ordner dann einen Unterordner für jede App erstellt. Laden Sie nun alle Ihre Quelldateien in diesen Unterordner hoch. Stellen Sie sicher, dass Sie auch die Datei „package.json“ einschließen. Sie laden den Ordner „node_modules“ nicht hoch, da dieser mit dem Paketmanager erstellt wird später. Denken Sie daran, dass wir in unserem Beispiel für die Webanwendungsarchitektur nur den Node-API-Server hosten. Wir werden die React-App nicht über Node hosten (mehr dazu im nächsten Artikel). httpsdavenewman.tech/wp-content/uploads/2020/06/Diagram-5_1.jpg Das Ordnerlayout zeigt die Node-Quelldateien im Ordner /home/username/nodejs/mynodeapi und dort ist a .htaccess-Datei im Ordner /home/username/public_html/myapi == Das Problem, dass die Node-App nicht auf die Ports zugreifen kann == Die größte Herausforderung bestand darin, meine Node-API-App zum Laufen zu bringen. Das Problem war, dass der Beispielcode in der Support-Dokumentation von Namecheap einfach nicht funktionierte! Es versucht, einen http-Server zum Abhören von Port 80 und einen http **s**-Server von Port 443 zu erstellen. Ich erhalte jedoch immer einen EACCESS-Fehler, der besagt, dass ich keine Berechtigung habe um diese Ports zu verwenden. == Die Lösung âÃÂà Node muss nicht auf den Port zugreifen! == Schließlich fand ich die Lösung, indem ich einen Kommentar des Benutzers SibProgrammer in einem Thread über Plesk, ein weiteres Hosting-Control-Panel, las. cPanel verwendet den Phusion Passenger-Anwendungsserver, um Node-Apps zu hosten, ebenso wie Plesk. In Summe: Wenn Sie eine Anfrage von Ihrem Browser senden, geht diese an den Apache-Server, dann an Phusion Passenger und dann an Ihre Node-App. Ihre Node-App muss den Port nicht besitzen, da er weiter oben von den Apache- und Phusion Passenger-Anwendungsservern gehandhabt wird. Dies vereinfacht den Code zum Erstellen des http-Servers in Ihrer Datei www.js (oder app.js): * www.js * Testen der Erstellung des HTTP-Servers für Namecheap. * Dave */ const http = require('http http.createServer(function(request, response) { response.writeHead(200, {'Content-Type': 'text/html response.endh1>Hallo Welth1 listen(process.env .PORT); console.log('App läuft Ein paar Dinge zu beachten: - Auf process.env.PORT lauschen (anstatt 80 oder 443 manuell einzustellen). Beim Testen ist mir aufgefallen, dass process.env.PORT undefiniert ist! Aber interessanterweise spielt das in diesem Fall keine Rolle. - Verwenden Sie einen HTTP-Server, auch wenn Sie SSL eingerichtet haben. cPanel hat Apache so konfiguriert, dass es den gesamten HTTP-Verkehr auf HTTPS umleitet und folglich auf alle Anfragen von HTTPS antwortet. Sie müssen Ihre Node-App nicht manuell konfigurieren, um einen https-Server einzurichten und Ihre SSL-Zertifikate einzulesen. == Letzte Schritte für den Knoten-API-Server == Jetzt sollte es der relativ einfache Vorgang sein, den Anweisungen zum Einrichten Ihrer Node-App zu folgen. httpsdavenewman.tech/wp-content/uploads/2020/06/Diagram-5_2.jpg Screenshot der Node.js-Konfigurationsseite von cPanel - Wählen Sie die entsprechende Version von Node.js und den Anwendungsmodus (Produktion wird empfohlen). - Das Anwendungsstammverzeichnis ist der Ordner, in den Sie zuvor Ihre Quelldateien hochgeladen haben (Ä nodejs/mynodeapiå im obigen Beispiel). - Die „Anwendungs-URL“ ist die URL, die für den Zugriff auf Ihre API verwendet wird („myapi“) ¢ÃÂàim Beispiel). Der Name, den Sie in dieses Feld eingeben, wird verwendet, um einen Unterordner in Ihrem Ordner /home/username/public_html zu erstellen. Es muss nicht derselbe Name sein wie der Ordner „Application root“ (aber wird oft sein). - Die Startdatei der Anwendung ist www.js oder app.js, je nachdem, wie Sie Ihre Node-App erstellt haben. - Es liegt an Ihnen, wie Sie die Passagierprotokolldatei konfigurieren möchten. - Sobald Sie die App erstellt haben, sehen Sie die Schaltfläche zum Ausführen der NPM-Installation ¢ÃÂÂ. Führen Sie dies aus, und es wird der Ordner „node_modules“ mit allen abhängigen Modulen erstellt, die Ihre App benötigt. Sobald Sie Ihre Node-App eingerichtet und gestartet haben, erstellt sie den Unterordner in Ihrem Ordner /home/public_html. Sie müssen nun in diesen Ordner gehen und die .htaccess-Datei bearbeiten und die folgende Zeile hinzufügen: RewriteEngine aus Dadurch wird verhindert, dass der Apache-Server Anfragen umschreibt (oder umleitet), die intakt an Ihren API-Server gesendet werden müssen. Und das war's! Jetzt sollte Ihre Node-API-App betriebsbereit sein und auf Ihre API-Aufrufe reagieren. == Also, was kommt als nächstes? == Nachdem wir den Node-API-Server eingerichtet haben, können wir unser React-Frontend in unserer Entwicklungsumgebung so ändern, dass es auf diesen API-Server verweist. Oder wir könnten Postman verwenden, um unsere API-Aufrufe zu testen. Im nächsten Artikel werden wir uns mit dem Hosten der React-App auf Namecheap und cPanel befassen.