如何将生产MeteorJS应用程序部署到Windows Azure?
答案 0 :(得分:6)
是的。见http://www.meteorpedia.com/read/Deploying_to_a_PaaS
在大多数情况下,这就像使用" meteor bundle"一样简单, demeteorizer,然后使用您的PaaS上传生成的文件 提供商CLI deploy tool。
Demeteorizer通过创建来包装和扩展Meteor的bundle命令 更接近标准外观Node.js的东西 应用程序,以及依赖的package.json文件 管理。
$ cd /my/meteor/app
$ demeteorizer -o /my/node/app
$ cd /my/node/app
$ npm install
$ export MONGO_URL='mongodb://user:password@host:port/databasename?autoReconnect=true&connectTimeout=60000'
$ export PORT=8080
$ forever start main.js
Forever让您的应用在断开连接或崩溃后保持运行but not a reboot unless you manually add a boot entry。
整个部署使用much easier代替Meteor Up。或者也许mups,尽管它甚至没有更新过的文档。
在Azure网络应用中运行Meteor应用:
Azure Web App
Python 2.7
Websockets ON (optional)
WEBSITE_NODE_DEFAULT_VERSION 0.10.32 (default)
ROOT_URL http://webapp.azurewebsites.net
MONGO_URL mongodb://username:password@instance.mongolab.com:36648/dbname (For advanced apps. Request log should say if you need it.)
Dev Machine
Install Visual Studio Community 2015
Install Node 0.12.6
Install Meteor MSI
app> demeteorizer -o ..\app-dem
app-dem\programs\server\packages\webapp.js change .PORT line to "var localPort = process.env.PORT"
app-dem\package.json change "node": "0.10.36" to "node": "0.12.6"
app-dem> npm install
app-dem> git init
app-dem> git add -A .
app-dem> git commit -m "version 1.0 demeteorized Meteor + tweaks"
app-dem> git remote add azure https://username@webapp-slot.scm.azurewebsites.net:443/webapp.git
app-dem> git config http.postBuffer 52428800
app-dem> git push azure master
而不是demeteorizer -o
,也许您可以使用meteor build
并在输出根目录中创建package.json:
{
"name": "App name",
"version": "0.0.1",
"main": "main.js",
"scripts": {
"start": "node main.js"
},
"engines": {
"node": "0.12.6"
}
}
如果bcrypt没有编译,请确保使用更新的版本:
"dependencies": {
"bcrypt": "https://registry.npmjs.org/bcrypt/-/bcrypt-0.8.4.tgz"
}
答案 1 :(得分:4)
在开始之前,请确保已安装了32位版本的nodejs并在Windows构建计算机上运行了“npm -g install fibers”。 azure上的默认nodejs仅运行32位!
注意:如果你使用例如在PhantomJS上传递的spiderable包,这将不起作用。 PhantomJS无法在azure上的webapp中执行?
{
"name": "AppName",
"version": "0.0.1",
"main": "main.js",
"scripts": {
"start": "node main.js"
},
"engines": {
"node": "0.12.6"
}
}
注意:确保“name”不包含空格,azure上的部署将失败。
它看起来像这样:
var localPort = parseInt(process.env.PORT) || 0;
将此行改为:
var localPort = process.env.PORT || 0;
这是必需的,因此您的meteor项目可以在节点中运行后立即接受命名套接字。函数“parseInt”不允许字符串通过,命名套接字是位于webapp环境中的字符串。我这样做是有原因的,这是一个警告!现在保存这个改变,我们差不多完成了......
现在替换位于以下位置的文件:“.. \ buildOut \ bundle \ programs \ server \ npm \ npm-bcrypt \ node_modules \ bcrypt *”
目录和文件位于某处:“。\ bcrypt-0.8.4 \ package *”
现在转到目录“.. \ buildOut \ bundle \ programs \ server \ npm \ npm-bcrypt \ node_modules \ bcrypt \”中的shell,并确保删除“node_modules”目录。如果未删除node_modules目录,则npm将不会出于某种原因构建程序包。
在shell上运行“npm install”。
确保在门户网站中为您的webapp设置“环境”变量:“MONGO_URL”和“ROOT_URL”。
如果一切正常但没有错误,您可以将应用程序部署到Web应用程序的部署插槽上的git存储库中。转到“.. \ buildOut \ bundle”并将文件提交到部署槽的存储库。这将在部署插槽上进行部署,并创建所需的iis配置文件。
现在稍等一下,你的应用程序应该在一段时间后启动...你的应用程序应该正在运行,你可以在* .azuresites.net上访问它
感谢所有这一切。