Meteor是一个JavaScript框架,允许Web开发人员编写一次JavaScript代码并在客户端和服务器端重用它。本教程介绍了部署Meteor应用程序的不同方法:创建和运行Sandstorm软件包。
Sandstorm是个人服务器的开源平台,这意味着它可以用于在一台服务器上安装许多不同的应用程序,并且界面非常简单。本教程介绍了如何运行自定义应用程序,就像您自己编写的那样。
在Sandstorm中,安装应用程序使您可以使用该应用程序创建新文档。每个文档都是应用程序的独立运行实例,默认情况下,为每个文档(Sandstorm称为粒度)提供支持的代码是私有的。这就是Sandstorm可以安全地运行Meteor应用程序的感觉; Sandstorm处理访问控制。在本教程中,您将了解如何安装应用程序,然后创建多个应用程序实例。
想要创建Sandstorm应用程序有多种用例。第一个用例是个人或公司使用。这意味着打包应用程序并将其部署在您或您公司的Sandstorm服务器上,并利用Sandstorm的沙盒和访问控制。另一个用例是创建一个Sandstorm应用程序,以便将其发布给其他Sandstorm用户。例如,这可以在apps.sandstorm.io上发布,但您也可以自己分发。用户将知道应用程序的开发人员无法读取他们的数据。本教程适用于这两种方案。
要学习本教程,您需要:
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 ...]]
. . .
在本节中,我们将创建实际的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
此命令将花费一些时间来执行。
在本节中,我们将实际打包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.
. . .
然后保存并关闭该文件。
目前,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帐户。
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应用程序,然后单击“ 创建新实例”。
创建Sandstorm包的最后一步是创建一个包含应用程序的SPK文件,Meteor的副本以及该应用程序的任何其他依赖项。该步骤由该meteor-spk
工具完全自动化。
首先,按下CTRL+C
停止开发服务器。然后,打包应用程序。
vagrant-spk pack todo.spk
这会在当前目录中创建一个SPK文件。
顺便说一下,在我们的例子中,SPK文件大约是11 MB。Sandstorm应用程序通常只有几兆字节,即使它们包含应用程序和所有依赖项,包括任何操作系统依赖项。
完成应用程序的开发后,需要在创建第二个应用程序之前关闭虚拟机。因此,请执行以下命令:
vagrant-spk halt
如果你想以任何理由继续开发,你可以简单地运行vagrant-spk up
。
在本节中,我们将在腾讯云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 删除。