寬神曰:
pm2!
對(duì)于一個(gè)前端新手
來說,真的是一大坑当犯,看了網(wǎng)上好多例子垢村,但沒有一個(gè)能說明白的,我發(fā)現(xiàn)沒有哪個(gè)程序狗能把一個(gè)問題說的像我一樣完美嚎卫。不服來打死我嘉栓,我不還手的。
1.安裝pm2
你要在linux上安裝pm2有很多方法拓诸,但我是用node的工具npm來完成安裝的侵佃,所以在安裝pm2之前需要先安裝node。這里如果不會(huì)奠支,就百度一個(gè)安裝node,這個(gè)小事我就不做了馋辈,如果不服,那就不服1睹铡迈螟!
在你的任意目錄輸入命令: npm install pm2 -g
[root@iZmwyb7v60px1zZ ~]# npm install pm2 -g
/usr/sbin/nodejs/bin/pm2 -> /usr/sbin/nodejs/lib/node_modules/pm2/bin/pm2
/usr/sbin/nodejs/bin/pm2-dev -> /usr/sbin/nodejs/lib/node_modules/pm2/bin/pm2-dev
/usr/sbin/nodejs/bin/pm2-docker -> /usr/sbin/nodejs/lib/node_modules/pm2/bin/pm2-docker
/usr/sbin/nodejs/bin/pm2-runtime -> /usr/sbin/nodejs/lib/node_modules/pm2/bin/pm2-runtime
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.9 (node_modules/pm2/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.9: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
+ pm2@3.5.1
added 317 packages from 256 contributors in 33.801s
有幾個(gè)warn不管他,因?yàn)樵诖a界尔崔,warn不算什么答毫,只要沒有
error
。
這樣安裝完成后你執(zhí)行命令: pm2 list
[root@VM_165_102_centos /]# pm2 list
回車后:
-bash: pm2: command not found
說明季春,沒有配制到全局烙常,雖然安裝到全局,不知道為毛鹤盒,
linux下不像windows下能自動(dòng)創(chuàng)造一個(gè)環(huán)境變量去實(shí)現(xiàn)我們的全局蚕脏。
所以我們需要?jiǎng)?chuàng)建一個(gè)linux下的軟連接。
2:創(chuàng)建軟連接
操作描述:在linux上的設(shè)置軟連接相當(dāng)于是windows下的配制環(huán)境變量一個(gè)道理侦锯,只是這里用了命令完成的操作驼鞭。這里我們就開始為pm2創(chuàng)建軟連接,這里首先要明確的是尺碰,我們要知道誰和誰去連接挣棕,問題來了?知道是哪個(gè)和哪個(gè)連接嗎亲桥?好了洛心,答案是:我們的linux下的全局$PATH和我們pm2的安裝路徑。那么我們?nèi)绾沃浪麄兊穆窂椒謩e是哪里呢题篷?
1.找到全局環(huán)境PATH路徑
輸入命令: echo $PATH
回車后:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
你的路徑和我的可能不一樣词身,但沒關(guān)系,你可以選擇任何一個(gè)以:隔開的路徑做為系統(tǒng)環(huán)境路徑番枚,我通常會(huì)選/usr/local/bin
2:找到pm2的安裝路徑
在上面輸入 npm install pm2 -g
全局安裝時(shí)
/usr/sbin/nodejs/bin/pm2 -> /usr/sbin/nodejs/lib/node_modules/pm2/bin/pm2
/usr/sbin/nodejs/bin/pm2
是安裝路徑(你的可能和我的不一樣)
3.好了都找到了法严,
就重要的一步要開始了损敷,睜大你的雙眼。
命令為: ln -s /usr/sbin/nodejs/bin/pm2 /usr/local/bin/
(注意空格)
格式:ln -s
空格pm2安裝路徑
空格系統(tǒng)環(huán)境路徑
[root@iZmwyb7v60px1zZ ~]# pm2 list
-bash: pm2: command not found
[root@iZmwyb7v60px1zZ ~]# pm2 list
-bash: pm2: command not found
[root@iZmwyb7v60px1zZ ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@iZmwyb7v60px1zZ ~]# whereis pm2
pm2:[root@iZmwyb7v60px1zZ ~]# find pm2
find: ‘pm2’: No such file or directory
[root@iZmwyb7v60px1zZ ~]# ^C
[root@iZmwyb7v60px1zZ ~]# ln -s /usr/sbin/nodejs/bin/pm2 /usr/local/bin/
OK深啤,搞定拗馒,接下來驗(yàn)證一把…
[root@iZmwyb7v60px1zZ ~]# pm2 list
回車...
-------------
__/\\\\\\\\\\\\\____/\\\\____________/\\\\____/\\\\\\\\\_____
_\/\\\/////////\\\_\/\\\\\\________/\\\\\\__/\\\///////\\\___
_\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_\///______\//\\\__
_\/\\\\\\\\\\\\\/__\/\\\\///\\\/\\\/_\/\\\___________/\\\/___
_\/\\\/////////____\/\\\__\///\\\/___\/\\\________/\\\//_____
_\/\\\_____________\/\\\____\///_____\/\\\_____/\\\//________
_\/\\\_____________\/\\\_____________\/\\\___/\\\/___________
_\/\\\_____________\/\\\_____________\/\\\__/\\\\\\\\\\\\\\\_
_\///______________\///______________\///__\///////////////__
Runtime Edition
PM2 is a Production Process Manager for Node.js applications
with a built-in Load Balancer.
Start and Daemonize any application:
$ pm2 start app.js
Load Balance 4 instances of api.js:
$ pm2 start api.js -i 4
Monitor in production:
$ pm2 monitor
Make pm2 auto-boot at server restart:
$ pm2 startup
To go further checkout:
http://pm2.io/
-------------
[PM2] Spawning PM2 daemon with pm2_home=/root/.pm2
[PM2] PM2 Successfully daemonized
┌──────────┬────┬─────────┬──────┬─────┬────────┬─────────┬────────┬─────┬─────┬──────┬──────────┐
│ App name │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │
└──────────┴────┴─────────┴──────┴─────┴────────┴─────────┴────────┴─────┴─────┴──────┴──────────┘
Use `pm2 show <id|name>` to get more details about an app
[root@iZmwyb7v60px1zZ ~]#
ok!
常用命令
$ pm2 start app.js # 啟動(dòng)app.js應(yīng)用程序
$ pm2 start app.js –name=”api” # 啟動(dòng)應(yīng)用程序并命名為 “api”
$ pm2 start app.js –watch # 當(dāng)文件變化時(shí)自動(dòng)重啟應(yīng)用
$ pm2 start script.sh # 啟動(dòng) bash 腳本
$ pm2 list # 列表 PM2 啟動(dòng)的所有的應(yīng)用程序
$ pm2 monit # 顯示每個(gè)應(yīng)用程序的CPU和內(nèi)存占用情況
$ pm2 show [app-name] # 顯示應(yīng)用程序的所有信息
$ pm2 logs # 顯示所有應(yīng)用程序的日志
$ pm2 logs [app-name] # 顯示指定應(yīng)用程序的日志
$ pm2 stop all # 停止所有的應(yīng)用程序
$ pm2 stop 0 # 停止 id為 0的指定應(yīng)用程序
$ pm2 restart all # 重啟所有應(yīng)用
$ pm2 reload all # 重啟 cluster mode下的所有應(yīng)用
$ pm2 gracefulReload all # Graceful reload all apps in cluster mode
$ pm2 delete all # 關(guān)閉并刪除所有應(yīng)用
$ pm2 delete 0 # 刪除指定應(yīng)用 id 0
$ pm2 scale api 10 # 把名字叫api的應(yīng)用擴(kuò)展到10個(gè)實(shí)例
$ pm2 reset [app-name] # 重置重啟數(shù)量
$ pm2 startup # 創(chuàng)建開機(jī)自啟動(dòng)命令
$ pm2 save # 保存當(dāng)前應(yīng)用列表
$ pm2 resurrect # 重新加載保存的應(yīng)用列表
$ pm2 update # Save processes, kill PM2 and restore processes
$ pm2 generate # Generate a sample json configuration file