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

yizhihongxing

当我们需要在服务器上部署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日

相关文章

  • Nodejs 搭建简单的Web服务器详解及实例

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。它使用高效、轻量级的事件驱动、非阻塞 I/O 模型和单线程。这使它成为一款非常适合搭建 Web 服务器和实现网络编程的工具。在这里,我们将详细展示如何使用 Node.js 来搭建一个简单的 Web 服务器。 搭建基本的 HTTP 服务器 使用 Node.js 搭建一个基本…

    node js 2023年6月8日
    00
  • Js中forEach修改原数组与sort排序经典场景详解

    Js中forEach修改原数组与sort排序经典场景详解 在Js开发中,forEach和sort是常用的数组方法。然而,在使用这两个方法的时候,有一些需要注意的事项。本文将重点讲解forEach和sort两个方法在修改原数组和排序时的经典场景。 1. forEach修改原数组 1.1 forEach函数原理 forEach是一种迭代数组元素的方法,可以通过回…

    node js 2023年6月8日
    00
  • TypeScript使用vscode监视代码编译的过程

    下面是详细的讲解: 1. 安装TypeScript和vscode 首先确保你已经安装了最新版本的Node.js和npm,可前往官网下载安装。安装完成后,进入命令行窗口,使用以下命令安装TypeScript: npm install -g typescript 安装完成后,我们需要安装vscode。可前往官网下载安装,或使用命令行工具安装: brew cask…

    node js 2023年6月9日
    00
  • npm install安装失败报错:The operation was rejected by your operating system

    当我们使用npm安装依赖时,可能会出现”npm install安装失败报错:The operation was rejected by your operating system”的错误提示。这个错误通常是因为电脑权限问题导致的,我们可以采取以下操作来解决此问题: 解决方式一:使用管理员权限运行命令行工具 有时候我们在安装依赖时,会因为权限不够而安装失败。可…

    node js 2023年6月8日
    00
  • node.js回调函数之阻塞调用与非阻塞调用

    当我们在node.js中执行一个耗时操作时,例如读取文件、请求网络数据等,会出现执行时间较长的情况,这会导致整个程序阻塞,影响程序的性能。为了解决这个问题,Node.js采用了回调函数的机制来实现非阻塞调用。 阻塞调用 阻塞调用是指应用程序在执行一个函数时,必须等待该函数执行完成,才能继续执行后面的代码。当我们在node.js中进行文件读取时,如果使用阻塞调…

    node js 2023年6月8日
    00
  • 又拍云 Node.js 实现文件上传、删除功能

    以下是“又拍云 Node.js 实现文件上传、删除功能”的完整攻略: 准备工作 首先,你需要拥有一个又拍云的账号,并开通相应的存储服务。然后,在本地电脑上安装Node.js,使用npm包管理器安装以下的依赖库: npm install upyun npm install formidable 其中,upyun是用于操作又拍云存储服务的SDK,formidab…

    node js 2023年6月8日
    00
  • BootStrap Jstree 树形菜单的增删改查的实现源码

    下面是 BootStrap Jstree 树形菜单的增删改查的实现源码的完整攻略。 前置知识 在学习本篇攻略之前,需要对以下知识有所了解: HTML、CSS、JavaScript 的基本语法和使用 jQuery 和 Bootstrap 框架的基本使用 jstree 树形菜单插件的基本使用 环境搭建 首先,需要在你的项目中引入以下依赖: <link re…

    node js 2023年6月8日
    00
  • javascript getElementsByClassName实现代码

    JavaScript的getElementsByClassName方法可以根据给定的类名获取页面中所有对应的元素。下面是基本的实现代码示例: const elements = document.getElementsByClassName(‘example-class’); 其中,example-class为所需获取元素的类名,elements为获取到的所有…

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