七、打包和部署

我们的应用看起来很棒。 我们让它变得安全、易于使用,并添加了多个登录,现在任何人都可以使用借阅图书馆来跟踪他们的东西。

在最后一章中,我们将介绍 Meteor 令人惊叹的软件包系统,它将加速未来的代码项目,我们还将讨论部署应用的选项。 您将学习如何:

  • 添加和配置第三方包,如 jQuery、Backbone 和 Bootstrap
  • 打包您的整个应用,以便部署它
  • 使用 Meteor 的公共服务器部署应用
  • 将应用部署到自定义服务器

第三方包

Meteor是快速添加包为的主要 JavaScript 和预处理库。 这些包是智能的,因为它们不仅包含基础 JavaScript 或预处理库,而且还配置为与 Meteor 代码库直接交互。

这对您来说意味着添加您最喜欢的库几乎不需要任何努力,您可以相信它将与您的 Meteor 应用一起工作。

列出可用的软件包

要查看可用包的列表和简短的描述,只需在终端中输入以下命令,并按enter:

$ meteor list

这将给你一个所有软件包的清单与 Meteor 的版本,你已经安装。

正如你所看到的,有相当多的流行框架可用,包括 jQuery、Backbone、下划线和 Twitter 的 Bootstrap! 我们花了大量的时间手动下载 Bootstrap,创建客户端文件夹,并提取 Bootstrap 文件。 这是一个关于如何手动安装框架的很好的练习,但是现在我们将学习如何将它作为一个包安装。

首先,让我们删除现有的 Bootstrap 安装。 导航到~/Documents/Meteor/LendLib/client/,删除bootstrap目录。 不管你的 Meteor 应用是否在运行(记住,Meteor 是动态更新的!) 要么启动它,然后导航到http://localhost:3000,或者如果它已经在运行,就直接导航到那里。 你会看到,我们所有的漂亮格式都消失了!

Listing available packages

我们现在将添加官方 Meteor 引导包。 因为 Meteor 是动态更新的,所以我们无需停止 Meteor 应用。 打开一个新的终端窗口或暂时停止 Meteor 应用,并确保你在~/Documents/Meteor/LendLib文件夹。 在那里,输入以下命令:

$ meteor add bootstrap

你会收到一条非常短的信息:

bootstrap: UX/UI framework from Twitter

如果您使用了第二个终端窗口,只需转到浏览器(您甚至不需要刷新页面)。 如果你停止 Meteor 应用,重新启动它,并导航到http://localhost:3000。 你将能够看到,引导格式现在回来了,一切都恢复正常:

Listing available packages

这就是它的全部。 在终端中使用一个命令,就可以将库或框架添加到项目中,而不必担心链接、下载和确保文件位于正确的位置。 只要跑起来,你就可以走了!

提示

您可以通过在终端中输入以下命令获得您已经在使用的包的列表:meteor list --using

因为 Meteor 添加软件包的速度如此之快,所以保持当前的 Meteor 安装是一个好主意。 不时在终端中执行以下命令:

$ meteor update

如果你使用的是最新版本,它会告诉你是什么版本,以及你运行的是什么版本。 如果有新版本,它会帮你下载并安装。

绑定您的应用

在通常的 Meteor 时尚,捆绑你的应用,所以它可以部署是难以置信的简单。 如果 Meteor 应用正在运行,请停止它,确保你在应用文件夹中(对于出借库,它是~/Documents/Meteor/LendLib),并在终端中输入以下命令:

$ meteor bundle lendlib.tgz

这将需要一点时间来运行,但当它完成时,您将有一个lendlib.tgztarball 在您的LendLib文件夹,并准备部署它的任何地方,你想。 这是一个完整的包/包。 你部署这个包的机器只需要安装 Node.js 和 MongoDB。 您需要的其他所有内容都包含在包中。

部署到 Meteor 的服务器

Meteor 的开发者们在部署方面更进一步,甚至超出了你对付费产品的预期,更不用说免费产品了。 Meteor 允许您直接将应用部署到它们的部署服务器上。 为你的应用选择一个名称(我们将使用packt.lendlib,,但你需要自己想出一个),并在终端中输入以下命令:

$ meteor deploy [your app name].meteor.com

因此,在我们的例子中,我们输入meteor deploy``packt.lendlib.meteor.com。 控制台将在捆绑、上传和部署应用时向您提供状态更新。 一旦完成,它会给你一个类似以下的信息:

Now serving at [your app name].meteor.com

如果您在浏览器中导航到该 URL(例如,http://packt.lendlib.meteor.com),您将看到您的应用部署和运行!

Deploying to Meteor's servers

提示

您可能希望在开始使用应用之前创建admin登录,或者告诉其他人。 你不想让卑鄙的STEVE控制你的应用!

更新 Meteor 的服务器

如果你做了修改,或者出现了漏洞,你想要在 Meteor 服务器上更新应用的代码怎么办? 正如你可能猜到的,这是超级简单的。 重新运行deploy命令:

$ meteor deploy [your app name].meteor.com

这不仅能更新你的应用,还能保存你的数据,所以如果你已经输入了很多信息,你就不必从头开始。 很光滑的,对吧? Meteor 的人真的知道什么能让开发变得有趣,他们竭尽所能地提供一个环境,让你可以编写代码,玩游戏,并获得即时反馈。

使用自己的主机名

但是等等,还有更多! 你甚至可以使用你自己的主机名和你部署在 Meteor 服务器上的应用。 使用主机提供商设置指向origin.meteor.com的 CNAME,然后可以部署到该主机名。 例如,如果我们有子域meteor.too11.com作为 CNAME 指向origin.meteor.com,我们将在终端中运行以下命令:

$ meteor deploy meteor.too11.com

如果您的 CNAME 设置正确,它将像直接部署到[your app name].meteor.com一样部署,并且将与您定制的主机名一起使用!

提示

请与您的主机提供商确认是否设置了 CNAME 路由。 不同的提供商有不同的要求,但是很容易做到。

部署到自定义服务器

在撰写本文时,将 Meteor 应用部署到托管服务或您自己的个人机器上是一项相当繁重的任务。 部署存在版本问题,大多数托管服务仍处于支持 Meteor bundle 的早期阶段。

也就是说,我们将演示如何将 Meteor 应用部署到自定义服务器,并将托管服务(如 Heroku 或 AppFog)的探索留给您自己。

服务器设置

您将托管应用的服务器需要两件事:

  • Node.js, 0.8 或更高版本
  • MongoDB(最新版本)

要安装 Node.js,请进入到http://nodejs.org/,并按照 Linux 或 Mac OS X 的安装说明安装。

要安装 MongoDB,访问http://docs.mongodb.org/manual/installation/,并按照相应操作系统的说明操作。 安装后,确保设置一个数据库,并将其命名为lendlib

一旦安装和配置了这两个产品,您将拥有 MongoDB 的默认位置。 这将类似于mongodb://localhost:27017/lendlib。 您将在以后的步骤中需要该 URI,因此请确保将其写下来或使其可用以供参考。

或者,您可以在远程服务器上设置 MongoDB,或者使用托管服务,如 MongoHQ(https://www.mongohq.com)。 如果使用远程服务,请设置一个新的数据库,并注意所需的 URI。 下面是来自 MongoHQ 的一个例子:

Server setup

部署您的 bundle

如果您还记得,我们在本章前面创建了一个 tarball。 现在我们需要提取 tarball,并做一些修改,然后我们准备打开我们的应用。复制lendlib.tgz到您的服务器,在您将用于部署的目录(例如~/Sites/LendLib)。 一旦lendlib.tgz进入正确的位置,使用以下命令提取 tarball:

$ tar –zxvf lendlib.tgz && rm lendlib.tgz

这将解压压缩文件,您将有一个名为bundle的新文件夹。

可选-不同平台

如果开发应用的机器与要部署的机器不同,则需要重新构建本机包。 为此,输入node_modules目录:

$ cd bundle/server/node_modules

删除fibers目录:

$ rm –r fibers

现在重建fibers,使用npm:

$ npm install fibers

这将安装最新的fibers版本,针对您正在部署的平台。 如果dev机器和deploy机器运行相同的平台,则不需要这样做。

运行应用

现在正确地提取了包,就可以打开应用了。 你将需要以下信息来启动你的应用:

  • 根 URL(例如,http://lendlib.mydomain.comhttp://localhost)
  • 你想要运行应用的端口(例如,80)
  • 您的 MongoDB URI(例如,mongodb://<user>:<password>@alex.mongohq.com:10022/lendlib)

一旦您做出了决定并收集了这些信息,就为您的应用启动 Node.js。 导航到您的root文件夹(我们的是~/Sites/LendLib),并输入以下内容:

$ PORT=80 ROOT_URL=http://localhost MONGO_URL=mongodb://<user>:<password>@alex.mongohq.com:10022/lendlib node bundle/main.js

让我们来分析一下:

  • PORT设置端口变量,以便 NodeJS 知道你想为应用表单提供什么端口
  • ROOT_URL设置rootUrl变量,所以 NodeJS 知道你的应用的主机名请求是什么
  • MONGO_URL告诉 NodeJS 在哪里可以找到我们的 MongoDB
  • node为调用命令
  • bundle/main.js是 NodeJS 调用的启动 JavaScript 文件

如果你所有的信息都是正确的,应用就会运行,你可以使用浏览器测试它:

Running your application

您还可以进一步了解部署,比如设置环境变量,将应用作为守护进程/服务运行,甚至使用远程服务器公开托管应用。 我们目前所做的应该足以让你开始,并在你的方式在生产环境中使用 Meteor。

小结

你现在是 Meteor 专家了! 认真对待。 你知道如何在 Meteor 从一开始就建立一个应用。 您了解 Meteor 背后的设计模式和数据库原则,您可以定制、优化和保护您的应用来做任何您想做的事情。 您还可以将 Meteor 部署到多个环境中。 现在,您正在编写高效、高效、坚如磐石的 web 应用。

因为 Meteor 是如此的新,很少有人拥有像你现在拥有的那么多关于 Meteor 的工作知识。 从定义上说,这让你成为了专家。 现在就看你如何运用这些专业知识了。 建议在您即将到来的开发项目中使用 Meteor,通过代码贡献贡献给 Meteor 社区,回答论坛上的问题,并制作您自己的教程。

Meteor 是一种突破性的技术,获得越来越多的动力,现在你有知识和经验在你的个人和专业发展项目中使用这种突破性的技术,保持你的良好的曲线,使你的生活作为一个开发人员更有回报。