2013-01-10 94 views

回答

6

是的。见http://www.meteorpedia.com/read/Deploying_to_a_PaaS

在大多数情况下,这是因为使用“流星捆绑”, demeteorizer,然后用你的PaaS 提供商的CLIdeploy tool上传生成的文件一样简单。

Demeteorizer包装,并通过创建 的东西,更像一个标准寻找的Node.js应用 ,完成对依赖 管理的package.json文件扩展流星的bundle命令。

$ cd /my/meteor/app 
$ demeteorizer -o /my/node/app 
$ cd /my/node/app 
$ npm install 
$ export MONGO_URL='mongodb://user:[email protected]: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后运行。

整个部署是使用Meteor Up代替much easier。或者可能是mups,虽然它甚至没有更新文档。

要在Azure的web应用程序运行流星应用:

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:[email protected]: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://[email protected]: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" 
    } 
+0

感谢Microsoft Deutschland GmbH的Carsten Lemm找出像改变PORT线这样的晦涩难懂的东西。 –

+0

我试图去Azure的web应用程序的路线,并已链接我的源代码管理,并设置了ROOT_URL的关键值,其部署,但是当我去的网址,它说什么都没有。部署日志真的没有告诉我很多。是否有不同的位置来设置ROOT_URL,而不是在应用程序设置下? – Trevor

+1

@Trevor,不是我所知道的。确保诊断日志已启用,并且主文件是'server.js'或在'package.json'中指定。 –

4

在开始之前,请确保您已经安装了一个32位版本的nodejs,并在Windows生成机器上运行了“npm -g install fibers”。 azure上的默认nodejs仅运行32位!

注意:如果您正在使用PhantomJS上继承的Spiderable软件包,则此功能无效。 PhantomJS不能在蔚蓝的webapp上执行?

  1. 在项目“流星构建.. \扩建”,提取位于“.. \扩建” .tar.gz文件。
  2. 地点/创建 “.. \扩建\包” 一 “的package.json” 载:
{ 
    "name": "AppName", 
    "version": "0.0.1", 
    "main": "main.js", 
    "scripts": { 
     "start": "node main.js" 
    }, 
    "engines": { 
     "node": "0.12.6" 
    } 
} 

注意:确保 “名” 不包含空格,在Azure上会部署失败。

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

它看起来像这样:

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

改变这一行到:

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

这是必要的,以便您的流星工程能尽快,因为它在节点运行接受一个名为插座。函数“parseInt”不会让字符串通过,命名的套接字是位于您的web应用程序环境中的字符串。这是我的理由,在这里警告!现在保存这个变化的,我们几乎完成了...

  • 解决bcrypt问题:下载这个文件并解压的地方是:https://registry.npmjs.org/bcrypt/-/bcrypt-0.8.4.tgz 解压。
  • 现在替换位于文件: “.. \扩建\包\程序\服务器\故宫\ 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

    感谢所有使之成为可能。

    相关问题