Запуск приложения Meteor с помощью Sandstorm в Ubuntu 14.04
Java, Ubuntu | Комментировать запись
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: Meteor.js, Sandstorm, Ubuntu 14.04, Vagrant