搜尋
首頁web前端js教程手把手教你安裝和設定pm2,實現自動化部署node項目

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

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

1、pm2簡介

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

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

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

  • 支援效能監控

  • 負載平衡

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

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

  • 自動化部署專案

2、pm2安裝與使用

2.1、全域安裝

npm install pm2 -g

2.2、常用指令

  • #啟動一個node程式

        pm2 start start.js

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

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

        pm2 start app.js --name application1
  • 叢集模式啟動

        // -i 表示 number-instances 实例数量
        // max 表示 PM2将自动检测可用CPU的数量 可以自己指定数量
        pm2 start start.js -i max

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

  • 新增進程監視

    // 在文件改变的时候会重新启动程序
    pm2 start app.js --name start --watch

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

  • #列出所有進程

        pm2 list
        pm2 ls // 简写
  • 從進程清單中刪除進程

        // pm2 delete [appname] | id
        pm2 delete app  // 指定进程名删除
        pm2 delete 0    // 指定进程id删除
  • 刪除進程清單中所有進程

        pm2 delete all
  • 查看某個進程具體情況

        pm2 describe app

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

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

        pm2 monit

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

  • 重啟程序

        pm2 restart app // 重启指定名称的进程
        pm2 restart all // 重启所有进程
  • 查看進程日誌

        pm2 logs app    // 查看该名称进程的日志
        pm2 logs all    // 查看所有进程的日志
  • 設定pm2開機自啟動

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

    pm2 startup centos

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

最後保存設定

pm2 save

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

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

npm install pm2 -g

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

# 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,已安裝的跳過

        yum –y install git
  • #產生秘鑰

        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倉庫

  • 首次部署

pm2 deploy deploy.yaml production setup

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

  • 再次部署

pm2 deploy deploy.yaml production update

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

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

4、可能會遇到的坑

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

pm2 deploy deploy.yaml production setup

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

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

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

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

陳述
本文轉載於:掘金社区。如有侵權,請聯絡admin@php.cn刪除
Python和JavaScript的未來:趨勢和預測Python和JavaScript的未來:趨勢和預測Apr 27, 2025 am 12:21 AM

Python和JavaScript的未來趨勢包括:1.Python將鞏固在科學計算和AI領域的地位,2.JavaScript將推動Web技術發展,3.跨平台開發將成為熱門,4.性能優化將是重點。兩者都將繼續在各自領域擴展應用場景,並在性能上有更多突破。

Python vs. JavaScript:開發環境和工具Python vs. JavaScript:開發環境和工具Apr 26, 2025 am 12:09 AM

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。

JavaScript是用C編寫的嗎?檢查證據JavaScript是用C編寫的嗎?檢查證據Apr 25, 2025 am 12:15 AM

是的,JavaScript的引擎核心是用C語言編寫的。 1)C語言提供了高效性能和底層控制,適合JavaScript引擎的開發。 2)以V8引擎為例,其核心用C 編寫,結合了C的效率和麵向對象特性。 3)JavaScript引擎的工作原理包括解析、編譯和執行,C語言在這些過程中發揮關鍵作用。

JavaScript的角色:使網絡交互和動態JavaScript的角色:使網絡交互和動態Apr 24, 2025 am 12:12 AM

JavaScript是現代網站的核心,因為它增強了網頁的交互性和動態性。 1)它允許在不刷新頁面的情況下改變內容,2)通過DOMAPI操作網頁,3)支持複雜的交互效果如動畫和拖放,4)優化性能和最佳實踐提高用戶體驗。

C和JavaScript:連接解釋C和JavaScript:連接解釋Apr 23, 2025 am 12:07 AM

C 和JavaScript通過WebAssembly實現互操作性。 1)C 代碼編譯成WebAssembly模塊,引入到JavaScript環境中,增強計算能力。 2)在遊戲開發中,C 處理物理引擎和圖形渲染,JavaScript負責遊戲邏輯和用戶界面。

從網站到應用程序:JavaScript的不同應用從網站到應用程序:JavaScript的不同應用Apr 22, 2025 am 12:02 AM

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

Python vs. JavaScript:比較用例和應用程序Python vs. JavaScript:比較用例和應用程序Apr 21, 2025 am 12:01 AM

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

C/C在JavaScript口譯員和編譯器中的作用C/C在JavaScript口譯員和編譯器中的作用Apr 20, 2025 am 12:01 AM

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),