【问题标题】:Meteor server side remote debuggingMeteor 服务器端远程调试
【发布时间】:2015-03-20 19:16:57
【问题描述】:

版本

我在小型 Ubuntu Server 14.04 LTS (HVM)、SSD 卷类型 - ami-3d50120d EC2 实例上使用 Meteor 1.0.3 和节点 0.10.35。

上下文

我知道如何在我的开发机器上进行服务器端调试,只需 $meteor debug 并打开另一个指向它生成的 url 的浏览器——效果很好。

但现在,我的 EC2 实例出现服务器错误,但我没有进入开发阶段。所以我想设置一个远程调试会话服务器端。

另外,我使用 Meteor-up 包 (mup) 部署到 EC2 实例。


编辑

为了围绕我的问题提供更多背景(和上下文),我添加了以下内容:

我要做的是,在我的 EC2 实例上,在以下位置创建一个新的 pdf:

应用程序名称/服务器/.files/用户/用户名称/pdf-file.pdf

在我的 OSX 开发机器上,该过程运行良好。

当我部署到 EC2 并尝试此过程时,它不起作用。目录:

/用户名/

因为某些原因永远不会创建用户。

我想进行调试以找出我无法创建目录的原因。

创建适用于我的开发框的目录的代码如下:

server.js

Meteor.methods({
  checkUserFileDir: function () {
    var fs = Npm.require('fs');
    var dir = process.env.PWD + '/server/.files/users/' + this.userId + '/';
    try {
      fs.mkdirSync(dir);
    } catch (e) {
      if (e.code != 'EEXIST') throw e;
    }
  }
});

我通过 ssh 进入 EC2 实例以确保路径

/server/.files/user/

存在,因为这部分路径是上述代码正常工作所必需的。我检查了代码应该运行后的路径,并且

/用户名/

部分路径正在创建。


问题

如何在我的 EC2 实例上轻松调试 remote 服务器端代码,就像在本地开发盒上一样?

【问题讨论】:

  • 调试生产实例有点困难,在生产模式下,大部分有用的调试内容都被删除以优化速度。您可以在调试模式下运行,但我不确定您是否想要这个? Mup 默认使用生产模式,因此使用现有设置可能很难做到这一点。不过,您可以使用mup logs 获取基本日志。这是您的 EC2 实例上正在生产的应用程序吗?
  • 我可以用这个特定的 EC2 实例做我喜欢的事情,所以是的,我可以在调试模式下进行部署。 Mup 就是我部署到该实例的方式,但该错误与我的 mup 部署无关。调用服务器端 Meteor 方法时出现错误。所以我想我需要知道如何使用 mup 在调试模式下进行部署,以及如何在 EC2 实例上运行时将调试器附加到服务器端。
  • @Akshat,我刚刚更新了问题(在编辑标题下),以提供更多关于“为什么”我需要调试 EC2 实例的上下文。非常感谢您的帮助。
  • 在我的情况下,由于我使用的是 Meteor-up (mup),我无法逐个调试,但可以通过使用命令 $ 访问远程 EC2 实例服务器控制台和错误mup 日志 -f。这有效地解决了我在服务器端远程实例上失明的问题。时间到了我会把这个作为答案发布。

标签: node.js amazon-web-services meteor amazon-ec2 remote-debugging


【解决方案1】:

对于仍在搜索的人:

@zodern 将流星应用程序的服务器端调试添加到出色的流星启动工具中: https://github.com/zodern/meteor-up/pull/976

在部署目录中执行mup meteor debug,您将几乎设置好,只需按照文本进行即可。

【讨论】:

    【解决方案2】:

    似乎在我的情况下,因为我使用的是 Meteor-up (mup),所以我无法逐个调试,但可以通过使用命令 $ mup logs -f on 访问远程 EC2 实例服务器控制台和错误我的开发箱。

    这有效地解决了我在服务器端远程实例上失明的问题。

    它仍然无法进行实际的远程调试,从而加快了查找错误和性能瓶颈的过程,但我们目前只有这些。

    【讨论】:

    • 现在我们有mup meteor debug
    【解决方案3】:

    Kadira.io 支持远程错误/异常跟踪。它允许您在流星方法的上下文中查看服务器端异常的堆栈跟踪。

    更多详情请参阅https://kadira.io/error-tracking.html

    【讨论】:

    • 在您发布帖子后,我与 Kadira.io 的制造商进行了交谈,他指出我可以使用命令 $ mup logs -f 来获得服务器端的可见性。非常感谢@Manto!
    猜你喜欢
    • 1970-01-01
    • 2012-06-17
    • 2011-12-10
    • 2010-10-21
    • 2013-06-05
    • 2015-04-14
    • 2013-02-07
    • 1970-01-01
    相关资源
    最近更新 更多