我正在使用Meteor应用程序(来自PHP项目的端口),我需要能够从服务器上运行我的应用程序上的命令,以执行各种操作,例如清除缓存,聚合数据等。这些命令需要从shell脚本和crontab运行。我已经看到其他人提出这个问题,显然还没有正式的方法可以做到这一点。
我读到了使用Meteor方法的建议,只是使用密码从客户端的JS控制台调用它们。这并没有解决我从CLI运行它们的问题,但确实给了我一个想法:
是否可以使用无头浏览器(如PhantomJS)连接到我的应用程序并执行Meteor.call()来模拟传递给方法的参数的CLI工具?如果可能的话,有谁知道我怎么做到这一点?
谢谢!
答案 0 :(得分:5)
编辑:更新后使用了Iron Router,它是Meteor Router的继承者。
不需要无头浏览器或任何复杂的东西。使用Meteorite安装Iron Router并定义服务器端路由:
Router.map(function () {
this.route('clearCache', {
where: 'server',
action: function () {
// Your cache-clearing code goes here.
}
});
});
然后让你的cronjob触发对该URI的HTTP GET请求:
curl http://yoursite.com/clearCache
当Meteor服务器收到GET请求时,路由器将执行您的代码。
为了一点安全性,请添加一个密码检查:
Router.map(function () {
this.route('clearCache', {
path: '/clearCache/:password',
where: 'server',
action: function () {
if (this.params.password == '2d1QZuK3R3a7fe46FX8huj517juvzciem73') {
// Your cache-clearing code goes here.
}
}
});
});
让你的cronjob将该密码添加到URI:
curl http://yoursite.com/clearCache/2d1QZuK3R3a7fe46FX8huj517juvzciem73
原帖:
不需要无头浏览器或任何复杂的东西。使用Meteorite安装Meteor Router并定义服务器端路由:
Meteor.Router.add('/clearCache', function() {
// Your cache-clearing code goes here.
});
然后让你的cronjob触发对该URI的HTTP GET请求:
curl http://yoursite.com/clearCache
当Meteor服务器收到GET请求时,路由器将执行您的代码。
为了一点安全性,请添加一个密码检查:
Meteor.Router.add('/clearCache/:password', function(password) {
if (password == '2d1QZuK3R3a7fe46FX8huj517juvzciem73') {
// Your cache-clearing code goes here.
}
});
让你的cronjob将该密码添加到URI:
curl http://yoursite.com/clearCache/2d1QZuK3R3a7fe46FX8huj517juvzciem73
答案 1 :(得分:0)
查看这个Meteor应用程序,它确实如此:
http://meteor-shell.meteor.com/
为什么在服务器上存储一些脚本并从Meteor应用程序的管理界面执行时,为什么需要CLI工具?
答案 2 :(得分:0)
昨天得到了同样的问题。找到这个包,但尚未尝试过 https://github.com/practicalmeteor/meteor-mcli
<强>概述强>
用于创建和运行的meteor包和命令行工具 命令行/ cli程序与meteor。
<强>激励强>
能够在命令中重复使用meteor应用程序的相同代码 行程序,而不必创建单独的节点/ npm代码 从你的流星应用程序中复制了很多代码。