Как стать автором
Обновить

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

Время на прочтение2 мин
Количество просмотров14K
Вы можете делать всё, что вам нужно, с помощью 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://example.com && forever start /home/meteor/bundle/main.js'",
    }
}

Готово. Теперь, чтобы отправить приложение на собственный сервер и запустить его там, достаточно одной команды.
npm run deploy
Теги:
Хабы:
Всего голосов 11: ↑9 и ↓2+7
Комментарии31

Публикации

Истории

Работа

Ближайшие события