Команда node — это интерпретатор. Сам NodeJS — это не сервер, а среда исполнения, которая, в числе прочего, даёт возможность писать на JS web-серверы, используя встроенные модули NodeJS. Для того, чтобы сделать web-сервер, нужно написать такой файл test.js, в котором будет запускаться сервер с определёнными параметрами и определённым портом. Затем этот сервер запускается командой
node test.js
. Если вы будете напрямую открывать файл test.js из браузера, это не сработает так, как вы хотите, так что да — он вообще не должен быть в public_html.
Пример test.js.
// Импортируется встроенный в NodeJS модуль http,
// который даёт возможность создать web-сервер
const http = require('http');
/**
* Когда делается запрос к этому серверу, вызывается эта функция
*
* @param {module:http.IncomingMessage} request
* @param {module:http.ServerResponse} response
*/
function requestProcessor(request, response) {
switch (request.url) {
case '/':
response.end('Запрошена главная страница');
return;
case '/500':
response.statusCode = 500;
response.end('По просьбам посетителей — ошибка 500');
return;
}
response.end(`Не знаю, как обработать адрес ${request.url}`);
}
// Создаётся сам сервер, в качестве параметра передаётся функция, которая обслуживает запросы
const server = http.createServer(requestProcessor);
// Созданный сервер запускается
server.listen(8888, function() {
console.log('Сервер запущен на 8888-м порту. Откройте http://localhost:8888/ для проверки');
});
В одном JS-файле можно запустить даже больше одного сервера — это всё управляется кодом на JS, а сам NodeJS только помогает этот код запустить.