V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
air00dd
V2EX  ›  问与答

Node.js 服务 WIN PC 开机自启动除了 PM2 有没有更好的替代方案?

  •  
  •   air00dd · 333 天前 · 1017 次点击
    这是一个创建于 333 天前的主题,其中的信息可能已经有所发展或是发生改变。
    日常使用的 WIN PC 建过一个 Node.js 服务,让服务开机自启动用的是 PM2. 但是 PM2 方案正常运行两个月后突然就各种报错,后台不停生成 log 。每次都只能手动启动 Node.js 服务

    WIN 系统下用 PM2 太痛苦了(好像当时还手动弄了个 windows 服务,但是和 PM2 之间运行逻辑的关系不清楚),尤其是有时候不知道什么时候涉及到的复杂的权限管理、windows 服务管理。

    不考虑云服务或 WSL ,只考虑 win 系统上的解决方案或者其他比较好的替代 PM2 的开源项目
    第 1 条附言  ·  333 天前
    PM2 is a process manager for the JavaScript runtime Node.js. In 2016, PM2 was ranked as the 82nd most popular JavaScript project on GitHub.
    第 2 条附言  ·  333 天前
    之前用的是 node-windows 自启动,确实不稳定,最近 error 和下面 2020 年的 issue 一样

    https://github.com/Unitech/pm2/issues/4632

    最后 close 了也没有通用解决方法。
    第 3 条附言  ·  320 天前
    NSSM 比较旧了,最新方案:

    EasyService - 让程序以 Windows 系统服务的方式,无窗口运行 - 小众软件

    - https://www.appinn.com/easyservice-for-windows/
    8 条回复    2023-05-22 14:04:06 +08:00
    xmumiffy
        1
    xmumiffy  
       333 天前   ❤️ 1
    写个命令行直接放 shell:startup 下
    air00dd
        2
    air00dd  
    OP
       333 天前
    找到了一篇 2014 年的老文章:使用 nssm 在 windows 服务器上部署 nodejs

    https://keenwon.com/1289/
    air00dd
        3
    air00dd  
    OP
       333 天前
    air00dd
        4
    air00dd  
    OP
       333 天前
    这边也有一个

    Node.js 项目打包成 exe 并注册成 Windows 服务的 Demo

    https://github.com/Coande/nodejs-pkg-nsis-demo

    "为什么需要注册成服务?为了不显示命令行窗口且开机自启动。
    为什么需要把 js 项目打包成 exe 程序?自带 Node.js 运行环境,不需要再额外配置运行环境。
    为什么要把程序打包成安装包?为了方便把程序注册成服务,简化操作。"


    "node-windows 也可以注册服务,但是不稳定。遇到过运行后服务注册不成功,也没有任何错误输出的情况。利用 pkg 可以把 js 项目打包成自带 Node.js 运行环境的 exe 程序。"

    >利用 NSIS 可以把软件打包成安装包,可以自定义安装时的一系列动作。

    >添加服务,可以使用 Simple Service Plugin ,参看: https://nsis.sourceforge.io/NSIS_Simple_Service_Plugin

    >直接把普通程序注册成服务,是不能运行的:
    可以用 srvany.exe 来帮助我们的程序以服务方式运行。可以参考: https://www.cnblogs.com/codealone/p/3156943.html
    0xsui
        5
    0xsui  
       333 天前 via Android   ❤️ 1
    https://github.com/winsw/winsw
    clash 服务也用的这个服务启动,很好用
    netnr
        6
    netnr  
       333 天前   ❤️ 1
    执行命令 taskschd.msc 打开任务计划程序,新建一个开机任务,或用 SCHTASKS 命令来操作
    ixixi
        7
    ixixi  
       333 天前 via Android   ❤️ 1
    计划任务最简单,最容易调试,通过写 bat 命令启动
    qfdk
        8
    qfdk  
       333 天前 via iPhone
    曲线救国啊 扔到 docker 里面吧……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2476 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:42 · PVG 23:42 · LAX 08:42 · JFK 11:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.