Документация
Node.js
Node.js все больше завоевывает популярность среди веб-разработчиков. Однако в виду отсутствия хостинговых предложений на данный момент, Node.js остается прерогативой выделенных серверов и VPS. Вобщем-то последнее по карману даже небольшому проекту :)
Более подробно ознакомиться с документацией можно на официальном сайте nodejs.org и на сайте nodebeginner.ru, где есть учебное пособие для начинающих на русском языке.
Как известно, Node.js поддерживает модули. Папка для глобальных модулей: \winginx\nodejs\node_modules\. Модули, установленные в эту папку, доступны во всех скриптах (в рамках сервера Winginx). Вы можете использовать их или создавать копию в домашней директории сайта.
В сборку Winginx включен менеджер модулей NPM, популярный фреймворк Express.js и шаблонизатор Jade.
Для отладки подключен модуль Node-Inspector. Он запускается как Node.js сервер, получить к нему доступ можно по адресу: http://localhost:8080/ (заметим, что он работает только в webkit-совместимом браузере, например, в Google Chrome).
Кроме того, для работы с базами подключены модули MongoDB и MySQL.
В кратце можно сказать, что Node.js, в отличие от того же PHP, не интерпретируется, а компилируется в самостоятельный сервер. А следовательно занимает какой-то порт. В связке с nginx он работает как backend-сервер, отрабатывая динамические запросы, а nginx же занимается статикой.
Рассмотрим пример. Возьмем за основу пример Node.js-сервера с сайта разработчика:
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/');
Сохраним этот скрипт в файл home/nodejs.local/server.js.
Вот так будет выглядеть примерный конфиг в nginx:
server { listen 127.0.0.1:80; server_name nodejs.local www.nodejs.local; root home/nodejs.local/public_html; index index.html; log_not_found off; charset utf-8; location / { if (!-e $request_filename) { proxy_pass http://localhost:1337; } } }
Обратите внимание на порт, он должен совпадать в nginx с тем, на что завязывается Node.js-скрипт.
Осталось сообщить Winginx о том, что нужно запустить наш сервер на Node.js. Сделать это можно с помощью программы Winginx TM или вручную, добавив строчку в конфиг nodejs\node.conf:
server = home/nodejs.local/server.js
Перезапустив Winginx, можно обратиться в браузере по адресу http://nodejs.local/ к нашему сайту. (Не забыв, конечно же, про добавление домена nodejs.local в файл hosts).
Можно ли использовать Node.js совместно с PHP в рамках одного сайта?
Конечно, можно! Для этого нужно определить, что мы будем отдавать на обработку PHP, а что на Node.js.
Это может быть отдельный урл для Node.js-сервиса. Например, мы хотим, чтобы весь сайт был на PHP, а чат обслуживался на Node.js по адресу http://site.local/chat/. Значит, нужно создать локейшн /chat/ и передавать управление Node.js (нужно учесть, что в папке /chat/ могут быть картинки и прочие статичные файлы для чата, поэтому нужно отдавать Node.js только те запросы, файлов на которых нет).
Посмотрите пример конфигурации.
Рекумендуемые ресурсы
EXPRESS-JS.RU — Русскоязычный сайт по Node.js, Express.js и Jade
NODEGUIDE.RU — Руководство, уроки и многое другое по Node.js
NODEBEGINNER.RU — Node.js для начинающих