19-06-2024, 22:41
Also, du möchtest deine Node.js-Anwendung auf IIS hosten? Das ist großartig! Ich erinnere mich, als ich das zum ersten Mal gemacht habe; es fühlte sich an, als würde ich einen Code knacken oder so etwas. Lass uns schauen, wie du das einrichten kannst, denn es ist nicht so kompliziert, wie es vielleicht klingt.
Zuerst musst du IIS installieren, falls du das noch nicht getan hast. Unter Windows ist das normalerweise nur eine Funktion, die du aktivieren kannst. Wenn du Windows 10 oder 11 hast, kannst du zur Systemsteuerung gehen, dann zu Programme und auf "Windows-Funktionen ein- oder ausschalten" klicken. Dort findest du die Internetinformationsdienste in der Liste. Achte nur darauf, dass du das Kästchen ankreuzt und es installierst. Währenddessen möchtest du vielleicht auch das URL Rewrite-Modul installieren. Das ist wichtig, weil es dir erlaubt, HTTP-Anfragen weiterzuleiten und hilft deiner Node.js-Anwendung, sich gut unter IIS zu integrieren.
Nachdem du IIS eingerichtet hast, benötigst du Node.js selbst. Natürlich hast du es wahrscheinlich schon installiert, da du eine Node-App hostest, richtig? Falls nicht, kannst du den Installer ganz einfach von der offiziellen Node.js-Website herunterladen. Lade das herunter, führe den Installer aus und du solltest bereit sein.
Sobald du Node.js bereit hast, beginnt der eigentliche Spaß mit der Einrichtung deiner Anwendung. Was ich normalerweise mache, ist, ein spezielles Verzeichnis in deinem System zu erstellen, um deine App zu halten. Du könntest einen Ordner namens "MyNodeApp" oder etwas Ähnliches erstellen. Das hilft, die Dinge organisiert zu halten. Jetzt leg deinen Node.js-Anwendungscode dort hinein.
Wenn deine Anwendung einsatzbereit ist, startest du sie normalerweise mit einem Befehl wie node app.js. Aber hier ist der Haken beim Ausführen von Node.js-Anwendungen auf IIS. Du möchtest es nicht einfach in einem Eingabeaufforderungsfenster ausführen. Stattdessen verwenden wir ein Tool namens iisnode. Dies ist die Brücke zwischen deiner Node.js-Anwendung und IIS. iisnode ermöglicht es IIS, Node.js-Anwendungen zu hosten und fungiert als Handler für eingehende Anfragen.
Um iisnode zu bekommen, solltest du es herunterladen und installieren. Auf ihrer GitHub-Seite findest du gute Anleitungen, wie du das tun kannst. Sobald du es bereit hast, ist es Zeit, IIS so zu konfigurieren, dass es deine Node.js-App erkennt und wie es mit eingehenden Anfragen umgehen soll.
Wenn du im IIS-Manager bist, möchtest du eine neue Website erstellen. Klicke mit der rechten Maustaste auf "Sites" und wähle "Website hinzufügen". Hier legst du das Alias fest, das als Name deiner Website fungiert. Sagen wir, du nennst es "MyNodeApp". Du musst auch einen physischen Pfad auswählen. Das sollte der Ordner sein, in dem deine App lebt. Wähle hier deinen MyNodeApp-Ordner aus. Als Nächstes wähle einen Port. Du kannst 3000 oder einen anderen freien Port auswählen.
Jetzt kommt ein wesentlicher Schritt - setze den Anwendungs-Pool für deine neue Website. IIS verwendet Anwendungs-Pools, um Webanwendungen unabhängig auszuführen. Wenn du diese Website erstellst, siehst du eine Option für den Anwendungs-Pool. Du kannst einen neuen Pool erstellen oder einen bestehenden verwenden. Wenn du einen neuen erstellst, solltest du die .NET CLR-Version auf "Keinen verwalteten Code" setzen, da du eine Node-Anwendung und keine .NET-Anwendung ausführst. Diese Option auszuwählen, verhindert Probleme, die auftreten könnten, weil IIS versucht, mit .NET-Code zu arbeiten.
Nachdem du das eingerichtet hast, musst du das iisnode-Modul mit deiner Node.js-App verbinden. Dies geschieht über eine web.config-Datei, welche im Wesentlichen dafür sorgt, dass IIS versteht, wie es mit deinen Anfragen umgehen soll. Du musst eine web.config-Datei im Stammverzeichnis deiner App erstellen. So kannst du es einrichten:
Öffne deinen Lieblings-Texteditor und schreibe etwas wie dies in deine web.config:
<configuration>
<system.webServer>
<handlers>
<add name="iisnode" path="app.js" verb="*" modules="iisnode" />
</handlers>
<rewrite>
<rules>
<rule name="Nodejs" stopProcessing="true">
<match url="^app.js$" />
<action type="Rewrite" url="app.js" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Ersetze einfach app.js durch den Namen deiner Haupt-Node-Datei. Diese Konfiguration weist IIS an, iisnode zu verwenden, um Anfragen für deine app.js-Datei zu bearbeiten.
Zu diesem Zeitpunkt hast du deine IIS-Website mit einem Link zu deiner Node-Anwendung eingerichtet. Du musst sicherstellen, dass deine Anwendung läuft. Und während du das über die Eingabeaufforderung testen kannst, wie ich vorher erwähnt habe, möchtest du es auch so ausführen, dass IIS es richtig verarbeiten kann.
Zu diesem Zweck verwende ich gerne einen Prozessmanager wie PM2. Es ist ein praktisches Tool zur Verwaltung von Node.js-Anwendungen in der Produktion. Wenn du es noch nie verwendet hast, musst du nur npm install pm2 -g ausführen, um es global auf deinem System zu installieren. Danach kannst du deine Anwendung mit pm2 start app.js starten. Auf diese Weise hält PM2 deine App am Laufen und startet sie automatisch neu, wenn sie abstürzt.
Noch bevor du deinen Browser öffnest und localhost aufrufst, stelle sicher, dass die Firewall deinen Port nicht blockiert. Öffne die Einstellungen der Windows Defender Firewall und überprüfe deine eingehenden Regeln. Möglicherweise musst du eine neue Regel erstellen, die den Datenverkehr über den von dir festgelegten Port erlaubt. Es dauert nur ein paar Minuten, ist aber wichtig, um sicherzustellen, dass du von außen auf deine App zugreifen kannst.
Mit allem eingerichtet, kannst du jetzt http://localhost:3000 (oder welchen Port du auch immer gewählt hast) in deinem Browser besuchen. Wenn alles reibungslos funktioniert, solltest du deine Node.js-Anwendung laufen sehen!
Es kann wirklich befriedigend sein zu sehen, dass sich deine harte Arbeit ausgezahlt hat. Aber was ist, wenn du von einem anderen Gerät auf die Anwendung zugreifen möchtest? Dann musst du nur die lokale IP-Adresse deines Computers finden. Dies kannst du erreichen, indem du ipconfig in der Eingabeaufforderung eingibst. Verwende die IPv4-Adresse und versuche, von einem anderen Gerät im selben Netzwerk auf deine App zuzugreifen unter http://DEINE_IP_ADRESSE:3000.
Jedes Mal, wenn ich das für jemanden einrichte, gibt es immer ein wenig Tuning, das erforderlich ist. Manchmal müssen Berechtigungen angepasst werden, insbesondere wenn du Windows Server verwendest. Du könntest auf Probleme stoßen, wie dass die Website nicht geladen wird. In solchen Momenten können die Protokolle sehr hilfreich sein. Diese findest du oft in deinem Anwendungsverzeichnis, wenn du das in deiner iisnode-Konfiguration eingerichtet hast.
Ich hoffe, du fandest meinen Beitrag nützlich. Übrigens, hast du eine gute Backup-Lösung für Windows Server implementiert? In diesem Beitrag erkläre ich, wie man Windows Server richtig sichert.
Zuerst musst du IIS installieren, falls du das noch nicht getan hast. Unter Windows ist das normalerweise nur eine Funktion, die du aktivieren kannst. Wenn du Windows 10 oder 11 hast, kannst du zur Systemsteuerung gehen, dann zu Programme und auf "Windows-Funktionen ein- oder ausschalten" klicken. Dort findest du die Internetinformationsdienste in der Liste. Achte nur darauf, dass du das Kästchen ankreuzt und es installierst. Währenddessen möchtest du vielleicht auch das URL Rewrite-Modul installieren. Das ist wichtig, weil es dir erlaubt, HTTP-Anfragen weiterzuleiten und hilft deiner Node.js-Anwendung, sich gut unter IIS zu integrieren.
Nachdem du IIS eingerichtet hast, benötigst du Node.js selbst. Natürlich hast du es wahrscheinlich schon installiert, da du eine Node-App hostest, richtig? Falls nicht, kannst du den Installer ganz einfach von der offiziellen Node.js-Website herunterladen. Lade das herunter, führe den Installer aus und du solltest bereit sein.
Sobald du Node.js bereit hast, beginnt der eigentliche Spaß mit der Einrichtung deiner Anwendung. Was ich normalerweise mache, ist, ein spezielles Verzeichnis in deinem System zu erstellen, um deine App zu halten. Du könntest einen Ordner namens "MyNodeApp" oder etwas Ähnliches erstellen. Das hilft, die Dinge organisiert zu halten. Jetzt leg deinen Node.js-Anwendungscode dort hinein.
Wenn deine Anwendung einsatzbereit ist, startest du sie normalerweise mit einem Befehl wie node app.js. Aber hier ist der Haken beim Ausführen von Node.js-Anwendungen auf IIS. Du möchtest es nicht einfach in einem Eingabeaufforderungsfenster ausführen. Stattdessen verwenden wir ein Tool namens iisnode. Dies ist die Brücke zwischen deiner Node.js-Anwendung und IIS. iisnode ermöglicht es IIS, Node.js-Anwendungen zu hosten und fungiert als Handler für eingehende Anfragen.
Um iisnode zu bekommen, solltest du es herunterladen und installieren. Auf ihrer GitHub-Seite findest du gute Anleitungen, wie du das tun kannst. Sobald du es bereit hast, ist es Zeit, IIS so zu konfigurieren, dass es deine Node.js-App erkennt und wie es mit eingehenden Anfragen umgehen soll.
Wenn du im IIS-Manager bist, möchtest du eine neue Website erstellen. Klicke mit der rechten Maustaste auf "Sites" und wähle "Website hinzufügen". Hier legst du das Alias fest, das als Name deiner Website fungiert. Sagen wir, du nennst es "MyNodeApp". Du musst auch einen physischen Pfad auswählen. Das sollte der Ordner sein, in dem deine App lebt. Wähle hier deinen MyNodeApp-Ordner aus. Als Nächstes wähle einen Port. Du kannst 3000 oder einen anderen freien Port auswählen.
Jetzt kommt ein wesentlicher Schritt - setze den Anwendungs-Pool für deine neue Website. IIS verwendet Anwendungs-Pools, um Webanwendungen unabhängig auszuführen. Wenn du diese Website erstellst, siehst du eine Option für den Anwendungs-Pool. Du kannst einen neuen Pool erstellen oder einen bestehenden verwenden. Wenn du einen neuen erstellst, solltest du die .NET CLR-Version auf "Keinen verwalteten Code" setzen, da du eine Node-Anwendung und keine .NET-Anwendung ausführst. Diese Option auszuwählen, verhindert Probleme, die auftreten könnten, weil IIS versucht, mit .NET-Code zu arbeiten.
Nachdem du das eingerichtet hast, musst du das iisnode-Modul mit deiner Node.js-App verbinden. Dies geschieht über eine web.config-Datei, welche im Wesentlichen dafür sorgt, dass IIS versteht, wie es mit deinen Anfragen umgehen soll. Du musst eine web.config-Datei im Stammverzeichnis deiner App erstellen. So kannst du es einrichten:
Öffne deinen Lieblings-Texteditor und schreibe etwas wie dies in deine web.config:
<configuration>
<system.webServer>
<handlers>
<add name="iisnode" path="app.js" verb="*" modules="iisnode" />
</handlers>
<rewrite>
<rules>
<rule name="Nodejs" stopProcessing="true">
<match url="^app.js$" />
<action type="Rewrite" url="app.js" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Ersetze einfach app.js durch den Namen deiner Haupt-Node-Datei. Diese Konfiguration weist IIS an, iisnode zu verwenden, um Anfragen für deine app.js-Datei zu bearbeiten.
Zu diesem Zeitpunkt hast du deine IIS-Website mit einem Link zu deiner Node-Anwendung eingerichtet. Du musst sicherstellen, dass deine Anwendung läuft. Und während du das über die Eingabeaufforderung testen kannst, wie ich vorher erwähnt habe, möchtest du es auch so ausführen, dass IIS es richtig verarbeiten kann.
Zu diesem Zweck verwende ich gerne einen Prozessmanager wie PM2. Es ist ein praktisches Tool zur Verwaltung von Node.js-Anwendungen in der Produktion. Wenn du es noch nie verwendet hast, musst du nur npm install pm2 -g ausführen, um es global auf deinem System zu installieren. Danach kannst du deine Anwendung mit pm2 start app.js starten. Auf diese Weise hält PM2 deine App am Laufen und startet sie automatisch neu, wenn sie abstürzt.
Noch bevor du deinen Browser öffnest und localhost aufrufst, stelle sicher, dass die Firewall deinen Port nicht blockiert. Öffne die Einstellungen der Windows Defender Firewall und überprüfe deine eingehenden Regeln. Möglicherweise musst du eine neue Regel erstellen, die den Datenverkehr über den von dir festgelegten Port erlaubt. Es dauert nur ein paar Minuten, ist aber wichtig, um sicherzustellen, dass du von außen auf deine App zugreifen kannst.
Mit allem eingerichtet, kannst du jetzt http://localhost:3000 (oder welchen Port du auch immer gewählt hast) in deinem Browser besuchen. Wenn alles reibungslos funktioniert, solltest du deine Node.js-Anwendung laufen sehen!
Es kann wirklich befriedigend sein zu sehen, dass sich deine harte Arbeit ausgezahlt hat. Aber was ist, wenn du von einem anderen Gerät auf die Anwendung zugreifen möchtest? Dann musst du nur die lokale IP-Adresse deines Computers finden. Dies kannst du erreichen, indem du ipconfig in der Eingabeaufforderung eingibst. Verwende die IPv4-Adresse und versuche, von einem anderen Gerät im selben Netzwerk auf deine App zuzugreifen unter http://DEINE_IP_ADRESSE:3000.
Jedes Mal, wenn ich das für jemanden einrichte, gibt es immer ein wenig Tuning, das erforderlich ist. Manchmal müssen Berechtigungen angepasst werden, insbesondere wenn du Windows Server verwendest. Du könntest auf Probleme stoßen, wie dass die Website nicht geladen wird. In solchen Momenten können die Protokolle sehr hilfreich sein. Diese findest du oft in deinem Anwendungsverzeichnis, wenn du das in deiner iisnode-Konfiguration eingerichtet hast.
Ich hoffe, du fandest meinen Beitrag nützlich. Übrigens, hast du eine gute Backup-Lösung für Windows Server implementiert? In diesem Beitrag erkläre ich, wie man Windows Server richtig sichert.