2013-09-10 119 views
2

我有一個在後端使用Apache和PHP的Web應用程序。我正在通過許多新功能來增強這一功能,並考慮在新工作中使用node.js。PHP和node.js可以在同一臺服務器上運行

首先,可以在PHP和Node.js的合作在同一臺機器上存在嗎?我不明白爲什麼不。 其次,我可以直接從Javascript調用node.js代碼並返回JSON嗎?

+0

直接從客戶端的Javascript調用節點代碼?不完全的;像PHP一樣,節點通過HTTP工作。 –

+1

我明白這一點。其實是正確的,節點不限於HTTP ....我的問題是,類似於客戶端上的JS調用服務器端的PHP腳本,客戶端上的JS可以調用node.js腳本?還是必須通過應用程序服務器等中間層? – reza

+0

節點帶有一個HTTP請求處理程序,但您應該在其前面運行適當的Web服務器(例如nginx)。 –

回答

4

是的,是的。節點和Apache/PHP可以共存於一臺服務器上。

您可能會遇到的唯一問題是,他們不能同時收聽端口。默認情況下,HTTP在端口80上運行,並且任何時候只有一個進程可以在單個端口上「偵聽」。因此您可能需要不同的端口上運行的應用程序的節點(例如,8080),這可能會在困難帶來如果有你的目標用戶的僅限於端口80

+2

我對此有一個簡單的解決方法。我使用php爲了向我的React DOM提供REST API。基本上PHP是我的邏輯(模型和控制器)和反應我的看法(當然,路線)。使用這種方法的好處是性能會提高(API可以被緩存),每三分之一的系統將使用一個只能開發一次的API與您進行通信。希望能幫助到你 :) –

0

葉,如果您使用PHP投放JavaScript客戶端提供頁面的JavaScript代碼可以使用AJAX請求訪問您的節點服務器暴露途徑。

2

您可以在同一運行節點和PHP服務器,甚至在同一個端口上。關鍵是要使用服務器像nginx的前偵聽端口80,建立PHP在Nginx的,你通常會(使用PHP-FPM),並設置您的節點實例,一些高端口像8081

本地監聽

然後,只需將nginx配置爲使用目錄名稱作爲過濾器,將所有節點請求代理到localhost:8081。

這樣做的另一個好處是,你可以有不同的域的多個單獨的節點實例太多,你也可以擁有,作爲一個HTTP守護進程運行圍棋的情況下,和其他語言。你也可以讓它變得非常安全。

而且你也Nginx的巨大速度提供靜態文件,並沒有從您的節點應用程序提供靜態文件(如果你不想)受益。

相關問題