2013-07-05 52 views
4

我正在研究Meteor应用程序(来自PHP项目的一个端口),我需要能够在服务器上为我的应用程序运行命令,以执行各种操作,如清除缓存,聚合数据等。这些命令需要从shell脚本和crontab运行。我见过其他人提出这个问题,显然现在还没有正式的方法来做到这一点。为Meteor应用程序创建自定义CLI工具

我读了一个使用Meteor方法的建议,只是用密码从客户端的JS控制台调用它们。这不能解决我从CLI运行它们的问题,但它确实给了我一个想法:

是否可以使用无头浏览器(如PhantomJS)连接到我的应用程序并执行Meteor.call( )来模拟一个传递给该方法参数的CLI工具?如果可能的话,是否有人知道我会怎样做到这一点?

谢谢!

回答

5

编辑:更新为使用铁路路由器,流星路由器的后继者。

不需要无头浏览器或任何复杂的东西。使用Meteorite安装Iron Router并定义一个服务器端路线:

Router.map(function() { 
    this.route('clearCache', { 
    where: 'server', 
    action: function() { 
     // Your cache-clearing code goes here. 
    } 
    }); 
}); 

然后让你的cronjob触发一个HTTP GET请求到URI:当流星服务器接收GET请求

curl http://yoursite.com/clearCache 

中,路由器将执行你的代码。

出于安全的一点点,添加一个检查密码:

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触发一个HTTP GET请求到URI:当流星服务器接收GET请求

curl http://yoursite.com/clearCache 

中,路由器将执行你的代码。

出于安全的一点点,添加一个检查密码:

Meteor.Router.add('/clearCache/:password', function(password) { 
    if (password == '2d1QZuK3R3a7fe46FX8huj517juvzciem73') { 
    // Your cache-clearing code goes here. 
    } 
}); 

,有你的cronjob添加密码到URI:

curl http://yoursite.com/clearCache/2d1QZuK3R3a7fe46FX8huj517juvzciem73 
0

退房这颗流星的应用程序,这正是这么做的:

http://meteor-shell.meteor.com/

为什么你需要一个CLI工具,当你可以只在服务器上存储一些脚本并从管理界面中执行它们的流星应用程序?

+0

我们需要CLI工具的原因是因为我们需要像脚本缓存清理,汇总数据等......其中一些需要作为cron作业要执行的东西。这很难从浏览器中完成。 –

+2

这似乎与我所需要的相反。这允许你在浏览器中运行shell命令(我不需要),但是不允许我从linux shell(我真正需要的)与我的应用程序进行交互。 –

0

昨天得到了同样的问题。发现了这个包,但还没有尝试过 https://github.com/practicalmeteor/meteor-mcli

概述

流星包和命令行工具,用于创建和使用流星运行 命令行/ CLI程序。

激励

为了能够重新使用您的流星应用程序相同的代码在命令 行程序,而不必创建一个单独的节点/ NPM代码 基地的代码很多的从复制的流星应用程序。

相关问题