PM2 (Process Manager)

Node.js

PM2 (Process Manager),管理所有 Node.js 程式,於背景自動執行,PM2 的配置設定檔教學範例。

配置檔案

產生 JavaScript 範本檔案 ecosystem.config.js:

pm2 ecosystem

編輯範本檔案:

vim ecosystem.config.js
module.exports = { 
    // 程序
    apps : [
        // 第一個為主要程序
        {
            // 程序名稱
            name: 'gp-sync',
            // 啟動的腳本路徑
            script: './gp-sync/server/app.js',

            // Options reference: https://pm2.keymetrics.io/docs/usage/application-declaration/
            // 傳給腳本的參數
            // args: 'one two',

            // 使用的實例數
            instances: 1,
            // 發生異常自動重啟
            autorestart: true,
            // 監聽自動重啟 (所有子目錄變化時),預設 false 不監聽
            watch: false,
            // RAM 使用超出自動重啟
            max_memory_restart: '150M',
            // 日誌日期格式
            log_date_format: 'YYYY-MM-DD HH:mm Z',

            // 開發環境 pm2 start ecosystem.config.js --env development
            env: {
                NODE_ENV: 'development'
            },
            // 正式環境 pm2 start ecosystem.config.js --env production
            env_production: {
                NODE_ENV: 'production'
            }   
        },
        // 次要程序 (實測不會延用主要程序其它設定)
        {
            name: 'human-resource',
            script: './human-resource/server/app.js',
        },
        {
            name: 'process-price',
            script: './process-price/server/app.js',
        },
        {
            name: 'rd-kpi',
            script: './rd-kpi/server/app.js',
        },
        {
            name: 'revenue-rate',
            script: './revenue-rate/server/app.js',
        },
        {
            name: 'semi-automatic',
            script: './semi-automatic/server/app.js',
        },
        {
            name: 'web-api (gp)',
            script: './web-api/gp/app.js',
        },
        {
            name: 'web-api (mes)',
            script: './web-api/mes/app.js',
        },
    ], 

    // 部署方式
    // deploy : { 
    //     production : { 
    //         user : 'node',
    //         host : '212.83.163.1',
    //         ref  : 'origin/master',
    //         repo : 'git@github.com:repo.git',
    //         path : '/var/www/production',
    //         'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production'
    //     }   
    // }
};

啟用程序

pm2 start ecosystem.config.js

參考

發表留言