pm2 代替 Supervisor 管理進程

前提

咱們在使用 Laravel 的時候難免用到列隊來處理任務,而 Laravel 官方文檔給出的是 Supervisor 來管理進程和監控。
可是咱們在使用中有下面幾個缺點:php

  • Supervisor 單日誌
  • 配置過於複雜
  • 沒法預配設置
 

pm2

pm2 這個工具我想作前端,尤爲是作過 SSR 的都不陌生,咱們須要使用 pm2 工具讓進程常駐運行與自動重啓這類功能。前端

可是咱們知道 pm2 是 node 下工具,可否用於其餘語言呢?實際上是能夠的,咱們都說了嘛,pm2 就是一個工具,一個用 js 開發的工具而已。既然是工具,固然能用到其餘地方去。node

 

安裝

laravel 下自己就有一個 package.json 文件。反正也要用到 node,若是你和我同樣有強迫症,就依賴到項目中。若是沒有,則能夠全局安裝:laravel

 

依賴到項目

npm i pm2 // or yarn add pm2
 

依賴到全局

npm -g i pm2 // or yarn add --global pm2
 

預先配置

咱們在項目中創建一個 YAML 的進程配置文件,暫且命名爲 process.ymlnpm

apps:
  - name: "laravel:queue:work" # 這裏本身命名
    script: artisan // 指定腳本爲 artisan 腳本
    watch: false // 不監聽文件變化
    interpreter: php // 腳本爲php,若是你的 php 不在全局變量能夠指定絕對路徑腳本
    args: "queue:work --tries=3" // artisan 命令和參數 restart_delay: 3000 // 進程中斷三秒後重啓 error_file: ./storage/logs/queue.error.log // 錯誤日誌 out_file: ./storage/logs/queue.out.log // 輸出日誌 pid_file: ./storage/app/queue.pid // pid 文件路徑
 

package scripts 配置

咱們爲了方便在項目中啓動,咱們配置幾個命令:json

"scripts": { "queue:start": "npm run queue:remove && pm2 start process.yml", "queue:remove": "pm2 delete process.yml" }
 

啓動

如今咱們運行下面的命令就能夠了:bash

npm run queue:start // or yarn queue:start

其實使用 pm2 最大的好處就是由於這玩意比 Supervisor 簡單app

相關文章
相關標籤/搜索