Node.js 是一個(gè)開(kāi)源平臺,可幫助 JavaScript 用戶(hù)在 Web 瀏覽器之外執行他們的代碼。這是一個(gè)免費的解決方案,幾乎可以在任何操作系統上運行。在托管方面,VPS 服務(wù)器提供了一個(gè)完美的環(huán)境,可以將 Node.js 應用程序與開(kāi)發(fā)人員工具和 API 集成。讓我們看看在托管和自我管理的 VPS 服務(wù)器上使用Node.js 需要做什么。
什么是 Node.js?
Node.js 是一個(gè)跨平臺、事件驅動(dòng)的JavaScript 運行時(shí)環(huán)境。它建立在 Chrome 的 V8 JavaScript 引擎以及MongoDB、Express.js 和 AngularJS 等其他開(kāi)發(fā)框架之上。Node.js 允許您使用 JavaScript 創(chuàng )建負責許多核心功能的 Web 服務(wù)器、網(wǎng)絡(luò )工具和模塊。
由于 Node.js 僅適用于 JavaScript,因此更容易為廣大開(kāi)發(fā)者社區所用。同時(shí),其模塊使用的 API簡(jiǎn)化了編寫(xiě)服務(wù)器應用程序的過(guò)程。
雖然你可以在沒(méi)有它的情況下運行你的 NodeJS 應用程序,但專(zhuān)家建議安裝npm?——Node.js 的官方包管理器。它由一個(gè)客戶(hù)端和一個(gè)包含超過(guò) 100 萬(wàn)個(gè)免費和付費包的在線(xiàn)數據庫(npm 注冊表)組成。多虧了 npm,來(lái)自世界各地的開(kāi)發(fā)人員可以利用大量現成的資源來(lái)幫助他們加快開(kāi)發(fā)過(guò)程。
為什么選擇 Node.js?
Node.js 帶來(lái)了許多優(yōu)勢。一方面,它已經(jīng)是一個(gè)閃電般快速的腳本環(huán)境,而且由于它建立在Google 的引擎之上,它的性能可能會(huì )隨著(zhù)時(shí)間的推移而提高。npm 注冊表也在擴展,因此開(kāi)發(fā)人員將來(lái)可能會(huì )更容易找到他們正在尋找的東西。
不過(guò),速度遠非 Node.js 唯一出名的地方。在 Internet 上閱讀它,您會(huì )發(fā)現大多數人都在廣泛談?wù)撍漠惒?、事件驅?dòng)架構。
讓我們仔細看看它,看看開(kāi)發(fā)人員如何從中受益。
要了解它的工作原理,我們需要將其與其中一種替代方案進(jìn)行比較。世界上幾乎 80% 的網(wǎng)站都使用 PHP,因此我們將使用它作為示例。如果 PHP 應用程序被要求打開(kāi)一個(gè)文件,它在打開(kāi)該文件之前不會(huì )處理任何其他請求。所有后續請求都取決于第一個(gè)請求的執行。
相比之下,Node.js 的架構是異步的,這意味著(zhù)可以同時(shí)處理多個(gè)請求。一個(gè)請求不需要等待另一個(gè)請求的執行,內容交付效率更高。因此,使用 Node.js 創(chuàng )建的應用程序快速、健壯且易于擴展。鑒于這一切,IBM、LinkedIn、Netflix 和 PayPal等科技巨頭在其部分產(chǎn)品的開(kāi)發(fā)過(guò)程中使用 Node.js 也就不足為奇了。
Node.js 用于什么?
Node.js 自 2009 年以來(lái)就已經(jīng)存在,與其他Web 技術(shù)相比,時(shí)間并不長(cháng)。盡管如此,它已經(jīng)證明了它作為一個(gè)強大的開(kāi)發(fā)框架的價(jià)值,在許多不同的領(lǐng)域有數十種用途。
這里是它最閃耀的地方:
聊天應用
高效交付動(dòng)態(tài)內容的能力,加上用于實(shí)時(shí) Web 應用程序的 JavaScript 庫的存在,使 Node.js 非常適合開(kāi)發(fā)出色的即時(shí)消息服務(wù)。
瀏覽器游戲
HTML5和其他技術(shù)的發(fā)展意味著(zhù)您現在可以創(chuàng )建出色的基于瀏覽器的游戲,而無(wú)需依賴(lài)可怕的 Flash 動(dòng)畫(huà)。Node.js 是最好的新選擇之一。
流媒體應用
再一次,Node.js 的異步 I/O 使流媒體服務(wù)能夠同時(shí)向數十萬(wàn)用戶(hù)提供實(shí)時(shí)、高質(zhì)量的視頻。
后端工具
JavaScript 主要與前端開(kāi)發(fā)相關(guān),但事實(shí)是,有一些 JS 庫使開(kāi)發(fā)人員能夠使用 Node.js 創(chuàng )建快速可靠的命令行應用程序。
Node.js 系統要求
Node.js 的輕量級設計是它在開(kāi)發(fā)人員中如此受歡迎的原因之一。你必須記住,如果你想在 Windows 上使用 Node.js,你將需要相當強大的硬件。但是,對于 Linux,資源使用率非常低,您甚至可以在Raspberry Pi上運行標準的Node.js 應用程序。
有ARM 和 64 位架構的 Linux 版本,在 Windows 上,它可以在 32 位和 64 位機器上運行。macOS 服務(wù)器需要 64 位芯片來(lái)運行 Node.js,并且還有一個(gè) Docker 容器的官方鏡像??偠灾?,Node.js 可以在大多數現代設置上運行。
安裝 Node.js 和 npm
因為它適用于許多不同的操作系統和設置,所以沒(méi)有一種萬(wàn)能的教程可以向您展示安裝 Node.js 的確切步驟。大多數網(wǎng)絡(luò )托管 VPS 服務(wù)器?都在 Linux 上運行,因此我們將重點(diǎn)關(guān)注它。然而,即使有了它,安裝過(guò)程也會(huì )因發(fā)行版而異。以下是最常見(jiàn)的兩種情況。
從 Ubuntu 官方存儲庫安裝 Node.js 和 npm
Node.js 非常受歡迎,可以進(jìn)入世界上最流行的 Linux 發(fā)行版之一——Ubuntu 的官方軟件存儲庫。如果您的 VPS 使用 Ubuntu,安裝 Node.js 涉及幾個(gè)簡(jiǎn)單的步驟。讓我們來(lái)看看它們。
1. 更新你的 VPS
在安裝 Node.js 之前,建議更新 Ubuntu 虛擬服務(wù)器的包索引。您可以使用以下命令執行此操作:
sudo apt-get 更新
2. 安裝 Node.js
因為 Node.js 是 Ubuntu 官方存儲庫的一部分,您可以使用單個(gè)命令安裝它:
sudo apt-get install nodejs
注意:如果您采用這種方法,Ubuntu 將從存儲庫安裝最新的可用軟件包。如果您需要特定版本的 Node.js,則此安裝方法不適合。
3.安裝npm
再次,您可以使用單個(gè)命令安裝 npm 的最新版本:
sudo apt-get 安裝 npm
4.驗證安裝是否成功
確保安裝成功的最簡(jiǎn)單方法是詢(xún)問(wèn) Ubuntu 您當前使用的 Node.js 和 npm 版本。
對于 Node.js,命令是:
節點(diǎn)-v
對于 npm,您需要輸入:
npm -v
手動(dòng)安裝 Node.js
如果您不運行 Ubuntu 或者更喜歡安裝不是最新版本的 Node.js,您可以手動(dòng)執行安裝。它比直接從存儲庫中設置要復雜一些,但只要你小心,你應該沒(méi)有問(wèn)題。以下是步驟:
1. 下載并解壓 Node.js 存檔
你首先需要確保你在你的主目錄中。直接去那里的命令是:
光盤(pán)~
接下來(lái),您可以使用以下命令下載 Node.js 存檔:
wget?https://nodejs.org/dist/v14.18.1/node-v14.18.1-linux-x64.tar.xz
注意:使用此命令,您將下載版本 14.18.1(撰寫(xiě)本文時(shí)的最新版本)。如果要下載不同版本的 Node.js,則需要相應地調整 URL。
2.解壓存檔
要提取您剛剛下載的 Node.js 存檔,請使用以下命令:
tar xvf node-v14.18.1-linux-x64.tar.xz
這些文件將被提取到一個(gè)名為node-v14.18.1-linux-x64的新目錄中。
3.重命名Node.js的目錄,讓你的生活更輕松
雖然并非絕對必要,但此步驟將簡(jiǎn)化安裝過(guò)程。我們要做的是將包含從node-v14.18.1-linux-x64中提取的文件的文件夾重命名為不那么麻煩的東西,例如node。這是命令:
mv 節點(diǎn)-v14.18.1-linux-x64 節點(diǎn)
4. 安裝 Node.js 和 npm 的二進(jìn)制文件
最后三個(gè)命令將創(chuàng )建所需的目錄,復制其中的二進(jìn)制文件,并創(chuàng )建必要的符號鏈接:
mkdir ~/bin
cp node/bin/node ~bin
cd~ bin
ln -s ../node/lib/node_modules/npm/bin/npm-cli.js npm
5.檢查是否安裝成功
再次,您可以詢(xún)問(wèn) Linux 服務(wù)器上安裝了哪些版本的 Node.js 和 npm,以確認一切正常。命令是:
節點(diǎn)-v
和
npm -v
在我們的例子中,響應應該分別是v14.18.1和6.14.15。
啟動(dòng) Node.js 應用程序
在您的服務(wù)器上安裝了 Node.js 和 npm 之后,您可能想知道如何使用它們啟動(dòng)應用程序。你將如何去做取決于應用程序本身。
使用 npm
如果您需要使用有效的package.json文件啟動(dòng)生產(chǎn)就緒應用程序,您可以使用 npm 包管理器。命令是:
nohup npm start -production &
使用節點(diǎn)
如果您的應用沒(méi)有 package.json 文件,則需要使用 Node.js 本身。您可以使用以下命令執行此操作。
nohup 節點(diǎn) [您的應用名稱(chēng)].js &
請注意,如果您選擇運行沒(méi)有包含 package.json 文件的應用程序,您將無(wú)法使用 npm 管理它。
如何停止應用程序
要終止正在運行的應用程序,我們需要終止該進(jìn)程。幸運的是,有一個(gè)簡(jiǎn)單的命令可以停止服務(wù)器上的任何 Node.js 進(jìn)程:
pkill 節點(diǎn)
將您的 Web 服務(wù)器與正在運行的 Node.js 應用程序連接起來(lái)
由于 VPS 可以處理的各種技術(shù)組合,有很多方法可以將您的網(wǎng)站連接到Node.js 應用程序。由于 Apache 是最常見(jiàn)的 Web 服務(wù)器之一,我們將使用它作為展示平臺。
我們想利用.htaccess 文件來(lái)執行網(wǎng)站和 Node.js 應用程序之間的連接。
.htaccess 文件位于文檔根文件夾 (?home/[your username]/public_html/?)。如果您的服務(wù)器上安裝了虛擬主機控制面板,則可以通過(guò)集成文件管理器訪(fǎng)問(wèn)它。否則,您的選擇是通過(guò) SSH 訪(fǎng)問(wèn)服務(wù)器并使用文本編輯器打開(kāi)它。
以下是您需要添加到 .htaccess 文件中的內容:
DirectoryIndex disabled
RewriteEngine On
RewriteRule ^$ http://127.0.0.1:XXX/ [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ http://127.0.0.1:XXX/$1 [P ,L]
將“XXX”替換為您的 Node.js 應用程序的端口號。完成后,請記住在退出編輯器之前將更改保存到您的 .htaccess 文件中。
使用 SPanel 部署 Node.js 應用程序
那些發(fā)現所有這些步驟有點(diǎn)嚇人的人會(huì )很高興得知,如果你有一個(gè)SPanel VPS,你不需要經(jīng)歷任何一個(gè)。
Node.js 集成曾經(jīng)是我們的 SPanel 客戶(hù)最強烈要求的功能之一,我們別無(wú)選擇,只能實(shí)現它。SPanel 服務(wù)器一直支持 Node.js,但現在,您不需要自己安裝或請其他人安裝。
Node.js 已在所有 SPanel 服務(wù)器上進(jìn)行設置和配置,在我們專(zhuān)有的管理平臺中,您會(huì )發(fā)現一個(gè)易于使用的工具,可幫助您通過(guò)點(diǎn)擊啟動(dòng)應用程序。以下是所有步驟:
1. 將您的應用程序上傳到您選擇的文件夾。
您可以使用您最喜歡的 FTP 客戶(hù)端或 SPanel 的文件管理器將 Node.js 應用程序從本地計算機上傳到虛擬服務(wù)器。
2. 通過(guò) SPanel 的 NodeJS Manager 部署應用程序。
SPanel 的 NodeJS 管理器在用戶(hù)界面中可用。
Deploy a New App按鈕會(huì )打開(kāi)一個(gè)彈出窗口,讓您可以快速啟動(dòng)您的應用程序。您需要做的就是設置應用程序 URL、它將偵聽(tīng)的端口以及應用程序本身的路徑。
注意:您的 Node.js 應用程序只能使用 3000 到 3500 之間的端口。
單擊部署以完成該過(guò)程。
3. 管理您的 Node.js 應用程序。
SPanel 的 NodeJS 管理器顯示所有當前部署的 Node.js 應用程序的列表。Actions下拉菜單可讓您一一停止、重新啟動(dòng)和取消部署它們。
結論
如果您想創(chuàng )建一個(gè)簡(jiǎn)單的博客或小型在線(xiàn)商店,您可能不需要 Node.js。JavaScript 運行環(huán)境更適合更復雜的項目,通常由在該領(lǐng)域有更多經(jīng)驗的人領(lǐng)導。
使用正確的命令,他們在自我管理的虛擬服務(wù)器上安裝和使用 Node.js 應該沒(méi)有問(wèn)題。然而,即使是最大的命令行向導也會(huì )欣賞從易于使用的圖形用戶(hù)界面(如 SPanel 的 NodeJS 管理器)啟動(dòng)應用程序的便利性。