Как запустить сервер Node.JS для веб-приложения?
Информация: я очень новичок в node.JS!
Я написал пример сервера, который может прослушивать HTTP-запросы на порт XXXX. Когда я запускаю этот сервер из командной строки (Windows), он работает хорошо. Он отвечает на запросы, сделанные на localhost: XXXX при открытии в браузере.
Вопрос: Так ли это должно работать? Для запуска сервера node должна ли всегда появляться приглашение CMD для сервера для прослушивания запросов?
Могу ли я что-то делать с IISNode?
Я понимаю, что если я сделаю запрос к JS файлам, который отмечен в IISNode как файл node.JS и что node должен его обрабатывать; то у меня будет node обработка запроса для меня.
Но тогда это предполагает, что IIS - это веб-сервер для меня, и что конкретные запросы могут обрабатываться с помощью node.
Надеюсь, у меня есть смысл здесь!:)
Ответы
Ответ 1
Я решил это, используя правильный метод. Да, IISNode это.. Но ни один из комментариев, казалось, не отвечал, как "запускать" app.js для разных приложений, размещенных на одном и том же IIS (который также обслуживает PHP, ASPX и т.д.)
Шаг 1.
Измените свою входную точку приложения node (обычно) app.js для новой структуры URL.
Экспресс-приложение предполагает, что оно владеет всем пространством URL-адресов и запускает URL-адреса из самого корня, как показано:
![Default EXPRESS App.js]()
Отредактируйте приложение app.js, чтобы оно выглядело следующим образом (но вместо имени "aaspass" вместо имени "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]()
Вот оно! Вы можете сделать это как можно больше приложений и разместить их на сервере SAME.
Ответ 2
В Windows у вас есть два варианта хостинга приложений node.js:
- Самостоятельный процесс node.exe, как и на nix. Во время разработки вы, вероятно, просто запустите его из командной строки. В производстве вы хотите создать механизм, который обеспечит управление жизненным циклом процесса вокруг node.exe(например, запустите его при запуске ОС). Самый разумный способ сделать это в Windows - использовать службы Windows (также известные как службы NT). Компонент, который может вам помочь, - http://nssm.cc/.
- Host 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.
Ответ 3
Что сработало для меня:
- Установить IISNode
- Установить модуль перезаписи URL-адресов IIS
-
Добавьте файл 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>
Ответ 4
Если вы находитесь в Windows, вы можете (и, вероятно, должны) запустить Node.js в IIS:
http://www.hanselman.com/blog/InstallingAndRunningNodejsApplicationsWithinIISOnWindowsAreYouMad.aspx