1

iisnode を使用して IIS で Etherpad Lite を実行するにはどうすればよいですか?

(さらに調査した後、2013-04-23 に更新)

私の手順 (最初の試行)

  1. Etherpad Lite をインストールc:\epliteして、start.bat で実行したときに動作することを確認します。
  2. IIS 用の URL 書き換えモジュールをインストールします (iisnode に必要)。
  3. iis ノードをインストールします。
  4. IIS_IUSRS に全体のフル コントロールを付与しますc:\eplite(やり過ぎですが、アクセスの問題がないことを確認するため)。
  5. を指す IIS Web サイトを構成しますc:\eplite
  6. に移動c:\eplite\node_modules\ep_etherpad-lite\Web.configc:\epliteます。

IE を開くと、etherpad のようなものが表示されますが、機能しません。メイン ページにはテキストがなく (フィールドとボタンのみ)、パッドを開こうとすると、テキストを含むパッド インターフェイスが機能しなくなります。

An error occured while loading the pad
Invalid argument. in http://localhost/static/js/l10n.js (line 1)

私の手順(ここでの議論を読んだ後、2回目の試行)

7.settings.json の編集: delete port

8.c:\eplite\start_iisnode.bat を作成します。

cd c:\eplite
node "c:\Program Files\iisnode\interceptor.js" "c:\eplite\node_modules\ep_etherpad-lite\node\server.js"

9.次の行を Web.Config に追加します。

<iisnode nodeProcessCommandLine="c:\eplite\start_iisnode.bat" />

IE を開くと、今度は正しいスタート ページが表示されます。パッドを開くと、次のテキストを含むパッド インターフェイスが機能しなくなります。

An error occured while loading the pad
The module at "ep_etherpad-lite/static/js/rjquery" does not exist. in http://localhost/static/js/require-kernel.js (line 1)

プロセス モニターによると、次のパスでこのモジュールを見つけようとします。

C:\eplite\node_modules\ep_etherpad-lite\static\pipe\fb92fd16-78e4-4f00-bac4-6a4935ebd0d4\static\plugins\ep_etherpad-lite\static\js\rjquery.js

他に試したこと

  1. 手順 1 ~ 4 + c:\eplite\node_modules\ep_etherpad-lite (Web.config の場所) を指す IIS Web サイトを構成 + node_modules\ep_etherpad-liteWeb.Config のすべての場所からパスを削除します。結果は、元の手順 1 ~ 6 と同じです。

  2. 手順 1 ~ 4、7 ~ 9 + c:\eplite\node_modules\ep_etherpad-lite (Web.config の場所) を指す IIS Web サイトを構成します + node_modules\ep_etherpad-liteWeb.Config のすべての場所からパスを削除します。結果は、元の手順 1 ~ 9 と同じです。

バージョン情報

installOnWindows.bat でビルドされた「マスター」コード ブランチ (最新リリースは 1.2.10) の Etherpad Lite。

ノード バージョン 0.8.4 x64、iisnode バージョン 0.2.4 x64。

Windows 8 で実行されます。

4

1 に答える 1

0

あなたが言及したその議論であなたや他の人の返信を読んだ後、私はそれを機能させましたが、それは完璧な解決策ではなく、いくつかのハードコーディングされたオプションがあります.

最初の 6 つのステップは、あなたのものと同じです。

ステップ 7 では、次のステップで使用されるため、settings.json のポートを削除しないでください。

手順 8 と 9 は必要ありませんが、@ghost の投稿に示されているように、web.config の内容を次のように変更できます。

<configuration>
  <system.webServer>
    <handlers>
      <add name="iisnode" path="server.js" verb="*" modules="iisnode" />
    </handlers>
    <rewrite>
      <rules>
        <rule name="LogFile" patternSyntax="ECMAScript" stopProcessing="true">
          <match url="iisnode" />
          <action type="Rewrite" url="node_modules/ep_etherpad-lite/node/iisnode" />
        </rule>
        <rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true">
          <match url="^server.js\/debug[\/]?" />
        </rule>
        <rule name="StaticContent">
          <action type="Rewrite" url="public{{REQUEST_URI}}" />
        </rule>
        <rule name="DynamicContent">
          <conditions>
            <add input="{{REQUEST_FILENAME}}" matchType="IsFile" negate="True" />
          </conditions>
          <action type="Rewrite" url="server.js" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

その後、etherpad のルート パス (例: c:\eplite) から実際の server.js ファイル (C:\eplite\node_modules\ep_etherpad-lite\node\server.js) へのシンボル リンクを作成します。これはMKLINKを使用して実行できます。この例では、これを cmd に入力できます。

mklink c:\eplite\server.js C:\eplite\node_modules\ep_etherpad-lite\node\server.js

「これにより、奇妙なパス/モジュールが見つからない問題のいくつかが解決されます。それ以外の場合は、ノードが発生します。」次に、http-proxy モジュールを etherpad-lite に追加する必要があります。cmd で現在のドキュメントを C:\eplite\node_modules\ep_etherpad-lite に設定し、npm update & npm install http-proxyを実行して、最後にこれらのコードを server.js の先頭に配置します。

var http = require('http'),
    httpProxy = require('http-proxy');

httpProxy.createProxyServer({target:'http://localhost:9001'}).listen(process.env.PORT); 

ターゲット パスのポートは、setting.json のポートと同じである必要があることに注意してください。そうしないと、IIS でバインドされたパスから etherpad サイトに到達できません。

ハードコードまたはターゲット パスを settings.port に置き換えて削除しようとしましたが、これは機能せず、asyns.waterfall 部分の前に置くとnpm.load() が必要というエラーが発生します。ayns.waterfall 内の任意のコールバック関数にプロキシ作成コードを配置すると、Error: connect EADDRNOTAVAIL が発生します。IIS と etherpad を統合するための他のより良いソリューションがあるかどうか疑問に思っていました。ありがとう!。

私の環境は、開発ブランチの Win7 + Node.Js 0.10 + IIS7 + iisnode v0.2.16 + etherpad Lite です (最新リリースは 1.4.10 でした)

于 2014-10-15T21:57:16.223 に答える