So führen Sie eine Meteor-App mit Sandstorm unter Ubuntu sicher aus 14.04

Geschrieben in Zusammenarbeit mit Sandstorm

Einführung

Meteor ist ein Framework für JavaScript, mit dem Webentwickler JavaScript-Code einmal schreiben und sowohl clientseitig als auch serverseitig wiederverwenden können. In einem anderen Lernprogramm wird unter beschrieben, wie Meteor-Apps mit Nginx bereitgestellt werden und Upstart, aber dieses Tutorial behandelt einen anderen Ansatz für die Bereitstellung von Meteor-Apps: das Erstellen und Ausführen eines Sandstorm-Pakets.

Sandstorm ist eine Open-Source-Plattform für Personal Server, mit der viele verschiedene Apps auf einem Server mit einer sehr benutzerfreundlichen Oberfläche installiert werden können. Ein vorheriges Tutorial zeigte Sandstorm installieren, um Apps wie WordPress und MediaWiki auszuführen. In diesem Tutorial erfahren Sie, wie Sie eine benutzerdefinierte Anwendung ausführen, wie Sie sie selbst geschrieben haben.

Wenn Sie in Sandstorm eine App installieren, können Sie mit dieser App neue Dokumente erstellen. Jedes Dokument ist eine separate ausgeführte Instanz der App, und der Code für jedes Dokument (von Sandstorm als grain bezeichnet) ist standardmäßig privat. In diesem Sinne macht es Sandstorm einfach, Meteor-Apps sicher auszuführen. Sandstorm übernimmt die Zugangskontrolle. In diesem Lernprogramm erfahren Sie, wie Sie die App installieren und anschließend mehrere App-Instanzen erstellen.

Es gibt mehrere Anwendungsfälle, um eine Sandstorm-App zu erstellen. Der erste Anwendungsfall ist für den persönlichen oder geschäftlichen Gebrauch. Dies würde bedeuten, dass Sie eine App packen und auf dem Sandstorm-Server Ihres Unternehmens bereitstellen und die Sandbox- und Zugriffskontrolle von Sandstorm verwenden. Ein weiterer Anwendungsfall ist die Erstellung einer Sandstorm-App, um sie für andere Sandstorm-Benutzer zu veröffentlichen. Dies könnte zum Beispiel auf apps.sandstorm.io veröffentlicht werden, aber Sie könnten es auch selbst verbreiten. Der Benutzer weiß, dass der Entwickler der Apps seine Daten nicht lesen kann. Dieses Tutorial gilt für beide Szenarien.

Voraussetzungen

Um diesem Tutorial zu folgen, benötigen Sie:

  • Ein lokaler Computer, auf dem das Sandstorm-Paket erstellt wird. Dieser Computer muss:

  • Seien Sie ein 64-Bit-Computer mit mindestens 1 GB RAM. Dieses Tutorial enthält Anweisungen für Ubuntu 14.04 und Mac OS X.

  • Haben Sie Git installiert, das zum Herunterladen von + vagrant-spk + und unserer Beispielanwendung verwendet wird. Sie können Git installieren, indem Sie this Git tutorial für Ubuntu 14.04 oder https: // git folgen -scm.com/download/mac[die Git Mac-Installationsanleitung] für OS X.

  • Haben Sie Vagrant installiert, was Sie unter Vagrants Installationsseite tun können. Mit Vagrant wird eine virtuelle Maschine erstellt, auf der Sandstorm im Entwicklungsmodus ausgeführt wird.

  • Haben Sie eine Virtualisierungssoftware wie VirtualBox installiert.

  • Ein Ubuntu 14.04-Droplet mit Sandstorm wurde installiert, um Ihr Paket zu testen. Dies können Sie tun, indem Sie diesem previous folgen Lernprogramm.

  • Optional eine App, die Sie mit dem Meteor-Framework packen möchten. In diesem Tutorial werden die Schritte anhand einer von Meteor bereitgestellten Beispielanwendung für eine Aufgabenliste erläutert, wenn Sie keine andere App haben, die Sie verwenden möchten.

Schritt 1 - Herunterladen der Beispiel-App und von vagrant-spk

In diesem Schritt werden wir die Meteor-Anwendung herunterladen, für die wir ein Sandstorm-Paket erstellen, sowie das Sandstorm-Paketierungstool "+ vagrant-spk +".

Erstellen Sie zunächst ein neues Verzeichnis mit dem Namen "+ projects +" und verschieben Sie es in dieses, um zu verhindern, dass Ihr Ausgangsverzeichnis mit neuen Dateien überfüllt wird.

mkdir ~/projects
cd ~/projects

Die Beispielanwendung, die wir in diesem Tutorial verwenden, ist simple-todos, eine von Meteor bereitgestellte Anwendung. Sie können dies jedoch auch überspringen, wenn Sie Ihre eigene Meteor-Anwendung verwenden möchten.

Laden Sie diese Anwendung herunter, indem Sie sie vom GitHub von Meteor klonen.

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

Als nächstes installieren wir + vagrant-spk + (das ist Sandstorms Verpackungswerkzeug) von Sandstorms GitHub.

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

Wechseln Sie in das Verzeichnis "+ vagrant-spk +".

cd vagrant-spk

Erstellen Sie schließlich einen symbolischen Link zur Binärdatei in "+ / usr / local / bin ", um den Befehl " vagrant-spk +" verfügbar zu machen.

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

Nach der Installation können Sie überprüfen, ob "+ vagrant-spk +" installiert ist, indem Sie Folgendes ausführen:

vagrant-spk --help

Sie sollten eine Nachricht sehen wie:

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 ...]]
. . .

Schritt 2 - Ausführen der Sandstorm-VM

In diesem Abschnitt erstellen wir das eigentliche Sandstorm-Paket. Beginnen Sie, indem Sie in das Anwendungsverzeichnis auf Ihrem lokalen Computer wechseln.

cd ~/projects/simple-todos

Richten Sie dann die virtuelle Maschine ein, die zum Erstellen des Pakets verwendet wird.

vagrant-spk setupvm meteor

Es wird eine Ausgabe ähnlich der folgenden angezeigt:

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.

Starten Sie als Nächstes die virtuelle Maschine.

vagrant-spk up

Die Ausführung dieses Befehls dauert einen Moment.

Schritt 3 - Erstellen der Paketdefinition

In diesem Abschnitt packen wir die Meteor-Anwendung.

Erstellen Sie zunächst die Paketdefinition, die Sandstorm verwenden wird.

vagrant-spk init

Dieser Befehl erstellt eine Datei mit dem Namen "+ sandstorm-pkdef.capnp " im Verzeichnis " .sandstorm +". Wir müssen einige Änderungen an dieser Datei vornehmen.

Stellen Sie eine Verbindung zur Vagrant VM her.

vagrant-spk ssh

Öffnen Sie dann "+ / opt / app / .sandstorm / sandstorm-pkdef.capnp " mit " nano +" oder Ihrem bevorzugten Texteditor.

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

Suchen Sie den folgenden Abschnitt:

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.
. . .

Ändern Sie den Wert in der Zeile "+ appTitle +" in "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.
. . .

Speichern und schließen Sie dann die Datei.

Schritt 4 - Sandsturm-Login zur App hinzufügen

Momentan hat die Todos-App eine separate Authentifizierung von Sandstorm. Wir möchten jedoch mit der Todos-Anwendung angemeldet sein, wenn wir bei Sandstorm angemeldet sind. Daher müssen wir der Meteor-App ein separates Paket hinzufügen.

Wechseln Sie in das Hauptpaketverzeichnis, während Sie noch mit der VM verbunden sind.

cd /opt/app

Als nächstes fügen wir der Meteor-App das Paket + kenton: accounts-sandstorm + hinzu, das den aktuellen Sandstorm-Account für die Meteor-App freigibt.

meteor add kenton:accounts-sandstorm

Sie können jetzt die Verbindung mit der Vagrant VM beenden.

exit

Bei dieser Todo-Anwendung enthält die Seite weiterhin Anmelde- und Abmelde-Schaltflächen, die nicht erforderlich sind. Als Nächstes entfernen wir sie.

Öffnen Sie die Datei "+ simple-todos.html " im Verzeichnis " project / simple-todos +" mit Ihrem bevorzugten Texteditor.

nano simple-todos.html

Suchen Sie den folgenden Abschnitt und entfernen Sie die rot unterlegte Zeile "+ loginButtons +". Speichern und schließen Sie dann die Datei.

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



     {{#if currentUser}}
. . .

Öffnen Sie als nächstes die Datei + simple-todos.js +.

nano simple-todos.js

Löschen Sie wie zuvor die folgenden rot hervorgehobenen Zeilen, speichern und schließen Sie die Datei. Stellen Sie sicher, dass Sie die letzte geschweifte Klammer nicht löschen.

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




}
. . .

Jetzt verwendet die App Sandstorm-Konten anstelle von Meteor-Konten.

Schritt 5 - Testen der App in der Entwicklung

+ vagrant-spk + hat einen + dev + Befehl, mit dem die Sandstorm-VM im Entwicklungsmodus ausgeführt wird und Ihr Paket verfügbar wird. Führen Sie den Befehl im Verzeichnis Ihrer App aus (in diesem Fall "+ simple-todos +").

vagrant-spk dev

Nach Abschluss der Initialisierung wird die folgende Meldung ausgegeben:

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

Dies bedeutet, dass Sie jetzt Sandstorm unter http://local.sandstorm.io:6080/ besuchen können. Sie können sich jetzt anmelden, indem Sie auf * mit einem Dev Account * klicken.

Klicken Sie dann auf * Alice (admin) *. Dadurch werden Sie mit einem Administratorkonto angemeldet, mit dem Sie neue Instanzen erstellen können. Sie können die Standardwerte für die Seite * Bestätigen Sie Ihr Profil * beibehalten und die lila Schaltfläche * Weiter * drücken, ohne etwas zu ändern.

Klicken Sie anschließend auf die Todo-App und anschließend auf "Neue Instanz erstellen".

image: https: //assets.digitalocean.com/articles/meteor-sandstorm/FjejSbS.png [Neue Instanz]

Schritt 6 - Erstellen und Hochladen eines SPK

Der letzte Schritt beim Erstellen eines Sandstorm-Pakets besteht darin, eine SPK-Datei zu erstellen, die die App, eine Kopie von Meteor und alle weiteren Abhängigkeiten für die App enthält. Dieser Schritt wird durch das + meteor-spk + Tool vollautomatisiert.

Stoppen Sie zunächst Ihren Entwicklungsserver, indem Sie die Tastenkombination "+ STRG + C +" drücken. Dann packe die App.

vagrant-spk pack todo.spk

Dadurch wird eine SPK-Datei in Ihrem aktuellen Verzeichnis erstellt.

Abgesehen davon beträgt die SPK-Datei in unserem Fall etwa 11 MB. Sandstorm-Apps sind in der Regel eine Handvoll Megabyte groß, obwohl sie die App und alle Abhängigkeiten, einschließlich etwaiger Betriebssystemabhängigkeiten, enthalten.

Wenn Sie mit der Entwicklung einer App fertig sind, müssen Sie die virtuelle Maschine herunterfahren, bevor Sie eine zweite App erstellen. Führen Sie daher den folgenden Befehl aus:

vagrant-spk halt

Wenn Sie die Entwicklung aus irgendeinem Grund fortsetzen möchten, können Sie einfach + vagrant-spk up + ausführen.

Schritt 7 - Erstellen einer Aufgabenliste

In diesem Abschnitt installieren wir das Paket auf dem Sandstorm-Server in Ihrem Droplet und erstellen eine neue Instanz der App.

Loggen Sie sich mit Ihrem Droplet in Ihren Sandsturm ein und Sie sehen eine Schaltfläche * App hochladen * auf Ihrem Startbildschirm. Klicken Sie auf diese Schaltfläche und wählen Sie die SPK-Datei über Ihren in Schritt 6 erstellten Webbrowser aus.

Dadurch wird in Ihrem Sandstorm-Startbildschirm ein neues Objekt mit der Bezeichnung * Todo * erstellt. Wenn Sie eine App in Sandstorm installieren, können Sie neue Instanzen (oder Dokumente) erstellen. Klicken Sie dazu auf den Punkt * Todo *. Sie gelangen auf den folgenden Bildschirm:

image: https: //assets.digitalocean.com/articles/meteor-sandstorm/Bfwx5XN.png [ToDo-App-Bildschirm]

Klicken Sie auf * Neue Instanz erstellen *. Hiermit gelangen Sie zu einer neuen Todo-Instanz, die von einer einzigartigen Instanz der Todo-Listen-App unterstützt wird.

Jede Instanz wird im Sandsturm als Grain bezeichnet. Diese App-Instanz ist einzigartig für Ihren Sandstorm-Benutzer. Wenn Sie versuchen, die URL in einem privaten Browserfenster in Ihrem Webbrowser zu öffnen, wird der Fehler Forbidden ​​angezeigt. Sie können die blaue Schaltfläche * Teilen * in der oberen Leiste von Sandstorm verwenden, um einen Freigabelink zu erstellen, damit andere Benutzer auf die Aufgabenliste zugreifen können.

Sie können diese Aufgabenliste verlassen, indem Sie oben links auf das Sandsturm-Logo klicken. Anschließend können Sie eine weitere Aufgabenliste erstellen. Alle Daten, die Sie in eine Todo-Listeninstanz eingeben, sind völlig unabhängig von den anderen.

Fazit

Wir haben gesehen, wie man eine in Meteor geschriebene Codebasis für Sandstorm packt. Es basiert auf Sandstorm für die Zugangskontrolle und kann problemlos mit anderen geteilt werden. Weitere Informationen zu Meteor finden Sie unter Ihre Website. Weitere Informationen zu Sandstorm finden Sie unter sandstorm.io.