Node.js 網站佈署 – 共享主機可以安裝Node.js嗎?

鴨血的技術筆記-wordpress網站製作-aipainting

Node.js 是 JavaScript 框架愛好者的福音,它實現了用 JavaScript 撰寫後端程式碼的需求。但要如何將 Node.js 放到主機上運作呢?你可能已經嘗試過靜態網站部署,但還不知道將自己製作的 API 放到主機上的方法。這篇文章將為你詳細介紹相關操作。

1.共享主機可以安裝Node.js

共享主機可以安裝Node.js,但在安裝之前,你需要於檔案管理員(File Manager)建立一個空的文件夾,用於安裝Node App。這個資料夾的名稱會根據網域名稱有所不同,主要有以下兩種狀況:

-狀況1. 安裝於主網域,於根目錄建立與主網域同名的文件夾

找到File Manager按鈕,並點選。

node.js安裝第一步-先找到file manager

進入主機檔案管理畫面,按左上角的『+Folder』 於根目錄新增文件夾,若主網域為domain.com,該文件夾命名為domain.com(關於命名方式,請看下方Tips)。

node.js安裝第二步-進入file manager後,新增folder文件夾
維持App URI和 App Root Directory的一致性是約定俗成的慣例,沒有硬性規定。目錄名稱和App URI可以不同,但可能會導致其他人在查找時混淆。

-狀況2. 安裝於子網域,同步建立子網域的同名文件夾

在cPenal建立子網域,並同步建立子網域的同名文件夾。
找到Domains按鈕,並點選進入網域管理頁。

想安裝在子網域,點選進入domain頁面

點選右上角Create A New Domain按鈕,建立新的子網域,並在欄位上填入子網域名稱,例如:test.domain.com,Document root會自動填入子網域的名稱。

進入domain頁面後,按下新增按鈕
輸入你想使用的子網域名稱,此情況不用手動創建,當子網域建立時,file manager會自動創建根目錄
此情況不用手動創建,當子網域建立時,file manager會自動創建根目錄
你可以在網域管理頁面(Domains)新增其他的主網域,把其他主網域指向此主機的某個目錄文件夾。

2.把網站打包上傳至File Manager

把.env、node modules目錄、.git排除在外,選擇其餘必要檔案並壓縮成zip,上傳到第一步建立好的目錄文件夾,並在裡面解壓縮。
不管你使用什麼框架,裡面至少要有:

  1. node.js啟動文件(名稱可能為server.js、app.js或index.js)
  2. 紀錄npm套件的package.json檔案

Node.js才能依據這份依賴清單(package.json)去安裝npm套件,並透過啟動文件進行啟動。

node.js網站的npm依賴文件
網站的npm依賴文件

3.安裝Node.js


登入主機的cPanal後台,找到Setup Node.js App選項,並點選進入。

找到node.js app按鈕並點選進入

進入Node.js App管理頁面,如果你曾經在這個主機建立過Node.js App,下方會有一串列表顯示目前Node.js App的狀態。

要創建新的Node.js App,請點選右上角的『Create Application』按鈕。

按右上角的創建新App按鈕
  1. 選擇需要Node.js的版本
  2. App mode選Production
  3. App root如果位於根目錄,直接填寫目錄文件夾的名稱(例如:domain.com或test.domain.com)
  4. App URL可點選更換網域,如果設在子目錄下再去填空白的欄位,沒有則略過
  5. 填寫啟動文件名稱(通常是server.js)
  6. 新增環境變數,例如資料庫的URI
  7. 按下右上角Create按鈕
確定填完所有node.js的設定項目後,按下Create創建按鈕
確定填完所有node.js的設定項目後,按下Create創建按鈕

創建完成後,先暫時停止App,執行Run npm install安裝套件,再重新啟動Node App。

先停止運行,再安裝npm套件,安裝完再啟動
在Node.js運作的狀態下,點選安裝npm套件,可能會導致安裝不成功,變更選項時盡量按部就班操作,先關閉node.js,安裝完之後再啟動。