目錄
1、pm2簡介
1.1、使用pm2管理的node程式的好處
2、pm2安裝與使用
2.1、全域安裝
2.2、常用指令
3、透過pm2設定檔來自動部署項目
3.1 在專案根目錄下新建一個deploy.yaml 檔案
#3.2 設定git的ssh免密認證
3.3 使用pm2部署專案
#3.4 此部署流程同樣適用前端專案
4、可能會遇到的坑
首頁 web前端 js教程 手把手教你安裝和設定pm2,實現自動化部署node項目

手把手教你安裝和設定pm2,實現自動化部署node項目

Dec 29, 2021 pm 07:15 PM
node pm2

pm2怎麼自動化部署nodejs專案?以下這篇文章為大家介紹一下安裝和設定pm2,並實現自動化部署node專案的方法,希望對大家有幫助!

手把手教你安裝和設定pm2,實現自動化部署node項目

1、pm2簡介

pm2(process manager)是一個行程管理工具,維護一個行程列表,可以用它來管理你的node進程,負責所有正在運行的進程,並查看node進程的狀態,也支援效能監控,負載平衡等功能。

1.1、使用pm2管理的node程式的好處

  • #監聽檔案變化,自動重新啟動程式

  • 支援效能監控

  • 負載平衡

  • #程式崩潰自動重新啟動

  • 伺服器重新啟動時自動重新啟動

  • 自動化部署專案

2、pm2安裝與使用

2.1、全域安裝

1

npm install pm2 -g

登入後複製
登入後複製

2.2、常用指令

  • #啟動一個node程式

    1

    pm2 start start.js

    登入後複製

手把手教你安裝和設定pm2,實現自動化部署node項目

  • #啟動進程並指定應用程式的程式名稱

    1

    pm2 start app.js --name application1

    登入後複製
  • 叢集模式啟動

    1

    2

    3

    // -i 表示 number-instances 实例数量

    // max 表示 PM2将自动检测可用CPU的数量 可以自己指定数量

    pm2 start start.js -i max

    登入後複製

手把手教你安裝和設定pm2,實現自動化部署node項目

  • 新增進程監視

    1

    2

    // 在文件改变的时候会重新启动程序

    pm2 start app.js --name start --watch

    登入後複製

手把手教你安裝和設定pm2,實現自動化部署node項目

  • #列出所有進程

    1

    2

    pm2 list

    pm2 ls // 简写

    登入後複製
  • 從進程清單中刪除進程

    1

    2

    3

    // pm2 delete [appname] | id

    pm2 delete app  // 指定进程名删除

    pm2 delete 0    // 指定进程id删除

    登入後複製
  • 刪除進程清單中所有進程

    1

    pm2 delete all

    登入後複製
  • 查看某個進程具體情況

    1

    pm2 describe app

    登入後複製

手把手教你安裝和設定pm2,實現自動化部署node項目

  • #查看進程的資源消耗量

    1

    pm2 monit

    登入後複製

手把手教你安裝和設定pm2,實現自動化部署node項目

  • 重啟程序

    1

    2

    pm2 restart app // 重启指定名称的进程

    pm2 restart all // 重启所有进程

    登入後複製
  • 查看進程日誌

    1

    2

    pm2 logs app    // 查看该名称进程的日志

    pm2 logs all    // 查看所有进程的日志

    登入後複製
  • 設定pm2開機自啟動

開啟啟動設置,這裡是CentOS系統,其他系統取代最後一個選項(可選項:ubuntu, centos, redhat, gentoo, systemd, darwin , amazon)

1

pm2 startup centos

登入後複製

然後按照提示需要輸入的命令進行輸入

最後保存設定

1

pm2 save

登入後複製

3、透過pm2設定檔來自動部署項目

#確保伺服器安裝了pm2,沒有安裝的話先安裝

1

npm install pm2 -g

登入後複製
登入後複製

3.1 在專案根目錄下新建一個deploy.yaml 檔案

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

# deploy.yaml

apps:

  - script: ./start.js       # 入口文件

    name: 'app'              # 程序名称

    env:                     # 环境变量

      COMMON_VARIABLE: true

    env_production:

      NODE_ENV: production

 

deploy:                     # 部署脚本

  production:               # 生产环境

    user: lentoo            # 服务器的用户名

    host: 192.168.2.166     # 服务器的ip地址

    port: 22                # ssh端口

    ref: origin/master      # 要拉取的git分支

    ssh_options: StrictHostKeyChecking=no # SSH 公钥检查

    repo: https://github.com/**.git # 远程仓库地址

    path: /home              # 拉取到服务器某个目录下

    pre-deploy: git fetch --all # 部署前执行

    post-deploy: npm install &&  pm2 reload deploy.yaml --env production # 部署后执行

    env:

      NODE_ENV: production

登入後複製

#3.2 設定git的ssh免密認證

  • 在伺服器中產生rsa公鑰和私鑰,目前是centos7 下進行

  • 前提伺服器要安裝git,沒有安裝的先安裝git,已安裝的跳過

    1

    yum –y install git

    登入後複製
  • #產生秘鑰

    1

    ssh-keygen -t rsa -C "xxx@xxx.com"

    登入後複製

    在~/.ssh目錄下有id_rsa和id_rsa.pub兩個文件,其中id_rsa.pub文件裡存放的即是公鑰key。

  • 登入GitHub,點選右上方的頭像,選擇settings ,點選Add SSH key,把id_rsa.pub的內容複製到裡面即可。

手把手教你安裝和設定pm2,實現自動化部署node項目

3.3 使用pm2部署專案

在每次部署前先將本地的程式碼提交到遠端git倉庫

  • 首次部署

1

pm2 deploy deploy.yaml production setup

登入後複製
登入後複製

#部署完成後,既可登陸伺服器查看配置的目錄下是否從git上拉取了項目

  • 再次部署

1

pm2 deploy deploy.yaml production update

登入後複製

#3.4 此部署流程同樣適用前端專案

如vue- cli的項目,自動部署到伺服器,自動執行npm run build 指令,產生的dist目錄,指定到nginx的靜態檔案目錄下。

4、可能會遇到的坑

  • 在window系統下vscode的命令列程序,以及powershell執行部署的命令時,出現部署失敗

1

pm2 deploy deploy.yaml production setup

登入後複製
登入後複製

手把手教你安裝和設定pm2,實現自動化部署node項目

解決方案:使用git命令列來執行

更多node相關知識,請造訪:nodejs 教學! !

以上是手把手教你安裝和設定pm2,實現自動化部署node項目的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

node專案中如何使用express來處理檔案的上傳 node專案中如何使用express來處理檔案的上傳 Mar 28, 2023 pm 07:28 PM

node專案中如何使用express來處理檔案的上傳

nvm 怎麼刪除node nvm 怎麼刪除node Dec 29, 2022 am 10:07 AM

nvm 怎麼刪除node

Node服務怎麼進行Docker鏡像化?極致優化詳解 Node服務怎麼進行Docker鏡像化?極致優化詳解 Oct 19, 2022 pm 07:38 PM

Node服務怎麼進行Docker鏡像化?極致優化詳解

深入淺析Node的進程管理工具'pm2” 深入淺析Node的進程管理工具'pm2” Apr 03, 2023 pm 06:02 PM

深入淺析Node的進程管理工具'pm2”

Pi Node教學:什麼是Pi節點?如何安裝和設定Pi Node? Pi Node教學:什麼是Pi節點?如何安裝和設定Pi Node? Mar 05, 2025 pm 05:57 PM

Pi Node教學:什麼是Pi節點?如何安裝和設定Pi Node?

聊聊用pkg將Node.js專案打包為執行檔的方法 聊聊用pkg將Node.js專案打包為執行檔的方法 Dec 02, 2022 pm 09:06 PM

聊聊用pkg將Node.js專案打包為執行檔的方法

使用Angular和Node進行基於令牌的身份驗證 使用Angular和Node進行基於令牌的身份驗證 Sep 01, 2023 pm 02:01 PM

使用Angular和Node進行基於令牌的身份驗證

IDEA中怎麼設定安裝node.js?方法淺析 IDEA中怎麼設定安裝node.js?方法淺析 Dec 21, 2022 pm 08:28 PM

IDEA中怎麼設定安裝node.js?方法淺析

See all articles