如何将MeteorJS应用程序部署到Windows Azure?

时间:2013-01-10 20:08:51

标签: azure meteor

如何将生产MeteorJS应用程序部署到Windows Azure?

2 个答案:

答案 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中执行?

  1. 在您的项目“meteor build .. \ buildOut”中,提取位于“.. \ buildOut”中的.tar.gz文件。
  2. 在“.. \ buildOut \ bundle”中放置/创建一个“package.json”,其中包含:
  3. {
        "name": "AppName",
        "version": "0.0.1",
        "main": "main.js",
        "scripts": {
            "start": "node main.js"
        },
        "engines": {
            "node": "0.12.6"
        }
    }
    

    注意:确保“name”不包含空格,azure上的部署将失败。

    1. 在您最喜欢的shell上,转到“.. \ buildOut \ bundle \ programs \ server”并运行“npm install”。这将预先下载所有要求并构建它们。
    2. 现在打开文件“.. \ buildOut \ bundle \ programs \ server \ packages \ webapp.js”并搜索“process.env.PORT”。
    3. 它看起来像这样:

      var localPort = parseInt(process.env.PORT) || 0;
      

      将此行改为:

      var localPort = process.env.PORT || 0;
      

      这是必需的,因此您的meteor项目可以在节点中运行后立即接受命名套接字。函数“parseInt”不允许字符串通过,命名套接字是位于webapp环境中的字符串。我这样做是有原因的,这是一个警告!现在保存这个改变,我们差不多完成了......

      1. 解决bcrypt问题:下载此文件并将其解压缩到某处:https://registry.npmjs.org/bcrypt/-/bcrypt-0.8.4.tgz 提取它。
      2. 现在替换位于以下位置的文件:“.. \ 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上访问它

        感谢所有这一切。