在EC2 AWS服务器上部署meteor app

时间:2016-11-21 09:38:46

标签: mongodb amazon-web-services meteor deployment amazon-ec2

我目前正在开展一个学校项目:

我必须使用PeerJS,Meteor和WebRTC制作视频聊天应用程序。

Mine仅基于this tutorial,仅添加了CSS。

我成功地创建了一个在本地工作的东西(一切都在localhost上工作正常:3000

  

流星

命令在项目文件夹中运行。

我正在使用Windows 10,我使用mupx在我的EC2服务器上部署应用程序。

我跟着this tutorial,一切正常,我可以访问我的应用,登录并查看我的网络摄像头。但是一旦我尝试呼叫另一个用户,就不会建立链接。我认为这是因为mongoDB或流星服务缺乏一些东西,但我无法弄清楚是什么。

我的mup.json看起来像这样:

{
  "servers": [
    {
      "host": "IP.OF.METEOR.APP.EC2",
      "username": "ubuntu",
      "pem": "C:/Path/to/file.pem"
    }
  ],
  "setupMongo": true,
  "enableUploadProgressBar": true,
  "appName": "PeerChat",


  "app": "C:/pth/to/PeerChat",
    "buildOptions": {
     "debug": true,
     "executable": "meteor"
  },
  "env": {
      "PORT" : 80,
      "ROOT_URL" : "http://ec2-ip-to-meteor-app.us-west-2.compute.amazonaws.com",
      "MONGO_URL" : "http://IP.TO.MONGO.EC2:27017"
  },
  "deployCheckWaitTime": 300
}

有人可以就如何成功部署我的应用给我建议吗?我一直在尝试很多东西,但到目前为止都没有。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

最近,浏览器更改为阻止webrtc over http。如果您尝试运行它,您将在控制台日志中收到某种拒绝访问错误。

这意味着所有内容都需要使用https运行。在你的情况下,这意味着Meteor和peerjs-server。

查看mupx文档,我会假设它对您有用,它使用nginx本身,所以应该没问题。自己动手很有可能,但需要一些系统管理员功能。这也是正确的(在较小程度上使用peerjs-server)

Peerjs服务器

peerjs-server在https://github.com/peers/peerjs-server可用 目前它可以从命令行运行,但问题是像nginx / Passenger这样的工具不做命令行选项,所以我做了一个接受环境变量的fork。我的叉子位于https://github.com/mikkelking/peerjs-server

这是peerjs-server的启动文件,它使用一个名为forever的东西。 https://github.com/foreverjs/forever

  

一个简单的CLI工具,用于确保给定脚本连续运行   (即永远)。

先决条件:

  • 的NodeJS
  • 名为peerjs的用户
  • 我的peerjs-server端口解压缩到/ var / www / peerjs
  • 了解如何安装和永久运行

运行peerjs-server的脚本:

#!/bin/bash
export PEERJS_PORT=9000;
export PEERJS_KEY=some-unique-string;
export PEERJS_SSLKEY=/etc/nginx/ssl/myserver.key;
export PEERJS_SSLCERT=/etc/nginx/ssl/myserver.pem;
export PEERJS_DEBUG=1;
cd /var/www/peerjs

forever start -l forever.log --append -o out.log -e err.log ./bin/peerjs --debug 2&>1 >./peerjs.log

此脚本将确保peerjs即使在崩溃后仍会运行,并且在重新启动服务器后仍然有效。

您可能还需要此文件:

〜peerjs / .forever / config.json

{
  "root": "/home/peerjs/.forever",
  "pidPath": "/home/peerjs/.forever/pids",
  "sockPath": "/home/peerjs/.forever/sock",
  "loglength": 100,
  "logstream": false,
  "columns": [
    "uid",
    "command",
    "script",
    "forever",
    "pid",
    "id",
    "logfile",
    "uptime"
  ]
}

我希望这会有所帮助。

答案 1 :(得分:0)

如果这只是一个演示,您无需去设置整个网站。您可以使用端口转发来允许第二台计算机参与。

假设您在本地计算机上的端口3000上运行meteor。找出你的本地网络IP地址,例如192.168.1.101

在第二台机器上使用如下命令执行端口转发:

dir_2/

它会要求您提供本地用户的密码。

现在用户可以访问localhost:3000并访问您的meteor应用程序。视频通话将被允许,因为浏览器认为您在本地计算机上

另一种选择是在同一台计算机上使用匿名窗口,并以其他用户身份登录。不如在2台计算机上这样做好。