node.js开机自启动脚本文件

当我们需要在服务器上部署Node.js程序时,经常需要在服务器开机时自动运行我们的程序,这时候就需要创建一个开机自启动的脚本文件。下面是创建node.js开机自启动脚本文件的完整攻略:

1. 创建脚本文件

我们可以在Linux系统中执行以下命令在指定路径下创建一个脚本文件,在执行该脚本时系统会自动运行Node.js程序:

sudo touch /etc/init.d/<your-script-name>
sudo chmod +x /etc/init.d/<your-script-name>

其中,<your-script-name> 为脚本文件的名称,可以根据实际情况自行定义。

2. 编写脚本代码

打开创建的脚本文件,在其中编写启动Node.js程序的代码。例如,下面是一个简单的示例,用于启动一个Node.js服务器:

#!/bin/bash

#定义NODE_HOME环境变量
export NODE_HOME=<node.js安装路径>

#定义node程序名称
export NODE_FILE=<node.js程序文件路径>

#定义node程序名称
export NODE_APP=<node.js应用程序文件路径>

case $1 in
start)
    echo "Starting <your-script-name> ..."
    cd $NODE_APP
    #使用node启动程序
    nohup $NODE_HOME/bin/node $NODE_FILE &
    ;;
stop)
    echo "Stopping <your-script-name> ..."
    #查找node进程的PID,并kill它
    pid=$(ps aux | grep $NODE_APP/$NODE_FILE | grep -v grep | awk '{print $2}')
    kill $pid
    ;;
restart)
    echo "Restarting <your-script-name> ..."
    $0 stop
    sleep 1s
    $0 start
    ;;
*)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
esac

exit 0

3. 添加服务至系统服务列表

将脚本文件加入系统服务列表中,输入以下命令:

sudo update-rc.d <your-script-name> defaults

至此,已经成功将脚本添加至系统服务,系统会在开机时自动调用该脚本文件。

示例1

需求

在开机时自动启动Node.js应用程序,端口为8000,程序文件在/home/ubuntu/app/index.js

创建脚本

执行以下命令创建一个名为auto_start_app的脚本文件:

sudo touch /etc/init.d/auto_start_app
sudo chmod +x /etc/init.d/auto_start_app

编写脚本

打开auto_start_app脚本文件,粘贴以下代码:

#!/bin/bash

#定义node.js安装路径
export NODE_HOME=/usr/local/nodejs

#定义node.js应用程序路径
export NODE_APP=/home/ubuntu/app

case $1 in
start)
    echo "Starting application ..."
    cd $NODE_APP
    nohup $NODE_HOME/bin/node index.js >/dev/null 2>&1 &
    ;;
stop)
    echo "Stopping application ..."
    pid=$(ps aux | grep $NODE_APP/index.js | grep -v grep | awk '{print $2}')
    kill $pid
    ;;
restart)
    echo "Restarting application ..."
    $0 stop
    sleep 1s
    $0 start
    ;;
*)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
esac

exit 0

将脚本加入系统服务列表

sudo update-rc.d auto_start_app defaults

至此,该Node.js应用程序将会在开机时自动启动。

示例2

需求

在开机时自动启动一个实时聊天的Node.js程序,端口为3000,程序文件在/home/ubuntu/chat/index.js

创建脚本

执行以下命令创建一个名为auto_start_chat的脚本文件:

sudo touch /etc/init.d/auto_start_chat
sudo chmod +x /etc/init.d/auto_start_chat

编写脚本

打开auto_start_chat脚本文件,粘贴以下代码:

#!/bin/bash

#定义node.js安装路径
export NODE_HOME=/usr/local/nodejs

#定义node.js应用程序路径
export NODE_APP=/home/ubuntu/chat

case $1 in
start)
    echo "Starting chat server ..."
    cd $NODE_APP
    nohup $NODE_HOME/bin/node index.js >/dev/null 2>&1 &
    ;;
stop)
    echo "Stopping chat server ..."
    pid=$(ps aux | grep $NODE_APP/index.js | grep -v grep | awk '{print $2}')
    kill $pid
    ;;
restart)
    echo "Restarting chat server ..."
    $0 stop
    sleep 1s
    $0 start
    ;;
*)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
esac

exit 0

将脚本加入系统服务列表

sudo update-rc.d auto_start_chat defaults

至此,该实时聊天程序将会在开机时自动启动,在开发实时应用中十分方便。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:node.js开机自启动脚本文件 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • 我的Node.js学习之路(四)–单元测试

    下面是我的Node.js学习之路(四)–单元测试的完整攻略: 1. 什么是单元测试? 单元测试是针对软件系统中的最小可测试单元进行验证和检验的过程。在Node.js中,单元通常是指一个函数、一个方法或者一个模块。 单元测试的目的是在代码实现之前或者之后,尽早地发现代码中的问题,使得我们能够及早地进行修改和优化。通过单元测试,我们可以确保代码在各种情况下都能…

    node js 2023年6月8日
    00
  • 详解在不使用ssr的情况下解决Vue单页面SEO问题

    下面是”详解在不使用ssr的情况下解决Vue单页面SEO问题”的完整攻略。 为什么需要在不使用ssr的情况下解决Vue单页面SEO问题 Vue单页面应用(SPA)在开发过程中非常方便,但是它并不适用于搜索引擎优化(SEO)。因为SPA是运行在浏览器中的,它在服务器端只返回一个HTML文件,而网页内容都是通过ajax动态加载的。这种方式使得搜索引擎很难获取到页…

    node js 2023年6月8日
    00
  • node.js学习之交互式解释器REPL详解

    Node.js学习之交互式解释器REPL详解 什么是REPL? REPL全称是Read-Eval-Print Loop,是一种基于命令行界面(CLI)的交互式编程语言解释器。 在REPL模式下,用户可以直接输入命令并立即查看结果。相比于传统的编程语言,REPL的特点是实时性,用户无需编写整个程序并保存才能查看结果,可以一次一次地测试、调试代码。 如何进入No…

    node js 2023年6月8日
    00
  • JavaScript的ExtJS框架中数面板TreePanel的使用实例解析

    JavaScript的ExtJS框架中数面板TreePanel的使用实例解析 一、什么是TreePanel Tree Panel 是 ExtJS 中常用的一种 UI组件,它能够以树形结构的方式展示数据,并提供了一些便捷的交互方式来操作数据。我们经常在左侧菜单栏中看到这种组件。 二、TreePanel的基本配置 root:树的根节点。 store:数据仓库,存…

    node js 2023年6月8日
    00
  • Node.js本地文件操作之文件拷贝与目录遍历的方法

    Node.js本地文件操作之文件拷贝与目录遍历的方法 在Node.js中,文件操作是常见的任务之一。在这篇文章中,我们将讨论如何拷贝文件和遍历目录。 拷贝文件 拷贝文件的方法可以使用fs模块中的createReadStream和createWriteStream方法。首先,我们需要使用createReadStream方法来读取源文件,然后使用createWr…

    node js 2023年6月8日
    00
  • javascript实现des解密加密全过程

    JavaScript实现DES解密加密的过程如下: 安装依赖 使用JavaScript实现DES解密加密需要安装crypto-js库,可以使用npm或yarn命令行安装: npm install crypto-js 或者 yarn add crypto-js 导入模块 在JavaScript文件中导入crypto-js模块: const CryptoJS =…

    node js 2023年6月8日
    00
  • JavaScript命令模式原理与用法实例详解

    JavaScript命令模式原理与用法实例详解 JavaScript命令模式(Command Pattern)是一种基于面向对象编程中的行为型模式。该模式将请求封装成一个对象,以便于对请求的参数化、延迟执行(如将一个请求排队或者记录请求日志)以及支持可撤销操作等功能。 命令模式原理 命令模式的核心是通过一个命令对象包装所有的请求细节,以达到解耦调用者与接收者…

    node js 2023年6月8日
    00
  • Vue页面渲染中key的应用实例教程

    下面是关于“Vue页面渲染中key的应用实例教程”的完整攻略: 什么是key key是一个特殊的属性,用于协助Vue区分每个节点的身份,以便在不同的渲染情况下识别其应有的状态。在Vue中,key主要用于优化虚拟DOM的渲染效率。 常见应用场景 列表渲染 在Vue中,当使用v-for指令进行列表渲染时,每个元素都需要指定一个唯一的key,以便Vue能够正确地追…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部