Meteor 服务器端远程调试
Posted
技术标签:
【中文标题】Meteor 服务器端远程调试【英文标题】:Meteor server side remote debugging 【发布时间】: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。这有效地解决了我在服务器端远程实例上失明的问题。时间到了我会把这个作为答案发布。
【参考方案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!以上是关于Meteor 服务器端远程调试的主要内容,如果未能解决你的问题,请参考以下文章