Публикация приложения

Отступление 2.5

На данный момент переведено

В этой главе вы:

  • Узнаете, как опубликовать приложение на Meteor.
  • Узнаете, как опубликовать приложение на Modulus.
  • Узнаете, как опубликовать приложение на собственный сервер с помощью Meteor Up.
  • Некоторые предпочитают спокойно работать над проектом, пока не доведут его до совершенства, другие же напротив, стараются показать его всему миру как можно раньше.

    Если вы относитесь к первой категории и сейчас предпочтете работать локально, то просто пропустите эту главу. Если же вы хотите сразу научиться публиковать Meteor-приложения, то эта глава для вас.

    Мы научимся публиковать приложения несколькими способами. Пробуйте их на любой стадии разработки, работаете вы над Microscope, либо над любым другим Meteor-приложением. Давайте приступим!

    Представляем дополнительные главы

    Вы сейчас читаете именно дополнительную главу. В этих главах мы будем более детально разбирать общие темы Meteor, независимо от остальной книги.

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

    Публикуем на meteor.com

    Опубликовать приложение на поддомен meteor.com (напр. ‘http://myapp.meteor.com’) - это самый простой способ. С него мы и начнем. Этот способ наиболее уместен, если вы хотите показать приложение другим людям на ранних стадиях, либо чтобы быстро развернуть тестовый сервер.

    Публикация на meteor.com - очень простой процесс. Просто откройте терминал, войдите в директорию вашего приложения и наберите:

    $ meteor deploy myapp.meteor.com
    

    Само собой, замените ‘myapp’ на имя вашего приложения, предпочтительно свободное. Если такое имя уже используется, то Meteor может спросить у вас пароль. В этом случае просто отмените операцию нажав ‘ctrl+c’ и попробуйте снова, уже с другим именем.

    Если все пройдет хорошо, то уже через несколько секунд вы сможете увидеть ваше приложение по адресу 'http://myapp.meteor.com’.

    Защита паролем

    По умолчанию нет никаких запретов по поддоменам 'meteor.com’. Каждый может использовать любое имя, которое пожелает и перезаписать существующее приложение с таким же именем. Так что вы скорее всего захотите защитить свой домен паролем, добавив ‘-p’, как показано ниже:

    $ meteor deploy myapp.meteor.com -p
    

    Далее Meteor попросит вас ввести пароль, и после будет его спрашивать при каждой новой публикации на этот домен.

    В официальной документации вы сможете найти больше информации по данному вопросу, например, как напрямую общаться с базой данных на вашем хосте или настроить собственное доменное имя для вашего приложения.

    Публикуем на Modulus

    Modulus - отличное решение для публикации Node.js приложений. Это одна из немногих PaaS (platform-as-a-service) платформ, которая официально поддерживает Meteor, и уже есть люди, использующие ее в качестве production-решения для Meteor-приложений.

    Demeteorizer

    Команда Modulus выложила в открытый доступ инструмент под названием demeteorizer, который конвертирует Meteor-приложение в стандартное Node.js приложение.

    Начните с создания аккаунта. Чтобы опубликовать наше приложение на Modulus, сперва необходимо установить инструмент Modulus для командной строки:

    $ npm install -g modulus
    

    Далее необходимо залогиниться:

    $ modulus login
    

    Теперь давайте создадим наш проект Modulus (обратите внимание на то, что вы можете создать проект с помощью интерфейса на сайте Modulus)

    $ modulus project create
    

    Следующим шагом будет создание базы данных MongoDB для нашего приложения. Мы можем создать базу данных с помощью самого Modulus, MongoHQ, либо любого другого облачного провайдера.

    Как только мы создали нашу базу данных, мы можем получить ее MONGO_URL (перейдите Dashboard > Databases > Select your database > Administration), и затем настроить наше приложение следующим образом:

    $ modulus env set MONGO_URL "mongodb://<user>:<pass>@mongo.onmodulus.net:27017/<database_name>"
    

    Теперь пришло время опубликовать приложение. Просто наберите:

    $ modulus deploy
    

    Все, наше приложение опубликовано на Modulus. Ознакомьтесь с документацией для получения большей информации о том, как получить доступ к логам, доменам и SSL.

    Meteor Up

    Хотя новые облачные решения появляются чуть ли не каждый день, они зачастую имеют свои проблемы и ограничения. Так что на сегодняшний день лучшим production-решением для вашего Meteor-приложения является публикация на собственный сервер. Единственное, публикация на собственный сервер не будет столь простой, особенно если вы ждете действительно production-качества.

    Meteor Up (или сокращенно mup) - это очередная попытка поправить ситуацию с помощью инструмента для командной строки, который берет на себя хлопоты по публикации. Давайте посмотрим, как опубликовать Microscope с помощью Meteor Up.

    Прежде всего, нам потребуется сервер для публикации. Мы рекомендуем либо Digital Ocean, тарифы которого начинаются c 5$/мес, либо AWS, который бесплатно предоставляет т.н. micro instances (вы вскоре столкнетесь с необходимостью увеличения мощностей, но для начала работы с Meteor Up бесплатных будет вполне достаточно).

    Какой бы сервис вы ни выбрали, вам нужно будет в итоге получить 3 вещи: IP-адрес вашего сервера, логин (обычно root или ubuntu) и пароль. Держите их под рукой, вскоре они нам понадобятся!

    Инициализируем Meteor Up

    Для начала нам нужно установить Meteor Up с помощью 'npm’:

    $ npm install -g mup
    

    Далее нужно создать отдельную директорию, которая будет содержать конфигурацию Meteor Up для текущей публикации. Мы используем отдельную директорию по двум причинам: во-первых, лучше избегать любых приватных ключей в Git репозитории, особенно открытом.

    Во-вторых, используя несколько отдельных директорий, мы сможем параллельно использовать несколько конфигураций Meteor Up. Они могут пригодиться например, для публикации приложения на production и staging серверы.

    Итак, давайте создадим новую директорию и инициализируем там Meteor Up проект:

    $ mkdir ~/microscope-deploy
    $ cd ~/microscope-deploy
    $ mup init
    

    Используем Dropbox

    Отличный способ быть уверенным в том, что вы и ваша команда используете одни и те же настройки - это создать директорию конфигурации Meteor up в Dropbox или похожем сервисе.

    Конфигурация Meteor Up

    Во время инициализации нового проекта, Meteor Up создаст два файла: ‘mup.json’ и ‘settings.json’.

    ‘mup.json’ будет содержать настройки для публикации, а ‘settings.json’, в свою очередь - все настройки, касающиеся нашего приложения (OAuth токены, токены аналитики и т.д.).

    Следующим шагом будет конфигурация ‘mup.json’. Вот файл, по умолчанию созданный командой ‘mup init’, в котором все что вам нужно - это заполнить поля:

    {
      //server authentication info
      "servers": [{
        "host": "hostname",
        "username": "root",
        "password": "password"
        //or pem file (ssh based authentication)
        //"pem": "~/.ssh/id_rsa"
      }],
    
      //install MongoDB in the server
      "setupMongo": true,
    
      //location of app (local directory)
      "app": "/path/to/the/app",
    
      //configure environmental
      "env": {
        "ROOT_URL": "http://supersite.com"
      }
    }
    
    mup.json

    Давайте разберемся в этих настройках.

    Server Authentication

    Как вы могли заметить, Meteor Up поддерживает аутентификацию с помощью пароля и private key (PEM), что делает возможным использование практически любой облачной платформы.

    Важно: если вы предпочтете использовать аутентификацию с помощью пароля, сперва необходимо установить shpass (прочтите здесь).

    Конфигурация MongoDB

    Следующим шагом будет настройка MongoDB для нашего приложения. Мы рекомендуем использовать MongoHQ, либо любую другую облачную платформу, которая предоставляет профессиональную поддержку и высококлассные инструменты управления.

    Если вы решили использовать MongoHQ, поставьте ‘false’ для ‘setupMongo’ и добавьте переменную окружения ‘MONGO_URL’ в блок ‘env’ вашего файла ‘mup.json’. Если же вы решили хостить MongoDB с помощью Meteor Up, то просто поставьте ‘true’ для setupMongo’, и Meteor Up сделает остальное за вас.

    Путь к Meteor-приложению

    Так как конфигурация Meteor Up находится в отдельной директории, нам нужно будет указать путь к нашему приложению с помощью свойства ‘app’. Просто поместите в значение этого свойства полный путь к директории с вашим приложением на локальной машине. Вы можете получить этот путь, набрав в терминале команду 'pwd’, находясь в корневой директории вашего приложения.

    Переменные окружения

    Вы можете указать все ваши переменные окружения (напр. ROOT_URL, MAIL_URL, MONGO_URL) в блоке ‘env’.

    Настройка и публикация

    Прежде чем мы опубликуем приложение, мы должны настроить сервер для обслуживания нашего Meteor-приложения. Волшебство Meteor Up заключается в том, что он инкапсулирует весь этот сложный процесс в одну команду!

    $ mup setup
    

    Это займет некоторое время, в зависимости от мощности вашего сервера и скорости соединения. После успешной настройки, мы, наконец, можем опубликовать наше приложение:

    $ mup deploy
    

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

    Вывод логов

    Логи - достаточно важная вещь, и Meteor Up предоставляет нам простой способ их вывести, эмулируя команду 'tail -f’. Просто наберите:

    $ mup logs -f
    

    На этом заканчиваем наш обзор возможностей Meteor Up. Для большей информации, рекомендуем посетить репозиторий Meteor Up

    Этих трех способов публикации Meteor-приложений достаточно для большинства возможных случаев. Конечно, многие из вас захотят иметь полный контроль и настроить Meteor сервер с нуля. Но это тема другого дня… или книги.