Как безопасно запустить приложение Meteor с помощью Sandstorm в Ubuntu 14.04

Написано в сотрудничестве с Sandstorm

Вступление

Meteor - это инфраструктура для JavaScript, которая позволяет веб-разработчикам один раз написать код JavaScript и повторно использовать его как на стороне клиента, так и на стороне сервера. В другом руководстве описывается how для развертывания приложений Meteor с использованием Nginx. и Upstart, но в этом руководстве рассматривается другой подход к развертыванию приложений Meteor: создание и запуск пакета Sandstorm.

Sandstorm - это платформа с открытым исходным кодом для персональных серверов, что означает, что ее можно использовать для установки множества разных приложений на одном сервере с очень простым в использовании интерфейсом. Предыдущий учебник показал how для установки Sandstorm для запуска приложений, таких как WordPress и MediaWiki; В этом руководстве рассказывается, как запустить собственное приложение, например, написанное вами самостоятельно.

В Sandstorm установка приложения позволяет создавать новые документы с помощью этого приложения. Каждый документ является отдельным запущенным экземпляром приложения, и код, который приводит в действие каждый документ (который Sandstorm называет grain) по умолчанию является закрытым. В этом смысле Sandstorm упрощает безопасную работу приложений Meteor; Песчаная буря управляет контролем доступа. В этом руководстве вы узнаете, как установить приложение, а затем создать несколько экземпляров приложения.

Существует несколько вариантов использования приложения Sandstorm. Первый вариант использования предназначен для личного или корпоративного использования. Это будет означать упаковку приложения и его развертывание на сервере Sandstorm вашей компании или вашей компании и использование изолированной среды Sandstorm и контроля доступа. Другой вариант использования - создание приложения Sandstorm для публикации его для других пользователей Sandstorm. Это может быть, например, опубликовано на apps.sandstorm.io, но вы также можете распространять его самостоятельно. Пользователь будет знать, что разработчик приложений не может прочитать их данные. Этот учебник относится к обоим сценариям.

Предпосылки

Чтобы следовать этому уроку, вам понадобится:

  • Локальный компьютер, который будет использоваться для сборки пакета Sandstorm. Этот компьютер должен:

  • Будьте 64-битной машиной с не менее 1 ГБ оперативной памяти. В этом руководстве есть инструкции для Ubuntu 14.04 и Mac OS X.

  • Установите Git, который будет использоваться для загрузки + vagrant-spk + и нашего примера приложения. Вы можете установить Git, следуя this учебник по Git для Ubuntu 14.04 или https: // git -scm.com/download/mac[ Руководство по установке Git Mac] для OS X.

  • Установите Vagrant, что можно сделать со страницы установки Vagrant. Vagrant используется для создания виртуальной машины, в которой Sandstorm работает в режиме разработки.

  • Установите какое-либо программное обеспечение для виртуализации, например VirtualBox.

  • Одна Ubuntu 14.04 Droplet с Sandstorm установлена ​​для тестирования вашего пакета, что вы можете сделать, следуя этому previous руководство.

  • При желании приложение, которое вы хотите упаковать, написано с использованием платформы Meteor. В этом руководстве показаны шаги с использованием примера приложения списка дел, предоставленного Meteor, если у вас нет другого приложения, которое вы хотите использовать.

Шаг 1 - Загрузка примера приложения и vagrant-spk

На этом этапе мы загрузим приложение Meteor, для которого мы создадим пакет Sandstorm, а также инструмент для упаковки Sandstorm + vagrant-spk +.

Во-первых, создайте и переместите в новый каталог с именем + projects +, чтобы избежать загрязнения вашего домашнего каталога новыми файлами.

mkdir ~/projects
cd ~/projects

Пример приложения, которое мы будем использовать в этом руководстве, - simple-todos - приложение, предоставленное компанией Meteor. Однако вы также можете пропустить это, если хотите использовать свое собственное приложение Meteor.

Загрузите это приложение, клонировав его из GitHub Meteor.

git clone https://github.com/meteor/simple-todos.git

Затем мы установим + vagrant-spk + (инструмент для упаковки Sandstorm) из GitHub.

git clone git://github.com/sandstorm-io/vagrant-spk

Перейдите в каталог + vagrant-spk +.

cd vagrant-spk

Наконец, создайте символическую ссылку на двоичный файл в + / usr / local / bin +, чтобы сделать доступной команду + vagrant-spk +.

sudo ln -s $PWD/vagrant-spk /usr/local/bin

После установки вы можете проверить, установлен ли + vagrant-spk +, запустив:

vagrant-spk --help

Вы должны увидеть сообщение вроде:

Outputusage: vagrant-spk [-h]
                      [--work-directory WORK_DIRECTORY]
                      {destroy,dev,global-status,halt,init,pack,publish,setupvm,ssh,up}
                      [command_specific_args [command_specific_args ...]]
. . .

Шаг 2 - Запуск Sandstorm VM

В этом разделе мы создадим актуальный пакет Sandstorm. Начните с перехода в каталог приложения на вашем локальном компьютере.

cd ~/projects/simple-todos

Затем настройте виртуальную машину, которая будет использоваться для сборки пакета.

vagrant-spk setupvm meteor

Вы увидите вывод, похожий на этот:

OutputInitializing .sandstorm directory in /home/sammy/projects/simple-todos/.sandstorm
Creating /home/sammy/.sandstorm to hold developer keys.
Creating /home/sammy/.sandstorm/caches to hold sandstorm installer caches.

Далее запустите виртуальную машину.

vagrant-spk up

Эта команда займет некоторое время для выполнения.

Шаг 3 - Создание определения пакета

В этом разделе мы фактически упакуем приложение Meteor.

Сначала создайте определение пакета, который будет использовать Sandstorm.

vagrant-spk init

Эта команда создаст файл с именем + sandstorm-pkdef.capnp + в каталоге + .sandstorm +. Нам нужно будет внести некоторые изменения в этот файл.

Подключитесь к Vagrant VM.

vagrant-spk ssh

Затем откройте + / opt / app / .sandstorm / sandstorm-pkdef.capnp +, используя + nano + или ваш любимый текстовый редактор.

nano /opt/app/.sandstorm/sandstorm-pkgdef.capnp

Найдите следующий раздел:

Original ~/.sandstorm/sandstorm-pkgdef.capnp. . .
   # This manifest is included in your app package to tell Sandstorm
   # about your app.

   appTitle = (defaultText = "Example App"),

   appVersion = 0,  # Increment this for every release.
. . .

Измените значение в строке + appTitle + на «Todo».

Modified ~/.sandstorm/sandstorm-pkgdef.capnp. . .
   # This manifest is included in your app package to tell Sandstorm
   # about your app.

   appTitle = (defaultText = ""),

   appVersion = 0,  # Increment this for every release.
. . .

Затем сохраните и закройте файл.

Шаг 4 - Добавление Sandstorm Войти в приложение

Прямо сейчас приложение Todos имеет отдельную аутентификацию от Sandstorm. Однако мы хотим войти в систему с помощью приложения Todos, когда мы вошли в Sandstorm, поэтому нам потребуется добавить отдельный пакет в приложение Meteor.

Оставаясь подключенным к виртуальной машине, перейдите в каталог основного пакета.

cd /opt/app

Далее мы добавим пакет + kenton: accounts-sandstorm + в приложение Meteor, которое предоставляет текущую учетную запись Sandstorm приложению Meteor.

meteor add kenton:accounts-sandstorm

Теперь вы можете выйти из соединения с Vagrant VM.

exit

В случае этого приложения Todo страница все еще содержит кнопки входа и выхода, которые не нужны. Далее мы их удалим.

Откройте файл + simple-todos.html + в каталоге + project / simple-todos +, используя ваш любимый текстовый редактор.

nano simple-todos.html

Найдите следующий раздел и удалите строку + loginButtons +, выделенную красным цветом ниже. Затем сохраните и закройте файл.

simple-todos.html. . .
       Hide Completed Tasks
     </label>



     {{#if currentUser}}
. . .

Затем откройте файл + simple-todos.js +.

nano simple-todos.js

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

simple-todos.js. . .
   "click .toggle-private": function () {
     Meteor.call("setPrivate", this._id, ! this.private);
   }
 });




}
. . .

Теперь приложение использует учетные записи Sandstorm вместо учетных записей Meteor.

Шаг 5 - Тестирование приложения в разработке

+ vagrant-spk + имеет команду + dev +, которая позволяет виртуальной машине Sandstorm работать в режиме разработки, делая ваш пакет доступным. Итак, запустите команду из каталога вашего приложения (в данном случае + simple-todos +).

vagrant-spk dev

Когда он завершит инициализацию, он напечатает следующее сообщение:

OutputApp is now available from Sandstorm server. Ctrl+C to disconnect.

Это означает, что теперь вы можете посетить Sandstorm по адресу http://local.sandstorm.io:6080/. Теперь вы можете войти, нажав * с учетной записью Dev *.

изображение: https: //assets.digitalocean.com/articles/meteor-sandstorm/8HOgzgk.png [Экран входа]

Затем нажмите * Алиса (администратор) *. Это позволит вам войти в систему с учетной записью администратора, которая позволит вам создавать новые экземпляры. Вы можете оставить значения по умолчанию для страницы * Подтвердить свой профиль * и нажать фиолетовую кнопку * Продолжить *, ничего не меняя.

Затем нажмите на приложение Todo, затем нажмите * Создать новый экземпляр *.

изображение: https: //assets.digitalocean.com/articles/meteor-sandstorm/FjejSbS.png [Новый экземпляр]

Шаг 6 - Создание и загрузка SPK

Последний шаг в создании пакета Sandstorm - создание файла SPK, содержащего приложение, копию Meteor и любые другие зависимости для приложения. Этот шаг полностью автоматизирован с помощью инструмента + meteor-spk +.

Сначала остановите сервер разработки, нажав + CTRL + C +. Затем упакуйте приложение.

vagrant-spk pack todo.spk

Это создает файл SPK в вашем текущем каталоге.

Кроме того, в нашем случае SPK-файл составляет около 11 МБ. Приложения Sandstorm обычно занимают несколько мегабайт, даже если они содержат приложение и все зависимости, включая зависимости операционной системы.

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

vagrant-spk halt

Если вы хотите продолжить разработку по любой причине, вы можете просто запустить + vagrant-spk up +.

Шаг 7 - Создание списка Todo

В этом разделе мы установим пакет на сервер Sandstorm в вашей Droplet и создадим новый экземпляр приложения.

Войдите в свою Песчаную бурю на Droplet, и вы увидите кнопку * Загрузить приложение * на главном экране. Нажмите эту кнопку и выберите файл SPK через веб-браузер, созданный на шаге 6.

изображение: https: //assets.digitalocean.com/articles/meteor-sandstorm/GJPNJRX.png [Sandstorm Upload App]

Это создаст новый элемент на вашем домашнем экране Sandstorm с пометкой * Todo *. Установка приложения в Sandstorm дает вам возможность создавать новые экземпляры (или документы). Поэтому нажмите пункт * Todo *. Это приведет вас к следующему экрану:

изображение: https: //assets.digitalocean.com/articles/meteor-sandstorm/Bfwx5XN.png [Экран приложения Todo]

Нажмите * Создать новый экземпляр *. Это перенесет вас в новый экземпляр Todo, работающий на уникальном экземпляре приложения списка Todo.

изображение: https: //assets.digitalocean.com/articles/meteor-sandstorm/27iAXMa.png [список задач]

Каждый экземпляр называется grain в Sandstorm. Этот экземпляр приложения уникален для вашего пользователя Sandstorm. Если вы попытаетесь открыть URL-адрес в частном окне просмотра веб-браузера, вы получите сообщение об ошибке Forbidden. Вы можете использовать синюю кнопку * Share * в верхней панели Sandstorm, чтобы создать ссылку для обмена, если вы хотите, чтобы другие имели доступ к списку Todo.

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

Заключение

Мы видели, как взять кодовую базу, написанную на Meteor, и упаковать ее для Sandstorm. Он использует Sandstorm для контроля доступа и может быть легко передан другим пользователям. Чтобы узнать больше о Метеоре, посетите веб-сайт their. Чтобы узнать больше о Sandstorm, посетите sandstorm.io.

Related