Запуск приложения Meteor с помощью Sandstorm в Ubuntu 14.04

Meteor – это фреймворк для JavaScript, позволяющий использовать один код и на серверной, и на клиентской стороне.

Примечание: Чтобы узнать, как развернуть приложение Meteor при помощи Nginx и Upstart, читайте эту статью.

Данное руководство поможет создать и запустить пакет Sandstorm, предназначенный для развёртывания приложения Meteor.

Sandstorm – это открытая платформа персональных серверов; она позволяет установить множество разных приложений на одном сервере.

Инструкции по установке Sandstorm и запуску приложений WordPress и MediaWiki можно найти в руководстве «Установка Sandstorm в Ubuntu 14.04».

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

Приложения Sandstorm часто создаются для личного или корпоративного использования. В таком случае приложения упаковываются и затем развертываются на персональном или корпоративном сервере Sandstorm; для управления доступом к приложениям SandStorm предоставляет функцию sandboxing.

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

Требования

  • Локальный компьютер для разработки пакета Sandstorm (64-битная архитектура, 1GB RAM минимум, Ubuntu 14.04 или Mac OS X).
  • Предустановленная система Git (инструкции по установке – здесь).
  • Предустановленная программа Vagrant.
  • Программное обеспечение для виртуализации (например, VirtualBox).
  • Опционально: приложение, написанное в Meteor, которое нужно упаковать; в данном руководстве используется тестовое приложение to-do list, предоставленное разработчиками Meteor.

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

Сначала нужно запустить приложение Meteor, для которого будет создан пакет Sandstorm, и инструмент пакетирования vagrant-spk.

Создайте новый каталог projects и откройте его:

mkdir ~/projects
cd ~/projects

В данном руководстве используется образец приложения Meteor под названием simple-todos. Если вы используете другое приложение Meteor, загрузите его.

Чтобы загрузить приложение, клонируйте его с GitHub фреймворка Meteor.

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

Чтобы установить vagrant-spk, обратитесь к GitHub программы Sandstorm.

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

На экране появится сообщение:

usage: 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

Теперь нужно создать пакет Sandstorm. Откройте каталог приложения на локальной машине:

cd ~/projects/simple-todos

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

vagrant-spk setupvm meteor

Команда вернёт:

Initializing .sandstorm directory in /home/8host/projects/simple-todos/.sandstorm
Creating /home/8host/.sandstorm to hold developer keys.
Creating /home/8host/.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 /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 = "Todo"),
appVersion = 0,  # Increment this for every release.
. . .

Сохраните и закройте файл.

4: Аутентификация Sandstorm

Теперь приложение Todos имеет отдельную форму аутентификации на Sandstorm. Чтобы открывать Todos и Sandstorm при помощи одной формы аутентификации, добавьте в приложение Meteor отдельный пакет.

Подключившись к VM, откройте каталог главного пакета.

cd /opt/app

Затем добавьте в приложение Meteor пакет kenton:accounts-sandstorm, который открывает текущий аккаунт Sandstorm для приложения Meteor:

meteor add kenton:accounts-sandstorm

Теперь можно отключить Vagrant VM:

exit

В случае с приложением Todo, страница будет по-прежнему содержать кнопки входа и выхода. Эти кнопки не нужны. Их можно удалить.

Откройте файл simple-todos.html in the project/simple-todos:

nano simple-todos.html

Найдите следующий раздел и удалите строку loginButtons. Сохраните и закройте файл.

simple-todos.html
. . .
Hide Completed Tasks
</label>
{{> loginButtons}}
{{#if currentUser}}
. . .

Затем отройте simple-todos.js.

nano simple-todos.js

Удалите строки, выделенные красным.

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

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

5: Тестирование приложения

Инструмент vagrant-spk предоставляет команду dev, которая переводит Sandstorm VM в режим разработки, открывая доступ к пакету. Запустите следующую команду в каталоге приложения (в данном случае это simple-todos).

vagrant-spk dev

После завершения инициализации команда вернёт:

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

Это значит, что приложение теперь доступно по ссылке:

http://local.sandstorm.io:6080/

Чтобы войти, нажмите with a Dev Account.

Затем нажмите Alice (admin). Это откроет учётную запись администратора, которая позволяет создавать новые экземпляры.

На странице Confirm your profile можно оставить значения по умолчанию. Чтобы продолжить, нажмите Continue.

В списке приложений выберите Todo и нажмите Create new instance.

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

Теперь нужно создать пакет Sandstorm, который понадобится для создания файла SPK, в котором будет храниться копия приложения Meteor и её зависимости. Этот процесс полностью автоматизирован инструментом meteor-spk.

Остановите сервер разработки (CTRL+C). Затем упакуйте приложение:

vagrant-spk pack todo.spk

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

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

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

vagrant-spk halt

Чтобы продолжить разработку, введите:

vagrant-spk up

7: Создание Todo List

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

Войдите в Sandstorm. Нажмите кнопку Upload app и выберите созданный ранее файл SPK.

Это создаст новый объект на домашней странице Sandstorm приложения Todo. Установив приложение в Sandstorm, вы можете создавать новые объекты (или документы). Выберите Todo. Затем нажмите Create new instance. Это откроет новый экземпляр Todo.

Используйте кнопку Share в верхней панели Sandstorm, чтобы создать ссылку для совместного использования пакета.

Чтобы закрыть этот экземпляр, кликните логотип Sandstorm в верхнем левом углу.

После этого можно создать новое приложение. Все вносимые в экземпляр Todo данные полностью независимы от остальных.

Tags: , , ,

Добавить комментарий