2016-11-19 82 views
0

我的NodeJS/Express服務器文件由AWS託管。我想讀的日誌信息,並試圖連接到我的遠程服務器這樣的:如何遠程讀取節點js日誌消息

ssh -i "server.pem" [email protected] 

然後我進入我的後臺目錄,我的所有服務器文件和運行以下命令:

node server.js 

我在終端上收到消息:

We have started our server on port 9000 

我的問題:我在哪裏查看此服務器以讀取所有日誌消息?當我去localhost:9000頁面說沒有找到網站。當我去遠程網站jarvis.magainteractive.com時,終端上沒有任何變化。我希望能夠在我的終端中查看來自'/ message'和我的'/'路由的所有控制檯消息。

下面是我的server.js代碼:

var express = require('express'); 
var app = express(); 
var bodyParser = require('body-parser'); 

app.use(bodyParser.urlencoded({extended: false})); 
app.use(express.static(__dirname + '/public')); 

app.set('views',__dirname + '/views'); 
app.set('view engine', 'ejs'); 
app.engine('html', require('ejs').renderFile); 

require('./routes/main')(app); 

var server = app.listen(9000,function(){ 
    console.log("We have started our server on port 9000"); 
}); 

下面是我的路線文件(main.js):

module.exports = function(app) { 

app.post('/message', function (request, response) { 
    console.log(request.body); 
    console.log(request.body.Body); 
    console.log(request.body.From); 

    response.send("<Response><Message>Heyyo!</Message></Response>"); 
}); 

app.get('/', function(req,res) {  
    console.log("Welcome to home"); 
    res.render('index', {title:"Home page", description:"Welcome to the Jarvis HD Backend"}); 
}); 

} 
+0

有你nginx的配置提供給您的節點的應用程序嗎?如果不是,你需要做的第一。 –

+0

@kailashyogeshwar我沒有。我該怎麼辦呢? –

+0

您需要安裝日e nginx在服務器上我會共享一個文檔,忽略最後一部分的步驟。 https://docs.google.com/document/d/1d8emkkb0oXLnL6gxkII0xOKQwKrr72z0A_CrmtAVjwQ/edit?usp=sharing –

回答

0

首先,當你在你的SSH shell中運行node server.js,節點只要您保持SSH連接處於打開狀態,您創建的進程將只會存活。

您正在查找的console.log消息將在它們發生時顯示在您的SSH窗口中。信息​​來自server.js的第二行到最後一行。

http://localhost:9000沒有工作,或者是因爲你嘗試過在自己的電腦上(本地主機指向127.0.0.1這是你自己的計算機),或者你退出你的SSH殼節點工藝和不喜歡的東西wget http://localhost:9000(其失敗的原因你退出了Node進程,所以你的服務器停止了)。

jarvis.magainteractive.com沒有工作,因爲您的節點服務器在端口9000上運行。當您連接到http://jarvis.magainteractive.com時,您正在通過端口80連接到您的服務器。


就像其中一條評論所說,你可以安裝Nginx。它將允許您將端口80請求代理到服務器的本地端口9000.您不必使用Nginx,但配置和獲取設置非常簡單。然後,您可以連接到http://jarvis.magainteractive.com,它將向端口9000發出請求。

對於無論您何時停止節點進程或退出SSH,Node都會退出,您有一堆選項。就我個人而言,我使用pm2,因爲它會在每次崩潰時重新啓動節點進程。 forever是另一種流行的選擇。您還可以使用基本的nohup命令將Node進程置於後臺,以便在退出SSH會話後繼續運行 - 停止/重新啓動服務器更加痛苦。

+0

如果我不能在本地主機或我的實時URL中查看我的後端日誌消息,那麼我的端口在哪裏運行(9000)? SSH以某種方式讀取我的第一個控制檯消息「我們已經在端口9000上啓動了我們的服務器」,因此我的服務器應該在某處運行,以便能夠訪問我已經像索引一樣設置的其他路由。基本上我需要遵循哪些步驟才能看到在我的索引路由中設置的控制檯消息「歡迎回家」? nginx是唯一的方法嗎? –

+0

這聽起來像你混合了幾件事。您正在查找的日誌消息無關HTTP或端口。當你調用'node server.js'時,你只需啓動一個執行你的javascript的進程。當你使用console.log('message')'時,它只是將文本寫入進程的'stdout'(它只是顯示在你的控制檯窗口和其他地方)。當你向你的服務器發送一個HTTP請求時,Express('app.get('/'...')接收到這個消息,你通過調用'res.render(...')來響應,這會渲染你的模板併發送它 – Randy

+0

當我在本地計算機上啓動我的服務器並查看本地主機上的服務器文件時,當我訪問不同的路由時,我能夠看到我終端中的所有控制檯消息。是否有辦法做到這一點遠程?我的主要問題是我想看看我的POST路由是否正常工作 –

0

如果你想看到像控制檯的應用程序日誌。在實時記錄在你的終端,我會建議首先使用」

pm2 start app.js -n jarvis.com 

,然後查看所有的應用程序日誌,您的應用程序,你可以使用:

pm2 logs [app_id] 

,你可以看到哪些應用程序正在使用運行:

pm2 list 
+0

我是否在'ssh -i「server.pem」[email protected]'的終端中執行此操作,我在哪裏可以得到app_id? –

+0

yes在shell中,但在此之前,您需要安裝「npm install -g pm2」以查看應用程序ID,請執行pm2列表,它將顯示帶有ID的應用程序列表。 –