windows 开机自动运行nodejs项目 pm2方法实现

PM2 是带有内置负载平衡器的 Node.js 应用程序的生产过程管理器。可以利用它来简化很多 Node 应用管理的繁琐任务,如性能监控、自动重启、负载均衡等。

安装部署
1、我们一般会把 pm2 安装到全局:

npm install pm2 -g
pm2 -v 查看安装成功否
2、安装windows自启动包:

npm install pm2-windows-startup -g
3、创建开机启动脚本文件:

pm2-startup install
注意:并不是到第3步就可以了,需要4、5步操作完,开机启动才有效。

4、使用pm2启用项目:

pm2 start 路径 --name 名称
例如:pm2 start ./app.js --name xsx // tips:是2个“-”,如果写一个,不会报错,name命名也不会成功的;

5、保存pm2中的项目:

pm2 save
注意:pm2 save很重要, 它保存当前 pm2 正在管理的 NodeJS 服务, 并在开机后恢复这些服务。

重启电脑可以查看( 以表格显示 ):

pm2 ls

如果要卸载服务,执行:
pm2-service-uninstall

  • 用--watch参数,意味着当你的express应用代码发生变化时,pm2会帮你重启服务,多贴心。
    pm2 start ./bin/www --watch

本人操作记录:

E:\code\testnode>pm2 start ./running.js --name running
[PM2] Starting E:\code\testnode\running.js in fork_mode (1 instance)
[PM2] Done.
┌─────┬────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name       │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ running    │ default     │ 1.0.0   │ fork    │ 5212     │ 0s     │ 0    │ online    │ 0%       │ 29.4mb   │ zb       │ disabled │
└─────┴────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
[PM2][WARN] Current process list is not synchronized with saved list. App -a differs. Type 'pm2 save' to synchronize.

E:\code\testnode>pm2 list
┌─────┬────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name       │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ running    │ default     │ 1.0.0   │ fork    │ 5212     │ 8s     │ 0    │ online    │ 0%       │ 38.1mb   │ zb       │ disabled │
└─────┴────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
[PM2][WARN] Current process list is not synchronized with saved list. App -a differs. Type 'pm2 save' to synchronize.

E:\code\testnode>pm2 save
[PM2] Saving current process list...
[PM2] Successfully saved in C:\Users\zb\.pm2\dump.pm2

E:\code\testnode>

// 导入mysql
const mysql = require('mysql')
// 导入express
const express = require('express')
// 创建服务器
const app = express()
// 通过createPool方法连接服务器
const db = mysql.createPool({
    host: '127.0.0.1', // 表示连接某个服务器上的mysql数据库
    user: 'root', // 数据库的用户名 (默认为root)
    password: '123456', // 数据库的密码 (默认为root)
    database: 'qqs',// 创建的本地数据库名称
})

// 通过nodejs获取数据库中的数据  并返回给客户端------------------ 
app.get('/user', (req, res) => {
    // 通过db.query方法来执行mysql  测试是否连接成功
    // 查询语句 data 得到的是一个数组,  增删改得到的是受影响的行数
    db.query('select TicketNo from ticket', (err, data) => {
        if (err) return console.log(err.message); // 连接失败
        
        if (data.length === 0) return console.log('数据为空'); // 数据长度为0 则没有获取到数据
        
        // 否则获取成功,将结果返回给客户端res.send
        console.log('----ok');
        res.send({
            status: 0,
            msg: '数据获取成功',
            data
        })
    })

})
 
// 启动服务器
app.listen(8080, () => {
    console.log('running...');
})

  • 实践:有时候重启机器,进程不在了,需要cmd用超级管理运行才可以,不仅仅开启进程用管理身份cmd,安装pm2开始就得用管理身份!!!!!

  • tips pm2实现带有参数启动nodejs

nodejs 特殊环境 启动必须带上:--tls-min-v1.0
node --tls-min-v1.0 ./app.js
pm2 start ./app.js --node-args="--tls-min-v1.0" 注意格式!!!!
posted @ 2022-10-31 11:34  盘思动  阅读(1650)  评论(0编辑  收藏  举报