Derby.js deploy на Amazon EC2

Интенсивное развитие облачных сервисов не оставляет равнодушным. Нашe внимание остановилось на сервисе Amazon — Elasctic Cloud Compute. Возникла задача развернуть проект node.js использующий Derby. Amazon Elastic Beanstalk так же поддерживает node.js, однако мы ограничимся только сервисом Amazon EC2. Кроме того «из коробки» Amazon Elastic Beanstalk предлагают Amazon Linux с предуставновленным node.js + nginx. В нашем случае Amazon Linux не подходит, версия node.js и связка node.js+nginx также.,

Создание инстанса и коннект к EC2 серверу


Предполагается, что вы зарегистрированы в AWS, и имеете доступ в AWS Managment Console.
Запускаем EC2 Instance:
  1. Заходим в AWS Managment Console
  2. Выбираем регион (в нашем случае US East (N.Virginia) )
  3. Переходим Services -> Compute & Nerworking -> EC2
  4. Launch Instance: Выбираем Ubuntu Server 13.04 x64, настраиваем ключи, и другие необходимые параметры, в т.ч. Instance Type (в нашем случае t1.micro)
  5. После создание в списке инстансов наблюдаем как наш сервер получит state running
  6. Соединяемся с сервером по ssh: для этого в списке инстансов нажимаем правой кнопкой на нужном, выбираем Connect -> Connect with a standalone SSH Client
    Будет что-то типа:
    $ ssh -i yourkey.pem ubuntu@ec2-184-119-234-139.us-east-1.compute.amazonaws.com
    
  7. Коннектимся к серверу по параметрам полученым в пункте 6.

Мы будем использовать такую связку: node.js+derby+redis+mongodb
Последовательно установим нужные пакеты.

Устанавливаем Node.js.


Для Derby.js будем использовать версию node.js 0.10.17
  1. Качаем исходники:
    $ wget http://nodejs.org/dist/v0.10.17/node-v0.10.17.tar.gz
    
  2. Распаковываем:
    $ tar -xvf node-v0.10.17.tar.gz
    $ cd  node-v0.10.17
    
  3. Устанавливаем:
    	$ sudo apt-get -y install checkinstall
    	$ checkinstall -D --install=no --nodoc --pkgversion=0.10.17 --pkgname="Node.js 0.10.17"
    	$ sudo dpkg -i node*.deb
    	
  4. Устанавливаем DerbyJS:
    $ sudo npm install -g derby
    


Устанавливаем Redis 2.6.16


  1. Скачиваем:
    $ wget http://download.redis.io/releases/redis-2.6.16.tar.gz
    
  2. Распаковываем:
    $ tar -xvf redis-2.6.16.tar.gz
    $ cd redis-2.6.16
    
  3. Устанавливаем:
    $ sudo checkinstall -D --install=no --nodoc --pkgversion=2.6.16 --pkgname="Redis 2.6.16"
    $ sudo dpkg -i redis*.deb
    
  4. Настраиваем
    $ sudo mkdir /etc/redis
    $ sudo mkdir /var/redis
    $ sudo cp utils/redis_init_script /etc/init.d/redis
    $ sudo cp redis.conf /etc/redis/6379.conf
    $ sudo vi /etc/redis/6379.conf
    
    указываем параметры
    daemonize yes
    logfile /var/log/redis.log
    dir /var/redis/
    
    сохраняем файл
  5. Запускаем сервис:
    $ sudo service redis start
    
  6. Добавляем в автозагрузку:
    $ sudo update-rc.d redis defaults
    
  7. Проверяем:
    $ redis-cli
    redis 127.0.0.1:6379> ping
    PONG
    redis 127.0.0.1:6379> exit
    


Устанавливаем MongoDB


  1. Установка:
    sudo apt-get -y install mongodb
    
  2. Проверяем статус:
    $ service mongodb status
    
    Пример ответа:
    mongodb start/running, process 24815

Создаем приложение Derby


  1. Создание
    $ mkdir ~/www
    $ cd ~/www
    $ derby new myapp
    $ cd myapp
    
  2. Проверяем запуск:
    $ nmp start
    


Запускаем как демон


Пожалуй один из простых способов:
$ cd ~/www/myapp
$ nohup node server.js &
Также можно воспользоваться supervisord или другой тулзой.

Ссылки / источники


AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 10

    0
    Неделя Derby.js на хабре :-)

    Как вам Derby? С чем до этого работали?

    Что у вас за приложение? Где можно посмотреть?

    Пишите еще.
      0
      Спасибо.
      Project Managment system.На данный момент в стадии разработки.
      В нашем случае реализована связка БД с внешними сервисами.В частности — Amazon Elastic Cache (Redis), и другой сервис MongoDB также в инфраструктуре Amazon (не указываю в целях избегания рекламы).
      К сожалению пока что Amazon не поддерживает MongoDB как свой сервис.
      Derby.js — пока впечатляет. Knockout.js, Backbone.js
      Meteor vs Derby — был сделан выбор в пользу Derby.js
      Derby явно не хватает качественной документации, однако уверен, что у него отличное будущее благодаря таким энтузиастам как вы.
        0
        Спасибо на добром слове. И благодаря таким энтузиастам как вы тоже.

        Мы с нетерпениям ждем ссылки на проект, новых статей и вашего участия в комментариях.
        0
        А для Heroku аналогичную статью напишете?
          0
          Heroku не поддерживает sticky-sessions. Это значит, что вы не сможете мастабировать (запустить больше одного дино) Derby в нем.

          Рекомендую альтернативы: https://www.nodejitsu.com/ и https://modulus.io/.
            0
            Что есть sticky-sessions? В двух словах.
              0
              Когда все запросы от данного клиента обрабатывает один определенный node.js процесс. А не каждый раз разный.
            0
            Возможно этот вариант подойдет: derbyjs.com/#deploy_to_heroku
            0
            Прикольно, но где же тут deploy? Вот к примеру, как выложить новую версию? Если юзаем aws, то где про настройку автомасштабирования?

            И еще я не совсем понял, почему не подходит amazon linux.
              0
              Я писал про deploy на Amazon EC2, а не масштабирование в инфраструктуре AWS. Тема именно так и звучит.
              1. У вас есть какие-то сложность подключить Amazon Elastic Load Balancer, подключить Amazon Elasic Cache, настроить Amazon SNS, подключить Amazon CloudWatch, Натсроить AutoScaling, вынести css/js/images на Amazon S3+CloudFront?
              2. У вас есть сложность настроить репозиторий git для обновлений версий на сервере?

              Если с этим действительно есть сложности, я готов написать пост как это сделать, хотя это все и изложено в документации AWS.
              По поводу Amazon Linux. Вы действительно считаете, что он ничем не отличается от Ubuntu 13.04?

              Only users with full accounts can post comments. Log in, please.