2013-05-08 13 views
29

Info: Sono molto nuovo su node.JS!Come eseguire il server Node.JS per un'applicazione Web?

Ho scritto un server di esempio in grado di ascoltare le richieste HTTP sulla porta XXXX. Quando eseguo questo server da riga di comando (Windows) sembra funzionare bene. Risponde alle richieste fatte a localhost: XXXX se aperto in un browser.

Domanda: È così che dovrebbe funzionare? Perché il server del nodo venga eseguito, dovrebbe sempre esserci un prompt CMD aperto affinché il server ascolti le richieste? Posso non fare "qualcosa" con IISNode?

Capisco che se faccio una richiesta a un file JS, che è annotato in IISNode come un file Node.JS e che NODE dovrebbe gestirlo; allora avrò il nodo che gestisce la richiesta per me. Tuttavia, questo presuppone che IIS sia il server Web per me e che le richieste specifiche possano essere gestite dal nodo.

Spero di avere un senso qui! :)

+0

Boh su iisnode, ma su Linux/Unix che si desidera eseguire il processo in background utilizzando 'nohup' o [per sempre] (https: // Github. com/nodejitsu/per sempre). Quest'ultimo è ottimo per mantenere l'applicazione in esecuzione anche se si blocca. –

+0

Non ho molta familiarità con Unix. Intendi dire che un prompt della shell è sempre aperto in modo che il server nodo continui a essere in esecuzione? Oppure può essere eseguito in background, come un processo in background, invisibile all'utente –

+0

Sì, esattamente il processo viene eseguito in background. Penso che potresti guardare per sempre, dovrebbe funzionare anche su macchine Windows (ma come ho detto in precedenza, non ho idea se iisnode abbiano tale funzionalità integrata). –

risposta

20

Ho risolto utilizzando un metodo corretto. Sì, IISNode lo è .. Ma nessuno dei commenti è sembrato rispondere a come "eseguire" app.js per diverse applicazioni ospitate sullo stesso IIS (che serve anche PHP, ASPX, ecc.)

Passaggio 1. Modifica il tuo entry-point dell'applicazione di nodo (in genere) app.js per la nuova struttura di URL.

Un'applicazione esplicita presuppone che possiede l'intero spazio URL e inizia gli URL dalla radice in sé, come mostrato:

Default EXPRESS App.js

Edit si app.js a guardare come le seguenti (ma mettere il nome di directory della tua applicazione invece di “aaspass” !!):


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


Ora metti un file web.config nella radice della tua app che assomiglia al seguente (puoi utilizzare questo modello: webconfig).

Modificare nuovamente il file e cambiare il nome "aaspass" nel nome della directory dell'app.


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

Ecco fatto! Puoi farlo per il maggior numero di app richieste e ospitarle sul server SAME.

22

Su Windows avete due opzioni di hosting di applicazioni Node.JS:

  1. Ospita autonomamente il processo node.exe proprio come si farebbe su * nix. Durante lo sviluppo probabilmente lo avvierai dalla riga di comando. Nella produzione si vuole creare un meccanismo che fornisca la gestione della durata del processo attorno a node.exe (ad es. Avviarlo all'avvio del sistema operativo). Il modo più ragionevole di farlo su Windows è utilizzare i servizi di Windows (noti anche come servizi NT). Un componente che può aiutarti a fare ciò è http://nssm.cc/.
  2. Host node.js con IIS utilizzando iisnode (http://github.com/tjanczuk/iisnode). Rispetto al self-hosting questo metodo ha una serie di vantaggi delineati in https://github.com/tjanczuk/iisnode/wiki. Ma vuoi anche esplorare le implicazioni sulle prestazioni (non tutte in realtà cattive): http://tomasz.janczuk.org/2012/06/performance-of-hosting-nodejs.html.
+0

Quando diciamo "host che utilizza IISNode", cosa intendiamo? Includere l'app.js utilizzando

+0

È possibile utilizzare nssm e ottenere l'id utente dell'utente attualmente connesso? – SharpCoder

+1

Se "self-host" e su IIS usando la porta 80 nello stesso momento di node.js Voglio dire che ospita un sito sulla porta 3000 lol – Epirocks

4

Quello che ha funzionato per me:

  1. Install IISNode
  2. Install URL Rewrite module of IIS
  3. Aggiungi file web.config nella vostra app/cartelle Node.js. Ecco il contenuto del file web.config:

    Nel gestore, ho solo bisogno di puntare a app.js (tipico punto di ingresso della vostra applicazione). Non ho apportato modifiche a nessuno dei miei percorsi (non è necessario aggiungere alcun testo).

..

<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>