linux如何后臺(tái)運(yùn)行node服務(wù)震束?

寬神曰: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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市溯街,隨后出現(xiàn)的幾起案子诱桂,更是在濱河造成了極大的恐慌,老刑警劉巖呈昔,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挥等,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡韩肝,警方通過查閱死者的電腦和手機(jī)触菜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來哀峻,“玉大人涡相,你說我怎么就攤上這事∈s埃” “怎么了催蝗?”我有些...
    開封第一講書人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)育特。 經(jīng)常有香客問我丙号,道長(zhǎng),這世上最難降的妖魔是什么缰冤? 我笑而不...
    開封第一講書人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任犬缨,我火速辦了婚禮,結(jié)果婚禮上棉浸,老公的妹妹穿的比我還像新娘怀薛。我一直安慰自己,他們只是感情好迷郑,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開白布枝恋。 她就那樣靜靜地躺著,像睡著了一般嗡害。 火紅的嫁衣襯著肌膚如雪焚碌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,584評(píng)論 1 312
  • 那天霸妹,我揣著相機(jī)與錄音十电,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛摆出,可吹牛的內(nèi)容都是我干的朗徊。 我是一名探鬼主播首妖,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼偎漫,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了有缆?” 一聲冷哼從身側(cè)響起象踊,我...
    開封第一講書人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎棚壁,沒想到半個(gè)月后杯矩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡袖外,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年史隆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片曼验。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡泌射,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鬓照,到底是詐尸還是另有隱情熔酷,我是刑警寧澤,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布豺裆,位于F島的核電站拒秘,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏臭猜。R本人自食惡果不足惜躺酒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蔑歌。 院中可真熱鬧羹应,春花似錦、人聲如沸丐膝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽帅矗。三九已至偎肃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間浑此,已是汗流浹背累颂。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人紊馏。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓料饥,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親朱监。 傳聞我的和親對(duì)象是個(gè)殘疾皇子岸啡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361