合作编写与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.html
在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
命令,这使得在开发模式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文件。
这将标记的Todo你Sandstorm主屏幕上创建一个新的项目。 在Sandstorm中安装应用程序可让您创建新实例(或文档)。 因此,单击该项目的Todo。 这将带您到以下屏幕:
单击创建新实例 。 这将带你进入一个新的Todo实例,由Todo列表应用程序的唯一实例提供支持。
每个实例被称为Sandstorm一粒 。 此应用程序实例是您的Sandstorm用户独有的。 如果您尝试在Web浏览器中打开一个隐私浏览窗口中的网址,你会得到一个禁止错误。 您可以使用蓝色共享按钮在Sandstorm顶部栏创建一个共享的链接,如果你希望别人能够访问待办事项列表。
您可以点击左上角的Sandstorm标志,留下此待办事项列表。 一旦你这样做,你会看到你可以创建另一个Todo列表。 您输入到一个Todo列表实例中的任何数据完全独立于其他实例。
结论
我们已经看到了如何获取在Meteor中编写的代码库,并将其打包为Sandstorm。 它依赖Sandstorm进行访问控制,并且可以轻松地与他人共享。 要了解更多关于Meteor,请访问他们的网站 。 要了解更多关于Sandstorm,请访问sandstorm.io 。