nodePush auf IIS

  • Hallo,
    ich habe einen Windows Server 2012 R2 mit Webserver. Auf diesem ist bereits Node.js und iisnode installiert. (ink. rdm im node.js Installationsordner)
    Soweit so gut ?
    Nun stose ich aber an meine grenzen? Wie richte ich das nodePush richtig ein ? und wichtiger wie starte ich den "Dienst"? bzw den Node Server?


    Eine kurze Anleitung hierzu wäre sehr hilfreich.


    MfG Thomas

    • Offizieller Beitrag

    Hallo,


    iisnode wirst du nicht benötigen und ist vermutlich sogar nachteilig, da damit vermutlich keine Websockets funktionieren. Öffne eine CMD / Powershell, wechsle in den Ordner in dem nodePush liegt und dann probiere die notwendigen Bibliotheken via npm install zu installieren. Bisher habe ich mit nodePush aber nur unter Unix-artigen Systemen gearbeitet, ich weiß daher nicht, ob das auch unter Windows funktioniert.

  • Also zum Verständniss:
    iisnode brauche ich garnicht? Weil dieses doch den iis mit node.js verknüpft oder? Oder hat der Webserver garnichts damit zu tun?
    Node.js mir npm ist installier (npm liegt in einem unterordner von node.js)
    Ich wechseln mit cmd auf meine Seite unter wcf/acp/be.bastelstu.wcf.nodePush und führe dort npm install aus, nachdem ich die config angepasst habe?
    Wie starte ich nun den Server bzw lasse ihn als demon laufen ? Im selben Ordner wie npm install? mit npm start?
    Sollte dies funktionieren muss ich im ACP die externe adresse eintragen unter dieser der gestartet node.js server erreichbar ist? also domain.de? und die ports in der fierwall freigeben die in der config eingestellt sind?


    dann sollte es funktionieren oder?
    Gibt es einen art Funktionstest?

    • Offizieller Beitrag

    Hallo,


    iisnode brauche ich garnicht? Weil dieses doch den iis mit node.js verknüpft oder? Oder hat der Webserver garnichts damit zu tun?

    Es wird keine Unterstützung durch den Webserver benötigt. nodePush enthält einen eigenen kleinen Webserver.


    Ich wechseln mit cmd auf meine Seite unter wcf/acp/be.bastelstu.wcf.nodePush und führe dort npm install aus, nachdem ich die config angepasst habe?

    Korrekt.


    Wie starte ich nun den Server bzw lasse ihn als demon laufen ? Im selben Ordner wie npm install? mit npm start?

    Für den ersten Test am einfachsten mit npm start. Anschließend empfehle ich die Verwendung von forever. Siehe auch die hier angepinnte Anleitung.


    Sollte dies funktionieren muss ich im ACP die externe adresse eintragen unter dieser der gestartet node.js server erreichbar ist? also domain.de? und die ports in der fierwall freigeben die in der config eingestellt sind?

    Es wird die vollständige Adresse mit Port-Angabe angegeben.


    Gibt es einen art Funktionstest?

    Wenn du die Adresse im Browser abrufst, dann sollte eine Statusseite erscheinen.


    Was mache ich wenn ich mehrere Websiten mit nodePush betreibe? in jeder Seite in dem jeweiligen Ordner npm install und start? nur andere ports?

    Korrekt.

  • Ok der install hat soweit geklappt (glaube ich, kein fehler log)
    wen ich nun aber sterten will zeigt er mir fehler an:



    Soweit ich das beurteilen kann will er mir damit sagen das die Ports schon in verwendung sind aber mein "netstat -an" zeigt mir keine Ports offen.
    Ich muss doch beide TCP outbound und inbound auf useTCP: true setzen oder?
    Port habe ich auch schonmal auf 9000 und 9001 angepasst keine Verbesserung.

  • Ich hatte nur die errors gepostet hier nocheinmal komplett:



    Ok und das der inbound nur auf localhost läuft ist auch korrekt?
    Wenn dies laufen würde würde es ja schon funktionieren nur hier weiß ich doch nichtmehr ganz weiter.

  • Korrektur:
    Installation hat auch errors dann kann das starten natürlich nicht funktionieren:


    • Offizieller Beitrag

    Hallo,


    offensichtlich bietet eine Abhängigkeit keine vorkompilierten Bibliotheken an. Du wirst also eine Installation von Python und vom Visual Studio C++ )Express auch möglich) benötigen. Es wäre prinzipiell möglich diese Abhängigkeit unter Windows auch aus nodePush zu entfernen, da sie nur für Unix-ähnliche Systeme relevant ist. Das macht allerdings die Updates von nodePush deutlich aufwändiger.

  • Hallo,
    Python ist installiert und das funktioniert soweit nachdem ich Version 2.x benutze :)
    Bei Microsoft Virtuual Studio bin ich aber noch nicht weiter.

    Code
    MSBUILD : error MSB4132: Unbekannte Toolsversion 2.0. Verfügbare Toolsversionen
     sind "12.0", "4.0".


    Vor dem installieren von Virtual Studio für Web 2013 Express war nur Version 4.0 verfügbar, 12.0 nicht.
    Welches brauche ich hier genau um diese Toolversion 2.0 installiert zu bekommen und brauche ich dafür das komplette Virtual Studio?
    Oder kann ich diese Toolversion auch einzelnt installieren?

  • Okey mit der Desktopversion für Windows von Virsual Studio scheint es zu klappen.
    Nun kommt:

    Code
    ..\src\posix.cc(2): fatal error C1083: Datei (Include) kann nicht geöffnet werd
    en: "unistd.h": No such file or directory [D:\Web\Seiten\****\wcf
    \acp\be.bastelstu.wcf.nodePush\node_modules\chroot\node_modules\posix\build\pos
    ix.vcxproj]


    Fehlt mir da nun noch eine Datei oder Bibiothek?

  • Nach einiger Recherche heute denke ich nun das die Bibiothek "unisdt.h" nur unter Unix-System zum einsatz kommt und dort auch automatisch includiert wird.
    Unter folgendem Verweis habe ich gelesen das es möglich ist bzw Leute versuchen ihre eigene Bibiothek dieses Types für Windows zu erstellen: http://stackoverflow.com/quest…td-h-for-windows-visual-c
    Frage ist nun wird die für Windows wirklich gebraucht? Oder kann man das Plugin für Windows vielleicht wie oben angekündigt doch leicht verändern das es dort auch laufen würde?
    Ich habe leider kein überblick wieviel Arbeit dies wäre oder ob dies überhaupt möglich wäre.
    Dieses Wissen habe ich aus Foren und weiß nicht ob es 100% stimmt.
    Aber es wäre schade wenn man nodePush nur unter Unix-Systemen einsetzen könnte.

    • Offizieller Beitrag

    Hallo,


    das die Abhängigkeit nur zur Verbesserung der Sicherheit / dem Schutz vor dem in den Fuß schießen unter Unix-Systemen dient gebe ich dir mal einen Patch, welcher die entsprechende Funktionalität ausbaut:

  • Install hat soweit geklappt :)
    Start auch nachdem ich die config.js zu config (ohne Dateiendung angepasst habe) obwohl hier im Handbuch config.js steht wollte er eine reine config Datei haben.
    Scheint nun zu laufen und unter der externen Adresse erreiche ich mit dem Browser den Server nun mit:

    Code
    Up since: Wed Nov 05 2014 14:45:13 GMT+0100 (Mitteleuropäische Zeit)
    Outbound: 0 now


    Sollte also alles funktionieren :)
    Im ACP gebe ich den Out-Port an da der In-Port eh nur für localhost ist richtig ?

    • Offizieller Beitrag

    Hallo,


    Im ACP gebe ich den Out-Port an da der In-Port eh nur für localhost ist richtig ?

    Der inbound-Port muss nur von PHP erreichen zu sein. Wenn nodePush also auf dem gleichen Server läuft, dann sollte dieser an 127.0.0.1 gebunden werden. Ansonsten wirst du beide nodePush-Eingabefelder anpassen müssen, da es nicht möglich ist unter Windows einen Unix-Domain-Socket zu verwenden. Die Angabe für den inbound-Socket sieht dann etwa wie folgt aus: tcp://localhost:port.

  • Bei Push-Server Host steht nnun http://externeadresse.de:9000 (outbound) (unter dem ist unter der externen adresse auch das oben gezeigt im Browser zu sehen)
    Bei Nachrichten-Adresse muss ich dann tcp://localhost:9001 eintragen (9001 ist mein inbound Port).
    Hab mir schon gedacht das die Unix Nachrichtenadresse unter Windows nicht funktioniert, aber ist das schon alles was da reinmuss? Bei mir steht da ein Pfad in den tmp Ordner.