• 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...');
    })
    
    
  • 相关阅读:
    无符合条件的记录,SUM函数返回NULL。返回0而不是Null
    Java中的堆栈,队列,链表
    Java集合类的问题
    2014.7.30日结
    我的CSS之路1
    2014.7.27-7.28日结
    LeetCode解题源代码链接集锦一
    2014.7.23日结
    C++之数组声明与初始化
    系统结构之指令
  • 原文地址:https://www.cnblogs.com/pansidong/p/16843748.html
Copyright © 2020-2023  润新知