展開
            湖北國聯(lián)計(jì)算機(jī)科技有限公司
          1. 首頁HOME
          2. 公司簡介INTRODUCTION
          3. 安全防御DEFENSE
          4. 軟件開發(fā)SOFTWARE
          5. 物聯(lián)網(wǎng)IOT
          6. 運(yùn)行維護(hù)SRE
          7. 成功案例CASE
          8. 聯(lián)系我們CONTACT
          9. Software Technology Sharing |技術(shù)分享

            nodejs部署方式-pm2
            來源:湖北國菱計(jì)算機(jī)科技有限公司-荊州網(wǎng)站建設(shè)-荊州軟件開發(fā)-政府網(wǎng)站建設(shè)公司 時(shí)間:2020-06-15

            目前Nodejs開發(fā)中有很多痛點(diǎn),其中有一個(gè)是修改完代碼以后需要我們重啟服務(wù)才能看到效果。這樣一次次的殺進(jìn)程、重啟,殺進(jìn)程、重啟很讓人頭大。程序員是最痛恨重復(fù)工作的物種,之前有了解過的同學(xué)可能知道forever。forever可以幫我們解決上面的問題,通過對資源變化的檢測做到變化后自動(dòng)重啟。開發(fā)階段我們使用 node file.js 來啟動(dòng)另外由于Nodejs的單線程,任何異常都會(huì)導(dǎo)致整個(gè)服務(wù)中斷,這對于生產(chǎn)上長時(shí)間提供服務(wù)的程序來講是不可以的, forever 可以幫我們在異常后重啟,保證服務(wù)一直在線,我想這也就是它名字的由來吧。但我想說的是 forever 不夠“高!大!上!”。接下來我要介紹一個(gè)足夠高大上的神器– pm2 。

            簡介

            pm2 = P (rocess) M (anager)2,是可以用于生產(chǎn)環(huán)境的Nodejs的進(jìn)程管理工具,并且它內(nèi)置一個(gè)負(fù)載均衡。它不僅可以保證服務(wù)不會(huì)中斷一直在線,并且提供0秒reload功能,還有其他一系列進(jìn)程管理、監(jiān)控功能。并且使用起來非常簡單。下面我將把我的使用過程分享出來,Nodejs應(yīng)用是一個(gè)基于Express 4.x的應(yīng)用,名稱是 Wolverine 。

            安裝

            環(huán)境清單:

            • windows7 x64

            • node v5.0.0

            • npm 3.3.6

            全局安裝 pm2

            $ npm install pm2 -g

            更新

            $ pm2 update

            啟動(dòng)

            直接啟動(dòng)的命令: pm2 start *** --watch (修改名稱 --name='')

            以前啟動(dòng) Wolverine 是利用package.json的 scripts 來實(shí)現(xiàn)的,只需要執(zhí)行 npm run start 就可以啟動(dòng),配置如下:

            'scripts': {

               'start': 'node ./bin/www',

               'debug': 'node debug ./bin/www'

             },

            使用 pm2 我們可以在start處配置成 pm2 ./bin/www ,命令后面支持加參數(shù)來實(shí)現(xiàn)watch、cluster多進(jìn)程模式等功能。我不太喜歡一大串的命令,于是我使用了配置文件的方式。

            Wolverine 的根目錄,我創(chuàng)建了一個(gè) processes.json 配置文件,配置文件內(nèi)容如下,注釋寫的也很清楚了

            {

             'apps' : [{

               'name' : 'Wolverine',  //名稱

               'script': './bin/www', //程序入庫

               'cwd': './',           //根目錄

               'watch':[

                                       'bin',

                                       'common',

                                       'configs',

                                       'public',

                                       'routes',

                                       'views'

                         ],//需要監(jiān)控的目錄

               'error_file':'./logs/app-err.log',//錯(cuò)誤輸出日志

               'out_file':'./logs/app-out.log',  //日志

               'log_date_format':'YYYY-MM-DD HH:mm Z' //日期格式

               }]

            }

            隨后,我在package.json中增加了一條

            'pm2': 'pm2 start processes.json'

            在啟動(dòng)就直接輸入如下命令就好:

            $ npm run pm2

            看到下面的界面,就啟動(dòng)成功了,然后我們就可以關(guān)掉這個(gè)窗口了,服務(wù)不會(huì)因此停止,是不是高大上多了。

            管理和監(jiān)控

            啟動(dòng)成功的界面會(huì)展示App name和id,這兩個(gè)值很重要。當(dāng)然這兩個(gè)值都可以在processes.json配置文件進(jìn)行配置。

            打開命令行,在任何路徑下,輸入

            $ pm2 list

            就能看到啟動(dòng)時(shí)的圖表界面,方便我們查看所有通過pm2管理的Nodejs服務(wù)。

            輸入,下面命令配合id或者name可以查看某一個(gè)進(jìn)程的詳細(xì)信息

            $ pm2 show Wolverine 或者

            $ pm2 show 0

            內(nèi)容涉及重啟次數(shù)、運(yùn)行時(shí)間、腳本路徑、參數(shù)、日志路徑、運(yùn)行模式等等信息

            輸入

            $ pm2 monit

            停止、重啟等命令

            $ pm2 stop [app-name|id]  #停止某一個(gè)進(jìn)程,可以使用app-name或者id

            $ pm2 stop all            #停止所有進(jìn)程

            $ pm2 restart all         #重啟所有的進(jìn)程

            $ pm2 delete [app-name|id]#刪除并停止進(jìn)程

            $ pm2 delete all          #刪除并停止所有進(jìn)程

            可以進(jìn)一步查看每一個(gè)服務(wù)的cpu、內(nèi)存動(dòng)態(tài)占用情況。

            日志監(jiān)控

            如果你一直使用 tail -f log_file.log log_error.log 來查看日志,你可能會(huì)愛上下面的這個(gè)功能。

            $ pm2 logs

            $ pm2 logs [app-name]

            我們可以實(shí)時(shí)查看全部進(jìn)程的日志,或者只查看某一個(gè)。我們甚至可以使用json格式查看日志。

            $ pm2 logs --json

            windows下創(chuàng)建服務(wù)

            1.npm i pm2 -g

            2.npm i pm2-windows-service -g

            3.安裝服務(wù):pm2-service-install -n niumowangya (安裝后在windows服務(wù)中多了一個(gè) niumowangya 的服務(wù)); ##卸載pm2-service-uninstall

            4.設(shè)置環(huán)境變量:PM2_SERVICE_SCRIPTS = PM2的配置文件( .pm2) or PM2_HOME=D:.pm2(自己安裝的PM2配置的路徑);

            5.windows服務(wù)中重新啟動(dòng)myservice服務(wù)

            linux下創(chuàng)建服務(wù)

            https://pm2.io/doc/en/runtime/guide/startup-hook/?utm_source=pm2&utm_medium=website&utm_campaign=rebranding#next-steps


            荊州地區(qū)政府網(wǎng)站建設(shè) 解決方案 專業(yè)團(tuán)隊(duì) 騰訊第三方平臺(tái) 地址:湖北省荊州市沙市區(qū)荊沙大道楚天都市佳園一期C區(qū)29棟112       地址:湖北省松滋市新江口街道才知文化廣場1幢1146-1151室     郵編:434200 聯(lián)系電話:0716-6666211     網(wǎng)站編輯部郵箱:business@gl-ns.com 鄂公網(wǎng)安備 42100202000212號(hào) 備案號(hào):鄂ICP備2021015094號(hào)-1     企業(yè)名稱:湖北國菱計(jì)算機(jī)科技有限公司
            2020国自产拍精品免费观看,国产经典aⅴ三级观看,国产午夜99视频精品免费播放,亚洲开心网激情五月,91久久精品无码,久久综合香蕉久久久久久久,亚洲中亚洲中文字幕无线乱码,在线播放对白太大了