Лёгкий деплой Meteor-приложения на собственный сервер

в 12:33, , рубрики: devops, javascript, Meteor, Meteor.JS, node.js, nodejs, Веб-разработка

Вы можете делать всё, что вам нужно, с помощью Meteor, и вы можете делать это легко. Такой подход вдохновил разработчиков на добавление команды meteor deploy, которая должна была волшебным образом закрыть все потребности в развёртывании приложений. Но не закрыла.

meteor deploy работает, только если вы используете облачное решение Galaxy (от 0.035 $ в час) или бесплатный хостинг на Meteor.com (который закрывается уже 25 марта).

Запустить приложение на своём сервере можно: нужно собрать его под выбранную платформу, отправить на сервер и запустить как обыкновенное Node.js-приложение. Правда, вместо запуска посыпятся сообщения об ошибках. Чтобы всё прошло хорошо, важно использовать правильную версию Node.js. Вот гарантированно работоспособная инструкция.

Настройка сервера

Вам понадобится сервер с Ubuntu 14.04 LTS. Например, дроплет в DigitalOcean. Настройте к нему доступ по ssh с ключом без пароля и установите Node.js 0.10.x.

curl -sL https://deb.nodesource.com/setup_0.10 | sudo bash -
apt-get install nodejs

Установите Mongo из репозитория.

apt-get install mongodb-server

Установите Forever, чтобы приложение перезапускалось в случае возникновения проблем.

npm install -g forever

Если нужен пакет spiderable, установите PhantomJS.

apt-get install phantomjs

Деплой приложения

Соберите приложение на своей локальной машине.

meteor build --architecture os.linux.x86_64

Скопируйте meteor.tar.gz на сервер (например, в /home/meteor).

scp /tmp/meteor.tar.gz sashagrey:/home/meteor

Распакуйте тарбол на сервере и установите все нужные пакеты.

tar -xf meteor.tar.gz
cd /home/meteor/bundle/programs/server && npm install

Настройте переменные окружения.

export PORT=80
export MONGO_URL=mongodb://localhost:27017/meteor
export ROOT_URL=http://example.com

Запустите приложение.

forever start /home/meteor/bundle/main.js

Единая команда

Обычно весь meteor-код я храню в отдельной папке meteorвнутри проекта. В package.json я добавляю скрипт, который выполняет все описанные выше шаги и запускает приложение на сервере (предполагается, что вы можете доступиться до своего сервера командой ssh sashagrey).

{
    "scripts": {
        "deploy": "cd meteor && meteor build /tmp --architecture os.linux.x86_64 && scp /tmp/meteor.tar.gz sashagrey:/home/meteor && rm /tmp/meteor.tar.gz && ssh sashagrey 'forever stopall && cd /home/meteor && tar -xf meteor.tar.gz && rm meteor.tar.gz && cd /home/meteor/bundle/programs/server && npm install && export PORT=80 && export MONGO_URL=mongodb://localhost:27017/meteor && export ROOT_URL=http://dev.34377.ru && forever start /home/meteor/bundle/main.js'",
    }
}

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

npm run deploy

Автор: maggg

Источник

Поделиться новостью

* - обязательные к заполнению поля