понедельник, 23 сентября 2013 г.

Git, nodejs-проект и SSH. Установка, разворачивание, запуск в фоне

Итак, поступил заказ на "допиливание" проекта, или же вы купили новый девайс, на котором планируете вести разработку любимого Web-приложения параллельно с основным или надо быстро поднять окружение для разработки на Node.js с уже имеющимся кодом или... Или 1000 и одна причина по которой может резко понадобиться разворачивание проекта на машине. Речь, как можно догадаться из заголовка, пойдет о таких вещах: Nodejs, Git, Ssh. Начнем-с.
В первую очередь оговорюсь, все проделывалось в Debian/Ubuntu системе, хотя немного изменив курс туториала, это применимо и к другим дистрибутивам и даже к Windows :)

  • Ставим Git если его еще нет в системе (для Винды это  вообще очен мажно с ним в придачу можно поставить чудо-юдо MingGW)
    $ sudo apt-get install git
    
  • На всякий случай обновляем репы
    $ sudo apt-get update
    
  • Вот эта штука очень полезная, я про python-software-properties. Она содержит в себе утилиту add-apt-repository и что самое грустое что если у вас сервер Ubuntu то скорее всего у вас ее нет, если десктоп, то можно и не ставить.
    $ sudo apt-get install python-software-properties python g++ make # Ставим зависимости
    $ sudo add-apt-repository ppa:chris-lea/node.js # Добавляем репозиторий node.js
    $ sudo apt-get update # Обновляем репы
    $ sudo apt-get install nodejs # Ставим node.js последней версии
    
  • Далее переходим в директорию в которой будем разворачивать проект
    $ cd /var/www # Эта директория указана для примера и может быть любой другой.
    
  • Далее надо сгенерировать SSH ключ
    $ ssh-keygen -t rsa
    
    Если вы не указывали никакого другого пути для сохранения ключа то вы его можете найти в
    $ ~/.ssh/id_rsa.pub
    
  • Копируем его содержимое и добавляем в сервис (или в ~/.ssh/authorized_key на сервере от куда мы будем тянуть код проекта) например это может быть Github, Bitbaсket, Heroku и др. У меня это Heroku
  • Переходим в папку для проекта у меня это /var/www и клонируем проект
    $ cd /var/www
    $ git clone git@heroku.com:yourproject.git ./
    
  • После чего не забываем установить сопутствующие модули, не думаю что у вас их не будет
    $ npm install
    
  • И если вы хотите "повешать" процесс на "прослушку" 80-го порта, то не забудте это сделать от рута, т.к. мы же все помним что порты ниже 1024 требуют прав рута.
    $ sudo NODE_ENV=staging PORT=80 node app.js
    

А еще нам может понадобиться запустить ноду в фоне, аля процесс-демон. Сразу скажу тут не будет ничего про демоны, а будет про интересный модуль supervisor и "финт" ушами.

Итак для того чтобы запустить ноду в фоне надо выполнить следующую команду. Предварительно создайте директорию для логирования вывода процесса, ну, например, /home/macho/logs/ или /var/logs/yourproject

$ sudo npm install supervisor -g # Устанавливаем глобально модуль supervisor
$ sudo NODE_ENV=staging PORT=80 supervisor app.js > /var/logs/yourproject &
Собственно команда выше запустит ноду в фоне и вы можете насладится результатами работы вашего приложения на 80-м порту.
Удачи, надеюсь пост окажет непосильную помощь, в освоении node.js