Chr*_*ley 5 command-line-interface meteor
我正在研究Meteor应用程序(来自PHP项目的端口),我需要能够从服务器上运行我的应用程序上的命令,以执行各种操作,例如清除缓存,聚合数据等.这些命令需要从shell脚本和crontab.我见过其他人问这个问题,显然还没有正式的方法可以做到这一点.
我读到了使用Meteor方法的建议,只是从客户端的JS控制台用密码调用它们.这并没有解决我从CLI运行它们的问题,但它确实给了我一个想法:
是否可以使用无头浏览器(如PhantomJS)连接到我的应用程序并执行Meteor.call()来模拟一个带有传递给方法的参数的CLI工具?如果可能的话,有谁知道我怎么做到这一点?
谢谢!
编辑:更新为使用铁路由器,流星路由器的继任者.
没有无头浏览器或任何复杂的东西.使用Meteorite安装Iron Router并定义服务器端路由:
Router.map(function () {
this.route('clearCache', {
where: 'server',
action: function () {
// Your cache-clearing code goes here.
}
});
});
Run Code Online (Sandbox Code Playgroud)
然后让你的cronjob触发对该URI的HTTP GET请求:
curl http://yoursite.com/clearCache
Run Code Online (Sandbox Code Playgroud)
当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.
}
}
});
});
Run Code Online (Sandbox Code Playgroud)
并让您的cronjob将该密码添加到URI:
curl http://yoursite.com/clearCache/2d1QZuK3R3a7fe46FX8huj517juvzciem73
Run Code Online (Sandbox Code Playgroud)
原帖:
没有无头浏览器或任何复杂的东西.使用Meteorite安装Meteor Router并定义服务器端路由:
Meteor.Router.add('/clearCache', function() {
// Your cache-clearing code goes here.
});
Run Code Online (Sandbox Code Playgroud)
然后让你的cronjob触发对该URI的HTTP GET请求:
curl http://yoursite.com/clearCache
Run Code Online (Sandbox Code Playgroud)
当Meteor服务器收到GET请求时,路由器将执行您的代码.
为了一点安全性,添加一个密码检查:
Meteor.Router.add('/clearCache/:password', function(password) {
if (password == '2d1QZuK3R3a7fe46FX8huj517juvzciem73') {
// Your cache-clearing code goes here.
}
});
Run Code Online (Sandbox Code Playgroud)
并让您的cronjob将该密码添加到URI:
curl http://yoursite.com/clearCache/2d1QZuK3R3a7fe46FX8huj517juvzciem73
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
517 次 |
| 最近记录: |