問題
Godaddy上一個主機可以掛多個網站(比如說PHP網站),那麼Node.js的網站是否也可以作為其中一個網站搭在Godaddy上面呢?
虛擬主機實作
要回答這個問題,我們需要先來分析一下虛擬主機的實作方式。以apache為例。
在apache伺服器中,虛擬主機是由apache本身支援的(可以查看:https://httpd.apache.org/docs/current/vhosts/ ),只需要配置apache的設定文件,就可以把多個網站佈署在同一台主機上面。
Node.js是否可以同其它網站同時佈署在虛擬主機上面?
首先我們要知道,Node.js是自帶伺服器的(這點跟PHP不一樣,PHP只是一個CGI腳本,運行在支援CGI腳本的伺服器上面,比如說apache,nginx等)。所以如果要讓Node.js運行在Godaddy的虛擬主機上面,那就不可以使用Godaddy的虛擬主機伺服器配置了。就算在虛擬主機上面安裝了Nodejs,在cPanel把新網域指定到nodejs資料夾下?但程式碼是不會運作的,因為這種方式也是主機伺服器運行CGI腳本的方式,而Node.js不是CGI腳本而且自帶伺服器,顯然不能由主機伺服器運行。所以如果要用簡單直接的方式把Node.js佈署到虛擬主機上是不可行的。
Node.js佈署在虛擬主機上的不正統方式
如果非要佈署Node.js到虛擬主機上呢?辦法也是有的,但不正統,最好不用。
方法一:
使用CGI-Node,CGI-Node可以像PHP一樣作為CGI腳本運行,在Godaddy上面的配置也已經有教程了,但是它是不符合我們的需要的,它其實是一種PHP編碼方式的模擬,不使用Node.js自帶的伺服器意味著express的框架可能無法使用。這種改變編碼方式的方法,顯然是不能符合我們的情況的。
方法二:
使用伺服器代理。 apache伺服器本身支援代理的功能,可以把特定的請求連結發到另一個連結去處理,然後把處理結果回傳(參考:http://stackoverflow.com/questions/9831594/apache-and-node-js- on-the-same-server )。這時我們只需要在虛擬主機把node.js運行在http://localhost:3000
下,然後在apache裡設定把http://www.example.com/node
開頭的連結全部代理給localhost:3000
,這樣,我們就間接地可以讓node.js佈署在虛擬主機上面了。但問題是,我們要如何去設定虛擬主機的apache設定檔?明顯這個很難做到。
大致上來講,方法二比方法一,但都不具可行性。
結論
如果要把Node.js單獨佈署在虛擬主機上,那麼方法其實跟我們在本地是一樣的(當然,我們的虛擬主機要是那種比較高級的可以登入作業系統介面或SSH的虛擬主機)。但如果要跟其它網站比如說PHP之類的,同時佈署在同一台電腦上面,如果你能修改伺服器設定文件,那麼可以參考前面的方法二,如果你不能,那麼就幾乎沒有什麼好的方法了。
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });以上就介紹了在虛擬主機上佈署Nodejs的可行性分析,包括了NodeJS,可行性分析方面的內容,希望對PHP教程有興趣的朋友有所幫助。