使用 PM2 在 Ubuntu 18.04 上自动化部署 Node 应用程序

简介

Node.js 已经成为现代 Web 开发的常用工具之一。使用 Node.js 能够开发出高效、响应快速的 Web 应用程序。但是,为了让 Node.js 应用程序稳定和安全地运行,需要使用一个进程管理器,如 PM2。本文介绍了在 Ubuntu 18.04 上使用 PM2 自动化部署 Node.js 应用程序的方法。

安装 Node.js 和 NPM

在开始使用 PM2 之前,需要先安装 Node.js 和 NPM。

通过以下命令安装 Node.js:

---- --- ------
---- --- ------- ------

安装完成后,可以通过以下命令验证是否安装成功:

------ ---------

接着,使用以下命令安装 NPM:

---- --- ------- ---

安装完成后,可以通过以下命令验证是否安装成功:

--- ---------

安装 PM2

使用以下命令安装 PM2:

---- --- ------- -- ---

安装完成后,可以通过以下命令验证是否安装成功:

--- ---------

配置 PM2

启动应用程序

使用以下命令启动应用程序:

--- ----- ------

这表示启动位于当前目录下的 app.js 应用程序。PM2 启动应用程序时会为其分配一个进程 ID。通过以下命令查看所有正在运行的应用程序:

--- ----

自动重启

在实际应用中,应用程序可能会因为各种原因崩溃。为了保证应用程序的可靠性,可以使用 recluster 模块在发生崩溃时重启应用程序。

使用以下命令启动应用程序并启用自动重启:

--- ----- ------ ------ ------ -------

此处的 --name 参数用于指定应用程序的名称,--watch 参数用于监视应用程序的文件,并在代码修改后自动重启应用程序。

配置日志记录

PM2 也提供了记录应用程序日志的功能。

使用以下命令启动应用程序并记录日志:

--- ----- ------ ------ ------ ------- ----- ----------

此处的 --log 参数用于指定要记录的日志文件名。

使用 PM2 部署应用程序

PM2 还可以帮助自动化部署应用程序。

首先,在部署环境中将应用程序的文件上传到一个目录,并使用以下命令禁用自动重启:

--- ----- ------ ------ ------ ------- ----------------------------- ----------------

注意,在启动应用程序时,使用了 --ignore-watch="node_modules" 参数忽略了 node_modules 目录。

接着,使用以下命令安装应用程序的依赖库:

--- -------

安装完成后,使用以下命令重新启动应用程序:

--- ------- ------

总结

PM2 是一个功能强大的 Node.js 进程管理器,能够提高应用程序的稳定性和安全性。本文介绍了在 Ubuntu 18.04 上使用 PM2 自动化部署 Node.js 应用程序的方法。通过学习,你可以更好地理解 PM2 的使用方法,提升自己的 Node.js 技能。

示例代码

-- ------
----- ---- - ----------------

----- -------- - ------------
----- ---- - -----

----------------------- ---- -- -
  -------------- - ----
  ----------------------------- --------------
  -------------- ----------
--------------- --------- -- -- -
  ------------------- ------- -- ------------------------------
---

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/65477c997d4982a6eb1d89e3


猜你喜欢

  • 如何在 normalize.css 中覆盖默认输入框样式

    normalize.css 是一个非常好用的开源 CSS 样式库,它能够处理浏览器之间的样式差异,使网页在不同的浏览器中呈现相同的样式。然而,有些时候我们需要覆盖 normalize.css 默认的样...

    1 年前
  • 如何正确地实现一个复杂的 Promise 队列

    前言 在前端开发中,Promise 队列是实现异步流程控制的关键工具之一。尤其是在解决多个异步任务执行时,它可以轻松地完成代码的逻辑控制和执行顺序的管理。然而,对于大规模、复杂的异步任务,常常需要对 ...

    1 年前
  • Serverless 环境下如何应对海量并发请求

    随着云计算和 Serverless 的发展,越来越多的企业和团队选择使用 Serverless 架构来开发和部署应用。相比传统的架构,Serverless 更加便捷,能够自动扩缩容,还能大幅节省成本。

    1 年前
  • Redux 数据持久化实现方式对比

    随着前端应用越来越复杂, 数据的持久化需求也越来越突出。对于 Redux 作为状态管理库而言,数据持久化能力也成为了必不可少的一部分。本文将介绍常见的几种 Redux 数据持久化实现方式,并进行对比分...

    1 年前
  • 使用 Express.js 开发前端和后端分离的单页应用

    在现代 Web 开发中,随着前端技术的飞速发展,越来越多的应用程序采用了前端和后端分离的架构。采用此种架构的一个主要好处就是,能够更好的适应不同的操作系统和设备。但同时,也对后端开发的要求提高了,需要...

    1 年前
  • 如何解决 Koa 中 bodyParser 的问题?

    在前端开发中,Koa 是一个非常流行的 Node.js 框架。然而,在使用 Koa 进行开发的过程中,我们可能会遇到一些问题。其中之一就是 bodyParser 的问题。

    1 年前
  • ES11 中 import.meta 的使用方法

    在ES11的新功能中,import.meta是一个非常实用的对象,它可以用来访问导入的模块元数据。在中大型项目中,使用import.meta可以轻松简便地个性化管理导入的模块,从而提高代码的效率和可维...

    1 年前
  • Enzyme 测试 React 组件中状态(state)和属性(props)的最佳实践

    Enzyme 测试 React 组件中状态(state)和属性(props)的最佳实践 React 是一种用于构建用户界面的开源 JavaScript 库。它具有优雅简洁的代码和强大的性能。

    1 年前
  • GraphQL Mutation 中如何处理错误

    GraphQL 是一种用于 API 的查询语言和运行时环境,它提供了一种更加灵活、高效、强类型的方式来定义和访问数据。在 GraphQL 中,Mutation 是一种用于对数据进行修改的操作,它类似于...

    1 年前
  • Kubernetes 中的服务发现技术

    Kubernetes 作为一款强大的容器编排工具,除了可以自动部署和管理容器外,还提供了丰富的服务发现机制,使得前端开发者能够更加轻松地管理复杂的应用程序和服务架构。

    1 年前
  • Cypress 如何处理异步请求

    Cypress 是一个使用 JavaScript 编写的端到端测试框架,它可以通过自动化测试的方式帮助开发者保证前端应用的质量和正确性。在测试过程中,常常需要处理异步请求,本文将介绍如何在 Cypre...

    1 年前
  • RxJS 实例教程:动态搜索用户输入

    RxJS (Reactive Extensions for JavaScript) 是一个强大的响应式编程库,可以提高 JavaScript 应用程序的表现和可维护性。

    1 年前
  • 在 Chai 测试中使用 sinon.mock() 进行 API 调用

    前言 在前端开发中,测试是非常重要的一个环节,我们需要保证我们的代码能够正确地执行,并且能够满足我们的需求。这时候,一个好的测试框架就显得非常重要了。 Chai 是一个流行的 JavaScript 测...

    1 年前
  • ES7 中的 async/await 关键字使用详解

    在 JavaScript 的 ES7 新版本中,新增了 async/await 关键字,用于简化基于 Promise 的异步编程。这一新特性极大地提高了 JavaScript 的可读性和可维护性,让并...

    1 年前
  • SASS 中使用 @function 编写常见颜色转换

    SASS 中使用 @function 编写常见颜色转换 SASS 是一种 CSS 预处理器语言,它增强了 CSS 并使其更加易于开发和维护。在 SASS 中,@function 是一项非常有用的特性,...

    1 年前
  • AngularJS:如何在 $scope 中解决 undefind 问题?

    在 AngularJS 中,$scope 是非常重要的一个概念,它充当了 View 和 Controller 之间的连接器。使用 $scope 可以很容易地将模型数据传递到 View 中进行展示。

    1 年前
  • 详解 ES10 的 promise,解决异步编程的困难

    在前端开发过程中,异步编程是很常见的情况。在早期,我们用回调函数来解决异步问题。随着业务需求不断增加,回调函数的嵌套越来越多,形成了所谓的“回调地狱”。为了解决“回调地狱”问题,Promise 应运而...

    1 年前
  • 解决方案:PWA 应用在离线缓存更新时出现跨域问题

    背景介绍 PWA(Progressive Web Apps,渐进式网页应用)是一种优化 Web 应用的方式,它可以使网页应用拥有更加流畅的交互体验,类似于原生应用,同时不需要安装。

    1 年前
  • WebPack 打包 React 的项目

    React 是一款由 Facebook 开发的前端 JavaScript 框架,它极大地简化了构建复杂应用程序的过程。然而,React 应用程序通常需要进行打包以便于部署,而 WebPack 是一款非...

    1 年前
  • 在 Mocha 中使用 Faker.js 进行测试数据生成

    在前端开发中,我们需要经常进行单元测试来确保代码的正确性和可靠性。为了使单元测试更加高效和准确,我们需要使用测试数据。而手动编写测试数据往往非常耗时且容易出错。这时,Faker.js 就是一个很好的工...

    1 年前

相关推荐

    暂无文章