Как запустить сервер Node.JS для веб-приложения?

Информация: я очень новичок в node.JS!

Я написал пример сервера, который может прослушивать HTTP-запросы через порт XXXX. Когда я запускаю этот сервер из командной строки (Windows), он, кажется, работает хорошо. Он отвечает на запросы, сделанные localhost: XXXX при открытии в браузере.

Вопрос: это как это должно работать? Чтобы сервер узла работал, всегда ли должен быть открыт запрос CMD, чтобы сервер мог прослушивать запросы? Могу ли я не делать "что-то" с IISNode?

Я понимаю, что если я делаю запрос к файлам JS, который отмечен в IISNode как файл Node.JS и что NODE должен обрабатывать его; тогда у меня будет Node, обрабатывающий запрос для меня. Но тогда это предполагает, что IIS является веб-сервером для меня, и что конкретные запросы могут обрабатываться Node.

Я надеюсь, что здесь есть смысл!:)

4 ответа

Решение

Я решил это, используя правильный метод. Да, IISNode это так. Но ни один из комментариев, по-видимому, не отвечал на вопрос о том, как "запустить" app.js для разных приложений, размещенных на одном и том же IIS (который также обслуживает PHP, ASPX и т. Д.).

Шаг 1. Отредактируйте точку входа приложения вашего узла (обычно) app.js для новой структуры URL.

Экспресс-приложение предполагает, что оно владеет всем пространством URL-адресов и запускает URL-адреса из самого корня, как показано ниже:

EXPRESS App.js по умолчанию

Отредактируйте ваш app.js так, чтобы он выглядел следующим образом (но вместо имени "aaspass" укажите имя каталога ВАШЕГО приложения!!):


app.js, размещенный на IIS


Теперь поместите файл web.config в корень вашего приложения, который выглядит следующим образом (Вы можете использовать этот шаблон: webconfig).

Снова отредактируйте файл и измените имя "aaspass" на имя каталога вашего приложения.


Модифицированный We.Config для добавления правил для перенаправления в соответствующий app.js

Это оно! Вы можете сделать это для любого количества приложений и разместить их на одном и том же сервере.

В Windows у вас есть два варианта размещения приложений node.js:

  1. Самостоятельно разместите процесс node.exe, как если бы вы *nix. Во время разработки вы, вероятно, просто запустите его из командной строки. В производственном процессе вы хотите создать механизм, который обеспечит управление временем жизни процесса для node.exe (например, запустить его при запуске ОС). Наиболее разумный способ сделать это в Windows - это использовать Windows Services (также известные как NT Services). Компонент, который может помочь вам сделать это, http://nssm.cc/.
  2. Разместите узел node.js в IIS с помощью iisnode ( http://github.com/tjanczuk/iisnode). По сравнению с самостоятельным размещением этот метод имеет ряд преимуществ, описанных в https://github.com/tjanczuk/iisnode/wiki. Но вы также хотите изучить последствия для производительности (на самом деле не все они плохие): http://tomasz.janczuk.org/2012/06/performance-of-hosting-nodejs.html.

Что сработало для меня:

  1. Установить IISNode
  2. Установить модуль перезаписи URL IIS
  3. Добавьте файл web.config в ваше приложение / папку Node.js. Вот содержимое файла 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, вы можете (и, вероятно, должны) запустить Node.js под IIS:

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

Другие вопросы по тегам