Node pm2如何做进程管理Nuxt项目

阅读:6189

1、Node环境搭建

关于node环境搭建请参考文章

安装之后通过命令node -v来检查node是否安装成功,通过命令npm -v来检查npm是否安装成功。

2、全局安装pm2

执行命令:

  1. npm i pm2 -g

3、初步了解pm2

pm2是nodeJS 进程守护工具,相似的工具还有forever等,当我们在服务器上开启一个命令提示符窗口时候,我们可以去启动我们的vue项目,但是当我们关闭提示符窗口时,进程也就随之结束了。所以我们需要一个工具来进行进程守护,在这里简单的写到几个pm2的命令:

pm2启动进程

  1. pm2 start app.js
  2. pm2 start app.py
  3. pm2 start npm -- start
  4. pm2 start [app-name]
  5. pm2 start all

pm2进程列表

  1. pm2 list

pm2重启进程

  1. pm2 restart [app-name]
  2. pm2 restart all

pm2停止进程

  1. pm2 stop [app-name]
  2. pm2 stop all

pm2的进程日志

  1. pm2 logs
  2. pm2 logs [app-name]

关于pm2的命令详细文档请 参考pm2官网

pm2启动nuxt项目

我们都知道,nuxt.js的项目启动命令,先执行npm run build,在执行npm run start,pm2也支持参数的传递,也有大神说pm2启动nuxt只需要执行pm2 start npm -- run start,到目前为止,表示项目没有这样启动成功过。

所以我们要知道package.json这个文件,当我们执行npm run dev的时候,其实使用npm去启动了./node_modules/nuxt/bin/nuxt这个文件。当我们cd到我们的项目目录之后,我们最终可以执行如下命令来启动:

  1. pm2 start ./node_modules/nuxt/bin/nuxt -- start

这里需要注意的是,后面的start参数是一定要传的,否则启动的是dev开发者模式。这样导致我们网站的加载速度非常慢,我们也可以修改./node_modules/nuxt/bin/nuxt文件(如下图),并通过pm2 logs来查看日志:

2018-12-05更新

后来我们通过官方文档发现可以直接通过pm2 start npm -- run srart来启动项目,如果需要启动多个npm项目并使用不同的名字,则可以通过pm2 start npm -- run start --name obj1(需要注意双横线之间的空格)。

1、 pm2 启动失败怎么办?

1、首先确认在你的项目目录下,能通过npm run ...正常启动你的项目,在切换到pm2中启动,如果出现失败,则可以通过pm2 log命令来查看在pm2的错误,通常情况下会是因为你的一些全局包加载不到而导致的错误,这是只需要安装你的全局包即可,在mac OS或者Linux系统下有可能需要加上管理员权限sudo pm2 start npm -- run xxx

2、 如何修改启动端口?

要知道pm2只是守护我们的进程,所以核心的启动不分依然是我们项目的自身结构,修改端口只需要修改package.json文件中的scripts选项即可,案例如下:

  1. "scripts": {
  2. "dev": "PORT=3336 nuxt",
  3. "build": "nuxt build",
  4. "start": "PORT=8802 nuxt start",
  5. "generate": "nuxt generate",
  6. "lint": "eslint --ext .js,.vue --ignore-path .gitignore .",
  7. "precommit": "npm run lint"
  8. }

我们也可以增加HOST的选项,例如配置"dev": "HOST=0.0.0.0 PORT=3336 nuxt",则可以直接通过本机ip+端口号在指定的网络中访问。

3、服务器上如何开机自动启动?

在服务器端,在项目都通过pm2启动成功之后,(可以通过命令pm2 ls进行查看)我们希望直接通过服务器重启之后能自动启动,可以通过pm2 save命令将当前的启动项保存起来,下次重启系统就可以自动启动了。

加载中...