使用Meteor开发下一代JavaScript实时Web应用(三)
在文章任何区域双击击即可给文章添加【评注】!浮到评注点上可以查看详情。

enter image description here

使用Meteor开发下一代JavaScript实时Web应用(三)

在本章中,你将学到:

  • 如何将你的应用部署到Meteor.com上
  • 如何将你的应用部署到Heroku上
  • 如何将你的应用部署到自己的服务器上

有些人喜欢将自己的应用精心打磨,直到它变得完美为止,然而另外一些人却想要向世界尽快展示自己的应用。

如果你的第一种类型的人,你现在更需要专注于在本地开发你的应用,同时可以放心的跳过本章。如果你是第二种类型的人,你可能想要尽快了解如何将你的Meteor部署上线,我们将在本章中一起来了解这方面的内容。

在本章中,我们将讲述三种部署Meteor应用的方法:Meteor.com,Heroku,以及你自己的服务器。

部署到Meteor.com

将你的应用部署到Meteor.com的方法不能再简单了。打开命令行界面,导航到你的应用所在文件夹,然后输入下面的命令:

$ meteor deploy myapp.meteor.com  

如果你使用的是Meteorite:

$ mrt deploy myapp.meteor.com  

另外,如果你想要使用自己的域名,你可以将CNAME重定位到origin.meteor.com 然后使用下面的命令:

$mrt deploy www.myapp.com  

你可以将你的应用免费的托管到Meteor上,但是由于你不能够使用监控工具,并且不能控制你的资源,这样的方式还是存在一些限制。

部署到Heroku上

将你的应用部署到Heroku上同样也是免费的(只要你使用一个dyno,这也是你能将Meteor应用部署到Heroku上的唯一方式),但是同时你对应用的控制少了很多。

我们在此不准备讲述如何安装Git和Heroku命令行工具,但是这两个东西都可以通过Heroku Toolbet轻易获得。

在此,你需要使用Heroku Buildpack for Meteorite。Heroku Buildpacs包含一些针对于Heroku如何配置服务器的特殊的指令,它能够使Meteor应用更加顺利的运行。

如果你想要创建一个新的Heroku应用,使用下面的命令来指明正确的buildpack:

$ heroku create --stack cedar --buildpack https://github.com/oortcloud/heroku -buildpack-meteorite.git  

或者,你可以将一个buildpack添加到一个已经存在的Heroku应用中:

$ heroku config:add BUILDPACK_URL=https://github.com/oortcloud/heroku-buildpa ck-meteorite.git  

同时,你需要为你的应用提供一个MongoDB数据库。我们在此推荐Heroku中的MongoHQ插件(你可以通过它来轻松的查看数据),你可以web管理界面来完成此事,或者通过下面的命令:

$ heroku addons:add Mongohq:small  

在我们的Heroku实例准备好之前,我们需要配置Meteor的ROOT_URL环境变量来说明这个应用在哪里运行:

$ heroku config:add ROOT_URL=http://www.domain.com  

此时也是一哪家一些配置变量的好时候,例如MAIL_URL。例如,如果你想要使用Mailgun从你的应用中发送邮件,你需要输入下面的命令:

$ heroku config:add MAIL_URL=smtp://postmaster%40YOUR_DOMAIN.mailgun.org:YOUR _PASSWORD@smtp.mailgun.org:587/  

到现在配置已经完成了,你所需要做的是用Git将应用push到Heroku上:

$ git push heroku  

恭喜你,你的应用现在应该已经开始运行了!顺便要提到的是,如果你需要显示你的配置变量(例如你的MongoDB数据库地址),只需要运行下面的命令:

$ heroku config  

部署到你自己的服务器上

到现在为止,我们已经讨论了如何将你的Meteor应用部署到Meteor.com和Heroku上。现在让我们更进一步,来讨论如何从零开始配置我们的服务器来运行我们的应用,比如说在EC2或者Digital Ocean这样的云平台上。

介绍Meteoric

我们将下面要讲述的过程打包进了Meteoric,它是一个安装在本地环境中非常方便的脚本,能够让你将你的应用部署到EC2上,你只需要运行两条命令:meteoric setup和meteoric deploy。

现在我们就来看看如何将一个Meteor应用部署到一个EC2中最新版本的Ubuntu服务器上。从你的Amazon管理控制台中开启一个EC2势力,然后像往常一样连接到它。

我们首先需要安装git和MongoDB:

$ sudo apt-get install git mongodb  

需要记住的一点是当你的Meteor应用部署到服务器上时,Node也在不断发生变化,如果使用旧版本的Node,那么一些Meteor的新特性可能得不到支持。

其中一个解决办法就是使用nvm(Node version manager),但是它设置起来可能有一些麻烦,由此当你在root权限下运行node时。

因此另一个简单的办法是为旧版本的node添加apt-get仓库:

$ sudo add-apt-repository ppa:chris-lea/node.js-legacy $ sudo apt-get update
$ sudo apt-get install nodejs npm  

一旦Node安装完成,你就可以安装Meteor和Meteorite了:

$ curl https://install.meteor.com | /bin/sh   
$ sudo npm install -g meteorite   

接下来,检查你的git仓库,例如在/home/meteor目录下运行:

git clone https://github.com/DiscoverMeteor/microscope.git  

下一步是bundle你的应用,例如,在一个tarball中生成一个完整的Node应用。你完全可以在你的开发环境中bundle你的应用,然后将它转换为tarball,但是现在我们推荐在服务器上检查实际的代码。这种方法有以下几点好处:

  • 它是基于Git的
  • 它不需要你再本地安装Meteor
  • 它不需要你重构一些包例如Fibers
  • 它允许你实现代码热修复

为了bundle并untag我们的应用,我们需要运行以下命令:

$ cd mymeteorapp
$ meteor bundle ../bundle.tgz 
$ cd ..
$ tar -zxvf bundle.tgz 

然后,我们运行我们的应用:

$ sudo PORT=80 MONGO_URL=mongodb://localhost:27017/myapp ROOT_URL=http://myap p.com node bundle/main.js   

如果你在传统的80端口上运行你的应用,记住要在root权限下运行这条命令,因为非root用户无法访问80端口。除此之外,你还可以在其他非80端口上运行你的应用。

你可以使用同一条命令来配置其他的选项(MAIL_URL,ROOT_URL)。

接下来,我们需要确保应用持续的运行,最简单的方法是使用forever:

$ npm install -g forever
$ forever start bundle/main.js  

Forever会为你保存环境变量,因此你只需要在开始运行你的应用之前导出它们:export PORT=80 MONGO_URL=mongodb://localhost:27017/myapp ROOT_URL=http://myapp.com

最后,还有一些重要的事情要做以保证你的应用无懈可击:在机器重启时自动运行你的应用。

使用Ubuntu系统的Upstart,你可以轻松地告诉你的OS你的meteor应用需要在服务器重启时自动运行。将下面的代码片段添加到/ect/init/meteor.conf中,然后输入service meteor start。你不需要自动复位,因为forever已经为你处理好了一切!

# /etc/init/meteor.conf
start on (local-filesystems) stop on shutdown
script
cd /home/ubuntu
export PORT=80 MONGO_URL=mongodb://localhost:27017/myapp ROOT_URL=http:// myapp.com
exec forever start bundle/main.js end script

本系列文章译自Discover Meteor,正版图书购买地址:http://www.discovermeteor.com

如果你觉得本文对你有帮助,为我提供赞助:https://me.alipay.com/jabez128

评论
发表评论
暂无评论
WRITTEN BY
张小俊128
Intern in Baidu mobile search department。认真工作,努力钻研,期待未来更多可能。
TA的新浪微博
PUBLISHED IN
使用Meteor开发下一代JavaScript实时Web应用

介绍Meteor框架的基础知识,帮助你快速上手用Meteor开发实时web应用

友情链接 大搜车前端团队博客
我的收藏