Интенсивное развитие облачных сервисов не оставляет равнодушным. Наш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:
- Заходим в AWS Managment Console
- Выбираем регион (в нашем случае US East (N.Virginia) )
- Переходим Services -> Compute & Nerworking -> EC2
- Launch Instance: Выбираем Ubuntu Server 13.04 x64, настраиваем ключи, и другие необходимые параметры, в т.ч. Instance Type (в нашем случае t1.micro)
- После создание в списке инстансов наблюдаем как наш сервер получит state running
- Соединяемся с сервером по ssh: для этого в списке инстансов нажимаем правой кнопкой на нужном, выбираем Connect -> Connect with a standalone SSH Client
Будет что-то типа:$ ssh -i yourkey.pem ubuntu@ec2-184-119-234-139.us-east-1.compute.amazonaws.com
- Коннектимся к серверу по параметрам полученым в пункте 6.
Мы будем использовать такую связку: node.js+derby+redis+mongodb
Последовательно установим нужные пакеты.
Устанавливаем Node.js.
Для Derby.js будем использовать версию node.js 0.10.17
- Качаем исходники:
$ wget http://nodejs.org/dist/v0.10.17/node-v0.10.17.tar.gz
- Распаковываем:
$ tar -xvf node-v0.10.17.tar.gz $ cd node-v0.10.17
- Устанавливаем:
$ 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
- Устанавливаем DerbyJS:
$ sudo npm install -g derby
Устанавливаем Redis 2.6.16
- Скачиваем:
$ wget http://download.redis.io/releases/redis-2.6.16.tar.gz
- Распаковываем:
$ tar -xvf redis-2.6.16.tar.gz $ cd redis-2.6.16
- Устанавливаем:
$ sudo checkinstall -D --install=no --nodoc --pkgversion=2.6.16 --pkgname="Redis 2.6.16" $ sudo dpkg -i redis*.deb
- Настраиваем
$ 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/
сохраняем файл
- Запускаем сервис:
$ sudo service redis start
- Добавляем в автозагрузку:
$ sudo update-rc.d redis defaults
- Проверяем:
$ redis-cli redis 127.0.0.1:6379> ping PONG redis 127.0.0.1:6379> exit
Устанавливаем MongoDB
- Установка:
sudo apt-get -y install mongodb
- Проверяем статус:
$ service mongodb status
Пример ответа:
mongodb start/running, process 24815
Создаем приложение Derby
- Создание
$ mkdir ~/www $ cd ~/www $ derby new myapp $ cd myapp
- Проверяем запуск:
$ nmp start
Запускаем как демон
Пожалуй один из простых способов:
$ cd ~/www/myapp
$ nohup node server.js &
Также можно воспользоваться supervisord или другой тулзой.
Ссылки / источники
- nodejs.org/
- derbyjs.com/#create_an_app
- stackoverflow.com/questions/4018154/node-js-as-a-background-service
- redis.io/topics/quickstart
- supervisord.org/
- docs.aws.amazon.com/elasticbeanstalk/latest/dg/Welcome.html
Автор: sfxws2006