如何运行一个应用程序Meteor安全地与Sandstorm在Ubuntu 14.04

合作编写与Sandstorm

介绍

Meteor是一个JavaScript框架,它允许Web开发人员编写一次JavaScript代码,并在客户端和服务器端都重用它。 另一个教程将介绍如何部署Meteor应用在使用Nginx的Upstart ,但本教程涵盖了部署Meteor应用不同的方法:创建并运行一个Sandstorm包。

Sandstorm是个人服务器的开源平台,这意味着它可以用于在一个服务器上安装许多不同的应用程序,并具有非常易于使用的界面。 一个prevoius教程展示了如何安装Sandstorm运行像WordPress和链接到MediaWiki应用; 本教程将介绍如何运行自定义应用程序,就像您自己编写的一样。

在Sandstorm中,安装应用程序可让您使用该应用程序创建新文档。 每个文档是应用程序的一个独立的运行实例,并且每个文件(其中Sandstorm调用 )供电的代码是默认私人。 这是一个意义,在Sandstorm使得它很容易安全地运行Meteor应用程序; Sandstorm处理访问控制。 在本教程中,您将了解如何安装应用程序,然后创建多个应用程序实例。

有多个用例想要创建Sandstorm应用程序。 第一种用例是用于个人或公司使用。 这意味着打包一个应用程序并将其部署到您或您公司的Sandstorm服务器上,并利用Sandstorm的沙盒和访问控制。 另一个用例是创建一个Sandstorm应用程序发布它为其他Sandstorm用户的。 例如,这可以被公布apps.sandstorm.io ,但你也可以自己发布。 用户将知道应用程序的开发人员无法读取其数据。 本教程适用于这两种情况。

先决条件

要遵循本教程,您需要:

  • 本地计算机,将用于构建Sandstorm包。 此计算机需要:

    • 是一个至少有1GB RAM的64位机器。 本教程包含Ubuntu 14.04和Mac OS X的说明。
    • 已安装的Git,这将被用来下载vagrant-spk和我们的示例应用程序。 您可以按照安装的Git 这个混帐教程的Ubuntu 14.04,或Git的Mac安装指南的OS X.
    • 已安装放浪,你可以从做流浪的安装页面 Vagrant用于创建Sandstorm在开发模式下运行的虚拟机。
    • 有一些虚拟化软件,比如VirtualBox的 ,安装。
  • 一个Ubuntu的14.04Droplet与Sandstorm安装测试你的包,你可以通过下面的做这前面的教程

  • (可选)您要打包的应用程序,使用Meteor框架编写。 本教程显示了使用Meteor提供的示例待办事项列表应用程序的步骤,如果您没有要使用的其他应用程序。

第1步 - 下载示例应用程序和vagrant-spk

在这一步中,我们将下载我们将创建一个Sandstorm包为Meteor应用程序,并且还Sandstorm的包装工具, vagrant-spk

首先,创建并进入新目录projects ,以避免与新文件得到堆满你的home目录。

mkdir ~/projects
cd ~/projects

我们将使用本教程中的示例应用程序是简单待办事项 ,由Meteor所提供的应用程序。 但是,如果要使用自己的Meteor应用程序,也可以跳过此步骤。

通过从Meteor的GitHub克隆它来下载此应用程序。

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

接下来,我们将安装vagrant-spk (这是Sandstorm的包装工具)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线“待办事项”。

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单独的身份验证。 但是,当我们登录到Sandstorm时,我们希望使用Todos应用程序登录,因此我们需要向Meteor应用程序添加单独的软件包。

当仍然连接到VM时,切换到主软件包目录。

cd /opt/app

接下来,我们将添加kenton:accounts-sandstorm封装到应用程序Meteor,这暴露了当前Sandstorm账户Meteor应用。

meteor add kenton:accounts-sandstorm

您现在可以退出与Vagrant VM的连接。

exit

在这个Todo应用程序的情况下,页面仍然包含登录和注销按钮,这是不必要的。 接下来,我们将删除它们。

打开该文件simple-todos.htmlproject/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命令,这使得在开发模式SandstormVM上运行,从而提供你的包。 因此,运行应用程序的目录命令(在这种情况下, simple-todos )。

vagrant-spk dev

当它完成初始化时,它将打印以下消息:

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

这意味着您现在可以在参观Sandstormhttp://local.sandstorm.io:6080/ 您现在可以通过与开发帐号按下登录。

登录屏幕

然后点击爱丽丝(管理员)。 这将使用管理员帐户登录,这将允许您创建新实例。 您可以保留默认值确认您的个人资料页,然后按紫色的继续按钮不做改变。

接下来,点击待办事项应用程序,然后单击创建新实例

新实例

第6步 - 创建和上传SPK

创建Sandstorm包的最后一步是创建一个包含应用程序,Meteor的副本以及应用程序的任何进一步依赖关系的SPK文件。 这个步骤是由全自动meteor-spk工具。

首先,按停止开发服务器CTRL+C 然后,打包应用程序。

vagrant-spk pack todo.spk

这将在当前目录中创建一个SPK文件。

另一方面,在我们的例子中,SPK文件大约是11 MB。 Sandstorm应用程序通常是少数兆字节,即使它们包含应用程序和所有依赖项,包括任何操作系统依赖项。

完成应用程序开发后,需要先关闭虚拟机,然后再创建第二个应用程序。 因此,请执行以下命令:

vagrant-spk halt

如果你想继续无论出于何种原因的发展,你可以简单地运行vagrant-spk up

第7步 - 创建待办事项列表

在本节中,我们将在您的Droplet上的Sandstorm服务器上安装该软件包,并创建一个新的应用程序实例。

登录到您的DropletSandstorm,你会看到在您的主屏幕的应用程序上传按钮。 单击该按钮,然后通过您在第6步中创建的Web浏览器选择SPK文件。

Sandstorm上传应用

这将标记的Todo你Sandstorm主屏幕上创建一个新的项目。 在Sandstorm中安装应用程序可让您创建新实例(或文档)。 因此,单击该项目的Todo。 这将带您到以下屏幕:

Todo应用程序屏幕

单击创建新实例 这将带你进入一个新的Todo实例,由Todo列表应用程序的唯一实例提供支持。

待办事项列表

每个实例被称为Sandstorm一粒 此应用程序实例是您的Sandstorm用户独有的。 如果您尝试在Web浏览器中打开一个隐私浏览窗口中的网址,你会得到一个禁止错误。 您可以使用蓝色共享按钮在Sandstorm顶部栏创建一个共享的链接,如果你希望别人能够访问待办事项列表。

您可以点击左上角的Sandstorm标志,留下此待办事项列表。 一旦你这样做,你会看到你可以创建另一个Todo列表。 您输入到一个Todo列表实例中的任何数据完全独立于其他实例。

结论

我们已经看到了如何获取在Meteor中编写的代码库,并将其打包为Sandstorm。 它依赖Sandstorm进行访问控制,并且可以轻松地与他人共享。 要了解更多关于Meteor,请访问他们的网站 要了解更多关于Sandstorm,请访问sandstorm.io

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏