在Ubuntu上,部署Meteor应用程序
Yanyan
・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.json
和settings.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重新启动,你的应用就会自动启动。