使用upstart把nodejs应用封装为系统服务实例

yizhihongxing

要把一个Node.js应用程序封装为系统服务,可以使用 upstart 工具。 upstart 是 Ubuntu 的默认系统初始化工具之一,负责自动启动、停止和管理系统服务。upstart 将一个应用程序实例化为一个守护进程(也叫做服务),它会自动执行并运行在后台。

下面是使用upstart把nodejs应用封装为系统服务的攻略:

步骤1 - 编写Nodejs应用程序

首先需要编写一个Node.js应用程序。在本例中,我们将使用一个简单的 HTTP 程序作为例子。我们把应用程序保存在 /opt/nodeapp/app.js 和 /opt/nodeapp/package.json 文件里。

/**
 * app.js
 */

var http = require('http');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(8000, 'localhost');

console.log('Server running at http://localhost:8000/');

{
  "name": "nodeapp",
  "version": "0.0.1",
  "dependencies": {
    "http": "^0.10.0"
  }
}

上面的应用程序创建了一个 HTTP 服务,监听 localhost:8000 端口。每当有请求到达时,就会向客户端发送响应 "Hello World"。

步骤2 - 创建upstart脚本

接下来,需要编写一个upstart脚本,以便 Upstart 启动、停止、重启或查看 Node.js 应用程序。在 Ubuntu 中,upstart 脚本存储在 /etc/init 目录中。我们把应用程序的 upstart 脚本存储在 /etc/init/nodeapp.conf 文件中。

# nodeapp - upstart script for a Node.js application

description "Node.js application"

start on started mountall
stop on shutdown

respawn

chdir /opt/nodeapp

exec /usr/bin/node app.js >> /var/log/nodeapp.log 2>&1

上述 upstart 脚本的含义如下:

  • description:Upstart 脚本的描述信息;
  • start on:表示启动时机,此处表示要在系统挂载所有文件系统后启动 Node.js 应用程序;
  • stop on:表示停止条件,此处表示系统关机时停止 Node.js 应用程序;
  • respawn:表示应用程序异常终止后会自动重启;
  • chdir:表示进程运行的目录;
  • exec:表示要运行的命令,这里是通过 node 命令启动应用程序,同时将输出日志重定向到 /var/log/nodeapp.log 文件中。

步骤3 - 启动Nodejs应用程序

现在,可以启动 Node.js 应用程序了。首先通过 upstart 启动 Node.js 应用程序。由于 upstart 脚本是以系统服务的形式运行,因此会在系统启动时自动启动 Node.js 应用程序。下面是相应的命令:

sudo service nodeapp start

可以使用以下命令查看 Node.js 应用程序的状态:

sudo status nodeapp

输出应该类似于这样:

● nodeapp.service - Node.js application
   Loaded: loaded (/etc/systemd/system/nodeapp.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2021-04-10 01:05:42 UTC; 7min ago
 Main PID: 2912 (node)
   CGroup: /system.slice/nodeapp.service
           └─2912 /usr/bin/node /opt/nodeapp/app.js

Apr 10 01:05:42 ubuntu2004 systemd[1]: Started Node.js application.
Apr 10 01:05:43 ubuntu2004 node[2912]: Server running at http://localhost:8000/

现在 Node.js 应用程序已经在后台运行了。

步骤4 - 停止Nodejs应用程序

停止 Node.js 应用程序很简单。只需要运行下面的命令:

sudo service nodeapp stop

应用程序将从后台进程中终止。可以通过以下命令检查后台进程是否已停止运行:

pgrep node

这个命令应该不会返回任何值,或者只返回 init 进程的 pid。

以上就是使用upstart把nodejs应用封装为系统服务实例的完整攻略,你可以根据上述步骤尝试自己的应用程序。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用upstart把nodejs应用封装为系统服务实例 - Python技术站

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

相关文章

  • 简单了解node npm cnpm的具体使用方法

    Node.js是一个开源、跨平台的JavaScript运行环境。它可以在服务器端运行JavaScript代码,而不仅仅是在浏览器端。NPM全称Node Package Manager,是Node.js的包管理器。CNPM则是淘宝镜像的NPM镜像,它提供了更快的下载速度,特别是在中国大陆地区非常受欢迎。 Node.js的安装 首先,我们需要下载和安装Node.…

    node js 2023年6月8日
    00
  • Node 升级到最新稳定版的方法分享

    Node 升级到最新稳定版的方法分享 在使用 Node 进行开发时,时常需要升级 Node 版本以获取更好的性能和更多的功能。本文将分享如何升级 Node 到最新稳定版的方法,以及两个实例说明。 方法一:使用 Node Version Manager (NVM) Node Version Manager(NVM)是一个非常流行的 Node 版本管理工具,可以…

    node js 2023年6月8日
    00
  • 最全的package.json解析

    当我们使用Node.js的时候,我们通常都会使用一个名为package.json的文件,它记录了我们项目中所依赖的各个包的版本、开发时需要的工具、作者等信息。本文将详细解析package.json的各个属性以及如何使用这些属性来管理自己的项目。 package.json文件的基本概念 package.json文件是一个符合JSON规范的文件,包含了这个项目的…

    node js 2023年6月8日
    00
  • 使用Make构建Node.js网站项目

    下面我将详细讲解使用 Make 构建 Node.js 网站项目的完整攻略。在整个过程中,我们将涉及到Node.js、Makefile、npm等工具和语言。你需要基本理解这些工具和语言的使用方式。 本攻略可以在 macOS 和 Linux 系统上运行。 环境准备 首先,你需要确保本地已经安装了以下软件: Node.js:v10 或以上版本(可通过 node -…

    node js 2023年6月8日
    00
  • Nodejs实现多文件夹文件同步

    当我们需要将一个文件夹中的文件同步到另外一个文件夹中时,我们通常使用复制操作。但是当需要将多个文件夹中的文件同步到另外一个文件夹中时,复制操作的工作量显然就会变得非常大。在这种情况下,使用Nodejs来实现多文件夹文件同步,就会变得非常方便。 下面是实现多文件夹文件同步的完整攻略: 步骤1: 导入fs模块和path模块,用来文件操作和路径解析。 const …

    node js 2023年6月8日
    00
  • NodeJs+MySQL实现注册登录功能

    总体架构 NodeJs是一种基于事件驱动、非阻塞I/O模型的JavaScript后端运行环境,它提供了众多的系统模块和第三方模块,以及一个强大的包管理工具npm。MySQL是一种流行的关系型数据库管理系统,提供了完善的数据库设计和管理工具,以及一套丰富的SQL语言和API。 注册登录功能的实现,主要涉及以下几个环节: 用户信息的采集和存储; 用户名和密码的加…

    node js 2023年6月8日
    00
  • node故障定位顶级技巧动态追踪Dynamic Trace详解

    Node故障定位顶级技巧:动态追踪Dynamic Trace详解 在 Node.js 应用程序开发过程中,故障定位是一个非常重要的环节。Dynamic Trace是一种高效的故障定位工具,它可以在运行时动态地捕获应用程序执行中的状态信息,并打印出一份详细的调试报告。本文将详细讲解如何使用 Dynamic Trace 进行 Node.js 应用程序的故障定位。…

    node js 2023年6月8日
    00
  • Node.js使用express写接口的具体代码

    下面是关于使用Node.js和express框架编写接口的具体攻略。我们将通过两条示例来演示如何以正确的方式编写和使用这些代码。 准备工作 在开始编写代码之前,您需要确保您已经完成了以下准备工作: 已经安装了Node.js及其包管理器npm 通过npm安装了express框架 您可以通过以下命令来检查是否已安装Node.js和npm: $ node -v $…

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