在Ubuntu上,部署Meteor应用程序

・7 分钟阅读

本文将向你介绍,如何将你的Meteor应用程序部署到运行Ubuntu 14.04的VPS ,它也可以在其他Linux发行版(需自己把控风险)上工作。

一个名叫Arunoda Susiripala的聪明人,在Meteor社区非常活跃,他开发了一个部署工具mupx,简称Meteor up x,这使得通过ssh将Meteor应用程序部署到远程服务器变得非常容易,Mupx是mup的继承者,我们将从头到尾引导你完成整个过程。幸运的是,Mup做了大部分繁重的工作,所以,这会是一件轻而且易举的事!

我们的第一步是安装mupx ,你将在开发工作站上执行此操作,而不是在VPS服务器上执行此操作!确保你已经安装了Node.js,并运行:


$ npm install -g mupx

安装完成后,进入Meteor项目文件夹,例如,/projects/myApp,并运行以下命令:


$ mkdir .deploy
$ cd $_
$ mupx init

对于那些不熟悉$_语法的人来说,它是命令中最后一个参数的快捷方式,因此在本例中,cd $_作为cd .deploy执行。

你将看到以下输出:


Meteor Up: Production Quality Meteor Deployments
------------------------------------------------
Configuration file : mup.json
Settings file : settings.json

Empty Project Initialized!

初始化过程创建了两个文件,mup.jsonsettings.json ,我们现在将保留后面的文件,继续,打开mup.json ,在撰写本文时,默认的mup.json如下所示:


{
 // Server authentication info
"servers": [
 {
"host":"hostname",
"username":"root",
"password":"password",
 // or pem file (ssh based authentication)
 // WARNING: Keys protected by a passphrase are not supported
 //"pem":"~/.ssh/id_rsa"
 // Also, for non-standard ssh port use this
 //"sshOptions": {"port" : 49154 },
 // server specific environment variables
"env": {}
 }
 ],

 // Install MongoDB on the server. Does not destroy the local MongoDB on future setups
"setupMongo": true,

 // Application name (no spaces).
"appName":"meteor",

 // Location of app (local directory). This can reference '~' as the users home directory.
 // i.e.,"app":"~/Meteor/my-app",
 // This is the same as the line below.
"app":"/path/to/the/app",

 // Configure environment
 // ROOT_URL must be set to your correct domain (https or http)
"env": {
"PORT": 80,
"ROOT_URL":"http://myapp.com"
 },

 // Meteor Up checks if the app comes online just after the deployment.
 // Before mup checks that, it will wait for the number of seconds configured below.
"deployCheckWaitTime": 15,

 // show a progress bar while uploading. 
 // Make it false when you deploy using a CI box.
"enableUploadProgressBar": true
}

我们需要更改一些东西,以便安装过程能够正常工作。

首先,请确保将host设置为你的VPS IP地址,例如:


"host":"123.123.123.123",

如果需要使用默认22以外的端口号,可以使用sshoptions field执行这个操作,例如:


"host":"123.123.123.123",
"sshOptions": {"port": 9876 },

将username值设置为你要拥有Meteor应用程序的任何用户。出于安全考虑,我建议删除密码行,并且使用SSH密钥。使用pem值取消注释,并确保它指向你的SSH私钥,该密钥与你的fp (在/root/.ssh/authorized_keys中)安装的SSH公钥相对应,请确保在密码行后面添加逗号!如果你的SSH密钥附加了密码,请完全删除pem行,并确保你的SSH私钥被缓存在SSH代理中,在Mac上 ssh-add <path to ssh private key> )。

setupMongo设置为默认值。

appName更改为Meteor应用程序的名称,在我们的例子中:

 
"appName":"myApp",

 

.. .并设置应用程序的位置,相对于此部署文件夹:

 
"app":"..",

 

最后,将ROOT_URL设置为你的应用程序的指定URL ,显式地将端口号设置为标准HTTP端口。


// Configure environment
"env": {
"ROOT_URL":"http://myapp.com",
"PORT": 80
},

就是这样保存mup.json文件,然后运行:!

 
$ mupx setup

 

此时mupx会ssh插入你的VPS安装docker设置环境,并且拉取适当的docker镜像,现在部署你的应用程序:

 
$ mupx deploy

 

现在如果你去http://123.123.123.123,你的应用会在页面加载时显示。

多核心支持

如果你的VPS有多个内核,你的Meteor应用程序可以利用,我们得做一些快速调整。

首先,你需要安装集群包,进入Meteor应用程序(在本例子中,/projects/myApp )的文件夹,然后键入:


$ meteor add meteorhacks:cluster

现在编辑mup.json文件,并且修改环境变量部分,如下所示:


// Configure environment
"env": {
"ROOT_URL":"http://myapp.com",
"PORT": 80,
"CLUSTER_WORKERS_COUNT":"auto"
},

由于我们已经在你的应用程序中添加了一个新软件包,所以,你必须重新部署。


$ mupx setup && mupx deploy

如果你想在mup,json中更改环境变量,而不必部署整个应用程序只需使用configure命令即可,当没有应用程序更改时,这很有用。

 
$ mupx reconfig

 

恭喜,你的Meteor应用程序现在已经启动,并且运行!此外,只要你的VPS重新启动,你的应用就会自动启动。

Yanyan profile image