В инете много чего написано ..Нооо мало у кого понятно Опять же я не буду писать как установить IIS или nodejs Где их официальные сайты и т.д. А что такое IIS и node js ...
Хочу остановиться на том как получилось у меня запустить в первый раз Где я намучался офигеть сколько времени Даже уже не считаю А несколько раз подходил к nodejs и как то все не получалась Даже не понимал в чем проблема Вроде все повторяю и не але
В инете есть два как минимум варианта запуска Один через дополнение iisnode который нужно установить дополнительно в IIS Сейчас не об iisnode - https://github.com/tjanczuk/iisnode Может потом расскажу об этом варианте Там есть свои плюсы и минусы
И так начну с того что IIS установлен и nodejs Версии сами определяйте тут этого не будет У меня самые последние на написание того текста
Все что нужно знать про nodejs Что поможет в понимании дальше настроек и запуска под IIS
Сам nodejs можно запустить по одному и тому же порту (например 3000) но с разных проектов папок одного запускного файла Чаще это server.js или main.js
Как понимаю нет какого то правила в имени файла то что запускать НО при команде npm start будет искать server.js для запуска Либо запускать через команду node имя.js Для запуска более одной сессии нужно ставить дополнительный пакет например pm2
Еще нужно знать об пакетах (модулях) Все хочу их назвать модули как называется сама папка node_modules Почему в описании часто называют пакетами? Это дополнения которые расширяют возможности NODEJS Так как по умолчанию мало что умеет
Добавлю важную информацию При установки пакетов нужных, есть два вида установки ГЛОБАЛЬНЫЙ и локальный внутренний только для конкретного проекта Физически это выглядит так что при глобальном установки дополнения закачивается в основную папку node_modules где и сам node.exe А локальная установка создаться внутри проекта папка node_modules где сам запускной файл server.js Все модули пакеты расширения )) Будут закачиваться туда и только для этого проекта использоваться Вроде можно запускать из других проектов но по умолчанию смысл таков
Команда npm install имя пакета Если нужно глобально то нужно добавить -g в конце команды
В папку в корень или нет, создаем файл например server.js
Запускать скрипт или приложение будем npm start или быстрей node server.js
Нашел на просторах инета несколько примеров
Но прежде чем перейдем к примерам нужно настроить IIS web.config обязательно Иначе примеры без iisnode работать будет только с обязательным указать порт в адресной строке браузера... А это означает что IIS участие в работе скрипта принимать не будет в том что будет на странице
В конфиге iis настроим протокол, адрес и порт По умолчанию скрипты nodejs запускают на 3000 порту
Первый пример хочет пакет express (require("express")) Запустить из папки где скрипт командную консоль (cmd или powershell)
Напишем npm install express Должна создаться папка node_modules там где запустили cmd или powershell и загрузиться нужные пакеты в нее
Добавим в файл server.js
Запускаем скрипт npm start или быстрей node server.js из командной строки (cmd или powershell)
Пишем в браузере адрес и должны увидеть Cannot GET /
Дальше можно добавить .../test и увидим слово Тест
Загружаем еще пакет http
Добавим в файл server.js еще пример по сложнее малость .. Укажем обязательно адрес в нем
Опять из командной строки (cmd или powershell) там где скрипт запускаем скрипт npm start или быстрей node server.js
После запуска скрипты загружаются в память Если отредактировать во время работы server.js то ничего не измениться в работе Будет работать тот вариант который был запущен в начале
Должны увидеть надпись Successfully started a server Если такое есть то то еще можно добавить /overview и /api ...
Идем дальше к примеру кода который показал мне о проблеме безопасности nodejs Загружаем еще пакеты fs path url и http должен уже быть
Нужно в адресной строке написать название файла (пример ../test.txt) и он создаться и читается обратно и выводится на экран содержимое файла
Вот тут самое интересное про безопасность ))) Можно создавать файлы где угодно Выходя за пределы корневой папки сайта Можно редактировать системные файлы ОС Как исправить это косяк ОГРОМНЫЙ ? Я пока не разобрался )))
Хочу остановиться на том как получилось у меня запустить в первый раз Где я намучался офигеть сколько времени Даже уже не считаю А несколько раз подходил к nodejs и как то все не получалась Даже не понимал в чем проблема Вроде все повторяю и не але
В инете есть два как минимум варианта запуска Один через дополнение iisnode который нужно установить дополнительно в IIS Сейчас не об iisnode - https://github.com/tjanczuk/iisnode Может потом расскажу об этом варианте Там есть свои плюсы и минусы
И так начну с того что IIS установлен и nodejs Версии сами определяйте тут этого не будет У меня самые последние на написание того текста
Все что нужно знать про nodejs Что поможет в понимании дальше настроек и запуска под IIS
Сам nodejs можно запустить по одному и тому же порту (например 3000) но с разных проектов папок одного запускного файла Чаще это server.js или main.js
Как понимаю нет какого то правила в имени файла то что запускать НО при команде npm start будет искать server.js для запуска Либо запускать через команду node имя.js Для запуска более одной сессии нужно ставить дополнительный пакет например pm2
Еще нужно знать об пакетах (модулях) Все хочу их назвать модули как называется сама папка node_modules Почему в описании часто называют пакетами? Это дополнения которые расширяют возможности NODEJS Так как по умолчанию мало что умеет
Добавлю важную информацию При установки пакетов нужных, есть два вида установки ГЛОБАЛЬНЫЙ и локальный внутренний только для конкретного проекта Физически это выглядит так что при глобальном установки дополнения закачивается в основную папку node_modules где и сам node.exe А локальная установка создаться внутри проекта папка node_modules где сам запускной файл server.js Все модули пакеты расширения )) Будут закачиваться туда и только для этого проекта использоваться Вроде можно запускать из других проектов но по умолчанию смысл таков
Команда npm install имя пакета Если нужно глобально то нужно добавить -g в конце команды
В папку в корень или нет, создаем файл например server.js
Запускать скрипт или приложение будем npm start или быстрей node server.js
Нашел на просторах инета несколько примеров
Но прежде чем перейдем к примерам нужно настроить IIS web.config обязательно Иначе примеры без iisnode работать будет только с обязательным указать порт в адресной строке браузера... А это означает что IIS участие в работе скрипта принимать не будет в том что будет на странице

XML:
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{CACHE_URL}" pattern="^(http?)://" />
</conditions>
<action type="Rewrite" url="{C:1}://address:3000/{R:1}" />
</rule>
</rules>
</rewrite>
Первый пример хочет пакет express (require("express")) Запустить из папки где скрипт командную консоль (cmd или powershell)
Напишем npm install express Должна создаться папка node_modules там где запустили cmd или powershell и загрузиться нужные пакеты в нее
Добавим в файл server.js
JavaScript:
// Настройки
const setup = {port:3000}
// Подключаем express
const express = require ('express');
// создаем приложение
const app = express ();
// Маршрутизируем GET-запрос http://ваш_сайт/test
app.get('/test', (req, res) => {
res.send('Тест');
});
// Слушаем порт и при запуске сервера сообщаем
app.listen(setup.port, () => {
console.log('Сервер: порт %s - старт!', setup.port);
});
Запускаем скрипт npm start или быстрей node server.js из командной строки (cmd или powershell)
Пишем в браузере адрес и должны увидеть Cannot GET /
Дальше можно добавить .../test и увидим слово Тест
Загружаем еще пакет http
Добавим в файл server.js еще пример по сложнее малость .. Укажем обязательно адрес в нем
JavaScript:
const http = require("http");
const server = http.createServer((req, res) => {
const urlPath = req.url;
if (urlPath === "/overview") {
res.end('Welcome to the "overview page" of the nginX project');
} else if (urlPath === "/api") {
res.writeHead(200, { "Content-Type": "application/json" });
res.end(
JSON.stringify({
product_id: "xyz12u3",
product_name: "NginX injector",
})
);
} else {
res.end("Successfully started a server");
}
});
server.listen(3000, "адрес", () => {
console.log("Listening for request");
});
После запуска скрипты загружаются в память Если отредактировать во время работы server.js то ничего не измениться в работе Будет работать тот вариант который был запущен в начале

Должны увидеть надпись Successfully started a server Если такое есть то то еще можно добавить /overview и /api ...
Идем дальше к примеру кода который показал мне о проблеме безопасности nodejs Загружаем еще пакеты fs path url и http должен уже быть
JavaScript:
// nodejs.org/api for API docs
// Node.js web server
var http = require("http"), //Import Node.js modules
url = require("url"),
path = require("path"),
fs = require("fs");
http.createServer(function(request, response) { //Create server
var name = url.parse(request.url).pathname; //Parse URL
var filename = path.join(process.cwd(), name); //Create filename
var fixwin = filename.replace('\\', '/');//Исправим путь для ОС win
fs.writeFile(fixwin, 'Hello content!', function (err) {
if (err) throw err;
console.log('Saved!');
});
fs.readFile(fixwin, "binary", function(err, file) { //Read file
if(err) { //Tracking Errors
response.writeHead(500, {"Content-Type": "text/plain"});
response.write(err + "n");
response.end();
return;
}
response.writeHead(200); //Header request response
response.write(file, "binary"); //Sends body response
response.end(); //Signals to server that
}); //header and body sent
}).listen(3000); //Listening port
console.log("Server is listening on port 3000."); //Terminal output
Вот тут самое интересное про безопасность ))) Можно создавать файлы где угодно Выходя за пределы корневой папки сайта Можно редактировать системные файлы ОС Как исправить это косяк ОГРОМНЫЙ ? Я пока не разобрался )))