2013-07-05 51 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代碼 基地的代碼很多的從複製的流星應用程序。

相關問題