30 октября 2010 в 11:46

Пошаговая установка Node.js на Windows без виртуалок



Эта статья предназначена для тех, кого бесят мильён левых служб и драйверов, которые ставят любые виртуалки. Тем, кто будут ставить доп. пакеты Node.js
Все остальные могут скачать скомпилированный Node.js node-js.prcn.co.cc
Или же установить Node.js из-под виртуалки nodejs.ru/25

Прошу под кат


Совсем без виртуалок, конечно, не обойдется попутно нам придется поставить Cygwin. Который лишен левых windows-служб, что меня неимоверно порадовало.

Качаем Cygwin setup.exe — 670 Кб cygwin.com/setup.exe

Установка Cygwin


Запускаем, предложит выбрать путь установки, лучше ставить в c:\cygwin\
Далее предложит выбрать путь куда будут заливаться пакеты, мой выбор пал на c:\cygwin\p\
Далее предложит выбрать зеркало, откуда будет качать пакеты — я выбрал ftp.linux.kiev.ua — скорость отдачи очень радует

Теперь нам нужно установить необходимые для установки и работы Node.js пакеты
Dev — ставим все или только пакеты ниже
— gcc g++ C++ compiler
— gcc mingw-g++
— gcc4-4++ G++ subpackage
— git
— make
— openssl
— pkg-config
— zlib-devel
Python – ставим все
Web
— wget

Окно выбора пакетов примерно такое:


Установщик соберет зависимости и установит все минут за 5 при отдаче в 8 Мбит/сек


Патчим rebaseall


Открываем файл C:\сygwin\bin\rebaseall не виндузовым блокнотом

Если имя пользователя не латинское (прим. Администратор), то находим
TmpDir="${TMP:-${TEMP:-/tmp}}"
Заменяем на
TmpDir="/tmp"

Если работаем под 7й виндой, то находим
sed -e '/cygwin1\.dll$/d' -e '/cyglsa.*\.dll$/d' -e 's/^/\//' >"$TmpFile"
Заменяем на
sed -e '/cygwin1\.dll$/d' -e '/cyglsa.*\.dll$/d' -e 's/^/\//' -e '/\/sys-root\/mingw\/bin/d' >"$TmpFile"

Больше ничего патчить не нужно

Патчим библиотеки


Закрываем Cygwin если открыли
Запускаем командную строку windows
в ней вбиваем C:\сygwin\bin\ash.exe
Вбиваем руками ./rebaseall –v

В результате мы увидим что-то такое:
/usr/lib/dde1.2/tcldde12.dll: new base = 69050000, new size = 20000
... пропущена тыщастрок ...
/usr/lib/reg1.1/tclreg11.dll: new base = 69030000, new size = 20000
/usr/bin/cygz.dll: new base = 69000000, new size = 30000

Закрываем виндузовую командную строку

Запускаем Cygwin


Запускаем Cygwin при первом запуске он создаст каталог для текущего пользователя windows в своей среде
у меня c:\cygwin\home\Администратор\



Ставим Node.js


Качаем последнюю стабильную версию и устанавливаем

$ wget http://nodejs.org/dist/node-latest.tar.gz
$ tar xvf node-latest.tar.gz
$ cd node-v0.2.4/
$ ./configure
$ make
$ make install

Если ругается на openssl
./configure --without-ssl

Пробуем запустить Node.js
$ node --version
v0.2.4

Создаем тестовое приложение для Node.js


Создаем файл c:\cygwin\home\Администратор\www\server.js
var http = require('http');

http.createServer(function (request, response) {
  response.writeHead(200, {'Content-Type': 'text/html'});
  response.end('<b>Hello World from Cygwin</b>');
}).listen(8124);

console.log('Server running at http://127.0.0.1:8124/');

Запускаем наш сервер


$ node /home/Администратор/www/server.js

Тут может заругаться фаерволл windows — разрешаем все, что спросит
Открываем 127.0.0.1:8124
Если вы увидели Hello World from Cygwin значит у вас все получилось, поздравляю.

Прочие фиксы


Для того, чтобы Node.js мог работать с внешними DNS, нужно создать файл /etc/resolv.conf и прописать в него
nameserver 8.8.8.8
nameserver 8.8.4.4

Это адреса Google Public DNS

По мотивам
codebetter.com/blogs/matthew.podwysocki/archive/2010/09/07/getting-started-with-node-js-on-windows.aspx
blog.brev.name/2010/09/nodejs-on-windows-7-under-cygwin.html
Mikhail Davydov @azproduction
карма
450,5
рейтинг 0,0
Похожие публикации
Самое читаемое Разработка

Комментарии (19)

  • –4
    чего только на хабре не прочитаешь)))
  • 0
    Спасибо за топик, будет полезным. Какие-то нестандартные патчи :-)
    Не пробовали собирать третью линейку?
    • 0
      из-под cygwin ругается на jsmin.py, версия не стабильна все может быть. Под линуксом не пытался.
      • 0
        Под линуксом я таки собрал готовую к разработки аддонов версию чуть после v0.3.0, но не без пары патчей. Надеюсь в v0.3.1 всё устаканится.
  • +13
    Тем, кто не понял о чем тема, как и я, по ссылке есть очень хороший текст:

    «О проекте node.js

    Учите английский, блядь! Это серверный однопоточный джаваскрипт-движок на событиях (libev), состоящий из гугловского якобы высокопроизводительного JIT-компилятора V8 и библиотеки асинхронного ввода-вывода к нему. В библиотеке присутствует HTTP-сервер, что позволяет получить что-то в духе эрланговского MochiWeb и питоновского TornadoWeb, но позволяющее писать клиентский (браузерный/AJAX) и серверный ('cкрипты') код на одном языке. Ну и конечно геморрой в стиле mod_perl + POE вам обеспечен. Тем не менее, говорят, это прогрессивно и круто. (Шутка) „
  • +1
    Спасибо за полезную многим статью! Сам использую node.js в некоторых проектах с YUI 3.
  • 0
    А дебажить сие представляется возможным?
  • +1
    похоже это больше статья по установке cygwin
  • +1
  • 0
    Использовать Xen, он позволит сделать виртуализацию без установки дополнительных драйверов в HVM-домен с windows.
  • 0
    Добавьте, пожалуйста, тег «javascript».
  • 0
    не ставить левых служб — в лес не ходить
  • 0
    Cygwin — это зло и жесть. Я все же поставил virtual box и debian, поднял samba и доволен теперь как слон!
  • +1
    а как насчет npm?
    • +1
      npm, kiwi или seedjs это уже решает каждый сам
      npm ставится как и все остальное, но без следующего фикса не встанет:
      Cygwin internally uses Windows for DNS queries. node.js uses the c-ares library that relies on /etc/resolv.conf. Cygwin ships with an empty /etc/resolv.conf. In order to enabled networking from your scripts, add these IPs to the file (Google Public DNS):
      $ vim /etc/resolv.conf

      nameserver 8.8.8.8
      nameserver 8.8.4.4
  • +2
    разрабатывать на виндовс-машине то, что потом все равно будет крутится под линухом — ССЗБ
  • 0
    если вам как и мне не удался билд:
    make
    ......
    Build failed: -> task failed (err #2): {task: libv8.a SConstruct -> libv8.a}

    то поможет:
    export SHELL=/bin/bash

    а потом повторить:
    make
  • 0
    спасибо, очень помогло.(думал не смогу установит никогда)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.