在Linux系統中部署NodeJS項目
在Linux系統中部署NodeJS項目
安裝NodeJS
-
首先進入 Node 官網,下載對應的 Node包
-
下載下來後是一個後綴為
xz
的壓縮包,我們把這個包上傳到 Linux 系統中的/usr/local
中 -
接着
cd
到local
文件夾下面解壓這個壓縮包tar -xvf node-v14.17.0-linux-x64.tar.xz
-
然後修改一下名字,修改為
node
,方便我們下面創建軟連接mv node-v14.17.0-linux-x64 node
-
然後進入到
node
文件夾裏面的bin
目錄下,查看是否有node
和npm
-
建立軟鏈接,這一步是為了可以在任何目錄下都能使用
node
ln -s /usr/local/node/bin/npm /usr/local/bin/ ln -s /usr/local/node/bin/node /usr/local/bin/
-
設置完成後切換任意目錄執行
npm -v,node -v
看到兩個版本號表示安裝完成
安裝pm2
pm2是一個 NODE.JS 的高級生產過程管理器,使用它可以幫助我們輕鬆的部署運行 Node 項目
安裝
npm install pm2 -g
安裝完成後會自動安裝到我們的 node 目錄下,同樣的需要個給pm2 建立一個軟鏈接
ln -s /usr/local/node/bin/pm2 /usr/local/bin
下面是 pm2 的一些常用命令
啟動:pm2 start demo.js //demo.js是你要啟動的app_name|app_id文件
停止:pm2 stop app_name|app_id
刪除:pm2 delete app_name|app_id
重啟:pm2 restart app_name|app_id
停止所有:pm2 stop all
查看所有的進程:pm2 list
查看所有的進程狀態:pm2 status
查看某一個進程的信息:pm2 describe app_name|app_id
參數說明
--watch:監聽應用目錄源碼的變化,一旦發生變化,自動重啟。如果要精確監聽、不見聽的目錄,最好通過配置文件
-i --instances:啟用多少個實例,可用於負載均衡。如果-i 0或者-i max,則根據當前機器核數確定實例數目,可以彌補node.js缺陷
--ignore-watch:排除監聽的目錄/文件,可以是特定的文件名,也可以是正則。比如--ignore-watch="test node_modules "some scripts"
-n --name:應用的名稱,查看應用信息的時候可以用到
-o --output <path>:標準輸出日誌文件的路徑,有默認路徑
-e --error <path>:錯誤輸出日誌文件的路徑,有默認路徑
--interpreter <interpreter>:the interpreter pm2 should use for executing app (bash, python...)
如完整參數命令:
pm2 start demo.js --watch -i 2 //開啟2個進程
pm2 start app.js -i max //根據機器CPU核數,開啟對應數目的進程
更多命令可以去官網查看
這裡我們寫一個測試代碼,代碼如下
const express = require("express");
const app = express();
app.get("/", (req, res) => {
res.send("Hello World");
});
app.listen(8080, () => { // 啟動8080端口
console.log("run success");
});
然後把測試項目上傳到 /usr/web
目錄下,在這個文件夾下運行 pm2 start index.js
項目啟動成功後可以使用 ip 地址來訪問我們啟動的項目
linux查看IP地址
ifconfig -a
紅框所標註的就是ip地址
現在我們使用 192.168.56.128:8080
來嘗試訪問一下看能否正常訪問
可以看到已經可以正常訪問了,這裡有一個坑會導致我們無法訪問,就是 linux 沒有開放我們啟動的8080端口,導致無法在外界訪問到,下面是開放端口方法
linux開放訪問端口
-
第一步:開放端口 以8080端口為例
firewall-cmd --zone=public --add-port=8080/tcp --permanent
命令含義
--zone #作用域 --add-port=8080/tcp #添加端口,格式為 端口/通訊協議 -- permanent #永久生效
成功後返回 success
-
第二步:重啟Centos防火牆
firewall-cmd --reload
成功後返回 success
-
上述步驟操作完成後就可以正常訪問 8080 端口了,開放其他端口和上述方法一致