情報:node.JSが初めてです!
ポートXXXXでhttpリクエストをリッスンできるサンプルサーバーを作成しました。このサーバーをコマンドライン(Windows)から実行すると、うまくいくようです。ブラウザで開かれたときにlocalhost:XXXXに対して行われたリクエストに応答します。
質問:これはどのように機能するはずですか?ノードサーバーを実行するには、サーバーが要求をリッスンするためのCMDプロンプトを常に開いている必要がありますか? IISNodeで「何か」を行うことはできませんか?
IISNodeでNode.JSファイルとして記録されているJSファイルにリクエストを送信し、NODEがそれを処理する必要があることを理解しています。 Node=私のためにリクエストを処理します。しかし、これはIISが私のためのウェブサーバーであり、特定のリクエストはNodeによって処理できると仮定します。
ここで理にかなっていることを願っています! :)
適切な方法で解決しました。はい、IISNodeです。しかし、同じIIS(これはPHP、ASPXなどにも対応しています)
手順1.新しいURL構造に合わせて、ノードアプリケーションのエントリポイント(通常)app.jsを編集します。
エクスプレスアプリは、次のように、URLスペース全体を所有し、ルート自体からURLを開始することを前提としています。
App.jsを次のように編集します(ただし、「aaspass」の代わりにアプリのディレクトリ名を入力してください!!):
次に、次のようなweb.configファイルをアプリのルートに配置します(このテンプレートはwebconfigを使用できます)。
再びファイルを編集し、「aaspass」という名前をアプリのディレクトリ名に変更します。
それでおしまい!必要な数のアプリでこれを実行し、同じサーバーでホストできます。
Windowsでは、node.jsアプリケーションをホストする2つのオプションがあります。
私のために働いたもの:
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>
Windowsを使用している場合、IISでNode.jsを実行できます(おそらくそうすべきです)。
http://www.hanselman.com/blog/InstallingAndRunningNodejsApplicationsWithinIISOnWindowsAreYouMad.aspx