首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Ubuntu 14.04上使用Sandstorm安全地运行流星应用程序

如何在Ubuntu 14.04上使用Sandstorm安全地运行流星应用程序

原创
作者头像
小翼111
修改2018-10-12 18:24:48
1.5K0
修改2018-10-12 18:24:48
举报

介绍

Meteor是一个JavaScript框架,允许Web开发人员编写一次JavaScript代码并在客户端和服务器端重用它。本教程介绍了部署Meteor应用程序的不同方法:创建和运行Sandstorm软件包。

Sandstorm是个人服务器的开源平台,这意味着它可以用于在一台服务器上安装许多不同的应用程序,并且界面非常简单。本教程介绍了如何运行自定义应用程序,就像您自己编写的那样。

在Sandstorm中,安装应用程序使您可以使用该应用程序创建新文档。每个文档都是应用程序的独立运行实例,默认情况下,为每个文档(Sandstorm称为粒度)提供支持的代码是私有的。这就是Sandstorm可以安全地运行Meteor应用程序的感觉; Sandstorm处理访问控制。在本教程中,您将了解如何安装应用程序,然后创建多个应用程序实例。

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

准备

要学习本教程,您需要:

  • 本地计算机,用于构建Sandstorm包。这台电脑需要:
    • 是一台64位机器,至少有1GB的RAM。本教程提供了有关Ubuntu 14.04和Mac OS X的说明。
    • 安装了Git,它将用于下载vagrant-spk和我们的示例应用程序。
    • 安装了Vagrant,您可以从Vagrant的安装页面进行安装。Vagrant用于创建Sandstorm在开发模式下运行的虚拟机。
    • 安装了一些虚拟化软件,如VirtualBox
  • 安装了一个安装了Sandstorm的Ubuntu 14.04 腾讯云CVM来测试你的软件包。
  • (可选)使用Meteor框架编写的要打包的应用程序。如果您没有其他要使用的应用程序,本教程将显示使用Meteor提供的示例待办事项列表应用程序的步骤。

没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

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

在这一步中,我们将下载Meteor应用程序,我们将为其创建一个Sandstorm软件包,以及Sandstorm的打包工具vagrant-spk

首先,创建并移动到一个名为projects的新目录,以避免主目录被新文件弄得乱七八糟。

mkdir ~/projects
cd ~/projects

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

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

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

接下来,我们将从Sandstorm的GitHub 安装vagrant-spk(这是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

您应该看到如下消息:

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

您将看到类似于此的输出:

Initializing .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中创建sandstorm-pkdef.capnp文件。我们需要对此文件进行一些更改。

连接到Vagrant VM。

vagrant-spk ssh

然后使用nano或您喜欢的文本编辑器打开/opt/app/.sandstorm/sandstorm-pkdef.capnp

nano /opt/app/.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”。

. . .
    # 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应用程序,该页面仍包含登录和注销按钮,这些按钮不是必需的。接下来,我们将删除它们。

使用你喜欢的文本编辑器打开在project/simple-todos目录的文件simple-todos.html

nano simple-todos.html

找到以下部分并删除该loginButtons行,下面以红色突出显示。然后保存并关闭该文件。

. . .
        Hide Completed Tasks
      </label>
​
      {{> loginButtons}}
​
      {{#if currentUser}}
. . .

接下来,打开文件simple-todos.js

nano 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/访问Sandstorm 。您现在可以通过使用开发帐户按下来登录

然后单击Alice(管理员)。这将使用管理员帐户登录,您可以使用该帐户创建新实例。您可以保留确认个人资料页面的默认值,然后按紫色的继续按钮而不进行任何更改。

接下来,单击Todo应用程序,然后单击“ 创建新实例”

第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列表

在本节中,我们将在腾讯云CVM上的Sandstorm服务器上安装该软件包,并创建该应用程序的新实例。

登录腾讯云CVM上的Sandstorm,您将在主屏幕上看到上传应用按钮。单击该按钮,然后通过在步骤6中创建的Web浏览器选择SPK文件。

这将在Sandstorm主屏幕中创建一个标记为Todo的新项目。在Sandstorm中安装应用程序使您能够创建新实例(或文档)。因此,单击项目Todo。这将带您进入以下屏幕:

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

每个实例在Sandstorm中称为粒子。此应用实例对于您的Sandstorm用户是唯一的。如果您尝试在Web浏览器的私人浏览窗口中打开URL,则会出现“ 禁止”错误。如果您希望其他人有权访问Todo列表,您可以使用Sandstorm顶部栏中的蓝色“ 共享”按钮创建共享链接。

您可以通过单击左上角的Sandstorm徽标离开此待办事项列表。完成后,您将看到可以创建另一个Todo列表。您输入到一个Todo列表实例中的任何数据都完全独立于其他数据。

结论

我们已经看到了如何使用Meteor编写的代码库并将其打包为Sandstorm。它依靠Sandstorm进行访问控制,并且可以轻松与其他人共享。

想要了解更多关于使用Sandstorm安全地运行流星应用程序的相关教程,请前往腾讯云+社区学习更多知识。


参考文献:《How To Run A Meteor App Securely With Sandstorm on Ubuntu 14.04》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 准备
  • 第1步 - 下载示例应用程序和vagrant-spk
  • 第2步 - 运行Sandstorm VM
  • 第3步 - 创建包定义
  • 第4步 - 添加Sandstorm登录到应用程序
  • 第5步 - 在开发中测试应用程序
  • 第6步 - 创建和上传SPK
  • 第7步 - 创建Todo列表
    • 结论
    相关产品与服务
    云服务器
    云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档