web-dev-qa-db-ja.com

WebアプリケーションでNode.JSサーバーを実行する方法は?

情報:node.JSが初めてです!

ポートXXXXでhttpリクエストをリッスンできるサンプルサーバーを作成しました。このサーバーをコマンドライン(Windows)から実行すると、うまくいくようです。ブラウザで開かれたときにlocalhost:XXXXに対して行われたリクエストに応答します。

質問:これはどのように機能するはずですか?ノードサーバーを実行するには、サーバーが要求をリッスンするためのCMDプロンプトを常に開いている必要がありますか? IISNodeで「何か」を行うことはできませんか?

IISNodeでNode.JSファイルとして記録されているJSファイルにリクエストを送信し、NODEがそれを処理する必要があることを理解しています。 Node=私のためにリクエストを処理します。しかし、これはIISが私のためのウェブサーバーであり、特定のリクエストはNodeによって処理できると仮定します。

ここで理にかなっていることを願っています! :)

29

適切な方法で解決しました。はい、IISNodeです。しかし、同じIIS(これはPHP、ASPXなどにも対応しています)

手順1.新しいURL構造に合わせて、ノードアプリケーションのエントリポイント(通常)app.jsを編集します。

エクスプレスアプリは、次のように、URLスペース全体を所有し、ルート自体からURLを開始することを前提としています。

Default EXPRESS App.js

App.jsを次のように編集します(ただし、「aaspass」の代わりにアプリのディレクトリ名を入力してください!!):


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


次に、次のようなweb.configファイルをアプリのルートに配置します(このテンプレートはwebconfigを使用できます)。

再びファイルを編集し、「aaspass」という名前をアプリのディレクトリ名に変更します。


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

それでおしまい!必要な数のアプリでこれを実行し、同じサーバーでホストできます。

21

Windowsでは、node.jsアプリケーションをホストする2つのオプションがあります。

  1. * nixと同じように、node.exeプロセスをセルフホストします。開発中は、おそらくコマンドラインから起動するだけです。実稼働環境では、node.exeのプロセスライフタイム管理を提供するメカニズムを考え出します(たとえば、OSの起動時に起動します)。 Windowsで最も合理的な方法は、Windowsサービス(NTサービスとも呼ばれます)を使用することです。これを行うのに役立つコンポーネントは http://nssm.cc/ です。
  2. Iisnode( http://github.com/tjanczuk/iisnode を使用して、IIS)でnode.jsをホストします。セルフホスティングと比較して、このメソッドには、 https://github.com/tjanczuk/iisnode/wiki で説明されている利点。ただし、パフォーマンスへの影響も調べたい(実際にはすべてが悪いわけではない): http:// tomasz.janczuk.org/2012/06/performance-of-hosting-nodejs.html
23
Tomasz Janczuk

私のために働いたもの:

  1. IISNodeのインストール
  2. IISのURL書き換えモジュールをインストールする
  3. Node.jsアプリ/フォルダーにweb.configファイルを追加します。 web.configファイルの内容は次のとおりです。

    ハンドラーでは、app.js(アプリケーションの典型的なエントリポイント)をポイントするだけです。 どのルートにも変更を加えていません(テキストを追加する必要はありません)。

..

<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

Windowsを使用している場合、IISでNode.jsを実行できます(おそらくそうすべきです)。

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

2
Hector Correa