it-swarm.com.de

Wie führe ich den Node.JS-Server für eine Webanwendung aus?

Info: Ich bin sehr neu bei node.JS!

Ich habe einen Beispielserver geschrieben, der http-Anfragen auf Port XXXX abhören kann. Wenn ich diesen Server von der Kommandozeile (Windows) aus starte, scheint es gut zu funktionieren. Es antwortet auf die Anforderungen an localhost: XXXX beim Öffnen in einem Browser.

Frage: Soll das so funktionieren? Soll für die Ausführung des Knotenservers immer eine CMD-Eingabeaufforderung geöffnet sein, damit der Server Anforderungen abhören kann? Kann ich mit IISNode nicht "etwas" machen?

Ich verstehe, dass, wenn ich eine Anforderung an eine JS-Datei stelle, die in IISNode als Node.JS-Datei vermerkt ist und von NODE verarbeitet werden soll; Dann muss Node die Anfrage für mich bearbeiten. Dann wird jedoch vorausgesetzt, dass IIS der Webserver für mich ist und dass bestimmte Anfragen von Node bearbeitet werden können .

Ich hoffe ich mache hier Sinn! :)

29

Ich habe es mit einer geeigneten Methode gelöst. Ja, IISNode ist es. Aber keiner der Kommentare schien zu beantworten, wie man app.js für verschiedene Anwendungen "ausführt", die auf demselben IIS (das auch PHP, ASPX usw. bedient)

Schritt 1. Bearbeiten Sie den Einstiegspunkt Ihrer Knotenanwendung (normalerweise) app.js für die neue URL-Struktur.

Eine Express-App geht davon aus, dass sie den gesamten URL-Speicherplatz besitzt und die URLs vom Stammverzeichnis selbst aus startet (siehe Abbildung):

Default EXPRESS App.js

Bearbeiten Sie Ihre app.js so, dass sie wie folgt aussehen (geben Sie jedoch den Verzeichnisnamen IHRER App anstelle von "aaspass" ein !!):


app.js modified as per directory structure of app hosted on IIS


Legen Sie nun eine web.config-Datei im Stammverzeichnis Ihrer App ab, die wie folgt aussieht (Sie können diese Vorlage verwenden: webconfig).

Bearbeiten Sie die Datei erneut und ändern Sie den Namen "aaspass" in den Verzeichnisnamen Ihrer App.


Modified We.Config to add rules to redirect to relevant app.js

Das ist es! Sie können dies für beliebig viele Apps tun und diese auf demselben Server hosten.

21

Unter Windows haben Sie zwei Möglichkeiten, node.js-Anwendungen zu hosten:

  1. Hosten Sie den Prozess node.exe selbst, so wie Sie es auf * nix tun würden. Während der Entwicklung werden Sie es wahrscheinlich nur von der Kommandozeile aus starten. In der Produktion möchten Sie einen Mechanismus entwickeln, der die Verwaltung der Prozesslebensdauer für node.exe ermöglicht (z. B. beim Starten des Betriebssystems). Die sinnvollste Methode für Windows ist die Verwendung von Windows-Diensten (auch als NT-Dienste bezeichnet). Eine Komponente, die Ihnen dabei helfen kann, ist http://nssm.cc/ .
  2. Host node.js mit der IIS using iisnode ( http://github.com/tjanczuk/iisnode ). Im Vergleich zum Selbsthosting hat diese Methode eine Reihe von Vorteile, die in https://github.com/tjanczuk/iisnode/wiki beschrieben sind. Sie möchten jedoch auch die Auswirkungen auf die Leistung untersuchen (nicht alle sind tatsächlich schlecht): http: // tomasz.janczuk.org/2012/06/performance-of-hosting-nodejs.html .
23
Tomasz Janczuk

Was hat bei mir funktioniert:

  1. Installiere IISNode
  2. RL Rewrite Modul von IIS installieren
  3. Fügen Sie die Datei web.config in Ihre Node.js-App/Ihren Node.js-Ordner ein. Hier ist der Inhalt der Datei web.config:

    Im Handler muss ich nur auf app.js verweisen (typischer Einstiegspunkt Ihrer Anwendung). Ich habe an keiner meiner Routen Änderungen vorgenommen (es muss kein Text angehängt werden).

..

<configuration> 
        <appSettings>
            <add key="NODE_ENV" value="production" />
        </appSettings>
          <system.webServer>



    <handlers>
      <add name="iisnode" path="server/app.js" verb="*" modules="iisnode" />
    </handlers>

     <rewrite>
      <rules>
       <clear />
        <rule name="cdw">
          <match url="/*" />
          <action type="Rewrite" url="server/app.js" />
        </rule>
      </rules>
    </rewrite>

  </system.webServer>
</configuration>
7
SharpCoder

Unter Windows können (und sollten) Sie Node.js unter IIS ausführen:

http://www.hanselman.com/blog/InstallingAndRunningNodejsApplicationsWithinIISOnWindowsAreYouMad.aspx

2
Hector Correa