安裝Nodejs
1、到官網(wǎng)下載最新穩(wěn)定版nodejs
根據(jù)自己機器系統(tǒng)環(huán)境下載對應的版本,我使用的64位的CentOS系統(tǒng),因此我下載了node-v8.10.0-linux-x64.tar.xz這個包。

如果你想下載其他版本,訪問這里:https://nodejs.org/dist/。
2、解壓
解壓下載的壓縮包:node-v8.10.0-linux-x64.tar.xz,需要先使用xz命令,再解壓tar包。解壓完成后,我們將nodejs移動到安裝目錄下,由于該版本已經(jīng)編譯好,因此無需再編譯即可使用。
xz -d node-v8.10.0-linux-x64.tar.xz
tar -xvf node-v8.10.0-linux-x64.tar
mv node-v8.10.0-linux-x64 /usr/local/nodejs
如果xz沒安裝,是centos服務器則直接執(zhí)行命令
yum install xz
就可以,其他類型請網(wǎng)上查詢
3、設置環(huán)境變量
我們需要設置環(huán)境變量以便可以直接使用node命令。使用命令vim /etc/profile打開文件,在文件末尾加上以下兩行,并保存。
export NODE_HOME=/usr/local/nodejs
export PATH=$NODE_HOME/bin:$PATH
保存好后,執(zhí)行以下命令讓配置立即生效:
source /etc/profile
4、驗證
依次輸入node -v和npm -v命令:
v8.10.0
[root@localhost ~]# npm -v
5.6.0
可以看到node的版本是v8.10.0,而且自帶安裝好了npm,版本是5.6.0。
5、安裝cnpm鏡像
由于眾所周知的原因,npm命令安裝依賴時會非常慢,因此我們使用淘寶鏡像加速安裝依賴,安裝好后,就可以使用cnpm命令來安裝常用的依賴。
npm install -g cnpm --registry=https://registry.npm.taobao.org
什么是PM2
PM2是node進程管理工具,可以利用它來簡化很多node應用管理的繁瑣任務,如性能監(jiān)控、自動重啟、負載均衡等,而且使用非常簡單。
安裝PM2
使用cnpm命令安裝全局的pm2。
使用cnpm命令安裝全局的pm2。
cnpm install -g pm2
PM2基本命令
pm2 list 查看所有被PM2管理的進程列表
pm2 start xxx 啟動一個應用
pm2 stop xxx 停止一個應用
pm2 restart xxx 重啟一個應用
pm2 describe xxx 查看應用詳情
pm2 startup, pm2 save 兩條命令,用來保證服務器啟動時,pm2管理的程序自動運行
Java程序處理
在jar的同級目錄新建應用啟動配置文件,如pm2.json,內容如下:
{
"name": "my-server",
"script": "/usr/java/jdk1.8.0_201/bin/java",
"args": [
"-jar",
"server.jar"
],
"exec_interpreter": "",
"exec_mode": "fork"
}
說明如下:
name 進程名稱(顯示在pm2 list命令中)
script 執(zhí)行進程名稱,如果需要執(zhí)行PHP腳本則填寫php解釋器的路徑,本文為java
args 傳給執(zhí)行進程的參數(shù),多個參數(shù)以數(shù)組單元分割
exec_interpreter NodeJs解析器,本文不適用
exec_mode 執(zhí)行模式[cluster|fork]這個針對NodeJs應用的配置,非NodeJs應用統(tǒng)一fork
配置文件完成后,使用
1
pm2 start pm2.json
即可看到應用被啟動
我們還可以使用命令pm2 list查看當前node服務進程。

查看進程日志
pm2 log 0

查看進程詳情
pm2 describe <id|app_name>
進程監(jiān)控
pm2 monit

接下來我們要做的是把pm2加入到開機啟動中去,以便于pm2會隨著服務器開機自啟動,運行以下命令:
pm2 startup
pm2 save
我們還可以使用pm2 show hello查看名稱為“hello”的node進程詳情。
更多有關PM2的使用說明請參考PM2項目github上的地址:https://github.com/Unitech/pm2。
幾點經(jīng)驗:
通過 json 啟動之后, 就可以直接使用 json 文件中的名稱來對項目進行控制, 如 pm2 stop name;
每次重新打包之后, 使用 pm2 restart name 就可以更新項目;
如果修改了 json 文件, 就無法通過 restart 更新項目了, 必須要先 pm2 del name 然后再重新 pm2 start xx.json.
{
"name": "fz",
"script": "/usr/bin/java",
"args": [
"-jar",
"/home/imzhizi/tcm-fz/target/fz.jar",
"--spring.profiles.active=prod"
],
"exec_interpreter": "",
"exec_mode": "fork",
"error_file" : "/home/imzhizi/log/fz-err.log",
"out_file" : "/home/imzhizi/log/fz-out.log"
}