

基于Vue+Koa的pm2配置
source link: http://www.bugs.cc/2017/11/07/Koa-pm2-configuration/?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

目前使用的技术栈是:前端Vue、后端Koa、数据库Mongodb。
然而每当起服务的时候,都要 npm start
、 node ./server/app.js
,还要同时保持这两个窗口一直是开着的,很是麻烦。
而且因为我使用的是koa,也没有使用狼叔写的koa脚手架。是自己基于廖雪峰老师的 Koa框架 改的一个小型mvc。导致没有热更新。
为了简化这种没必要的操作及增加热更新,开始想怎么进行优化。于是选择了 pm2
配置pm2
先安装pm2: npm i pm2
、 npm i pm2 -g
因为是开源项目,为了让代码能再别人的电脑上跑起来,需要让pm2存在项目里。然后在全局安装,方便后期调试
再项目的根目录里创建logs目录
在当前的目录创建一个pm2.json的文件,内容如下:
{ "apps": [{ "name": "koler-server", "script": "./app.js", "error_file" : "../logs/server-err.log", "out_file" : "../logs/server-out.log", "merge_logs" : true, "log_date_format" : "YYYY-MM-DD HH:mm Z", "cwd": "./server", "watch": [ "app.js", "controllers" ], "watch_options": { "followSymlinks": false } },{ "name": "koler-app", "script": "./build/dev-server.js", "error_file" : "./logs/app-err.log", "out_file" : "./logs/app-out.log", "merge_logs" : true, "log_date_format" : "YYYY-MM-DD HH:mm Z", "cwd": "./", "ignore_watch" : [ "node_modules" ], "watch_options": { "followSymlinks": false } }] }
这里同时启动两个项目。
koler-server
是koa, koler-app
是前端vue。
我尝试了一下把
"error_file" : "./logs/app-err.log", "out_file" : "./logs/app-out.log", "merge_logs" : true, "log_date_format" : "YYYY-MM-DD HH:mm Z",
代码提升到json的根部,但是发现不起作用。看来pm2不支持这种。所以只能在每个服务里写了。
配置package.json
替换之前的 script
字段下的 dev
,然后再增加 stop
字段,替换后如下:
"scripts": { "dev": "pm2 start pm2.json && pm2 logs", "start": "npm run dev", "stop": "pm2 stop koler-app koler-server && pm2 delete koler-app koler-server", "build": "node build/build.js", "lint": "eslint --ext .js,.vue src" },
pm2 start pm2.json && pm2 logs
是基于pm2.json文件配置启动,后面的 pm2 logs
是为了同时跟踪vue和koa的反馈日志。
输入 npm start
后。终端如下:
那个错误是不用管的,因为我忘记清理之前的日志了
启动后,你的屏幕会出现一个cmd窗口,不用关,过一会它会自行关闭的。每次修改代码触发pm2配置文件里 watch
规则时,就会自动弹出一个cmd窗口,也是过一会关闭。
因为其他项目使用者可能会在电脑上跑多个pm2实例,所以在 stop
字段里,我跟上了名字。防止出现把所有的实例全部暂定删除了。
测试
现在我们更改代码发现没有任何问题,pm2会帮助我们自动进行热更新。现在我们故意改错一段vue的代码试试:
可以发现已经OK了。
这里说明一下为什么在pm2.json配置文件里的第二个实例 koler-app
没有watch,因为vue在开发环境下使用的是wenpack的watch,所以不需要加。
Author:Black-Hole
Email: [email protected]
Blog:http://bugs.cc
WeiBo: http://weibo.com/comelove
Twitter: https://twitter.com/Free_BlackHole
Recommend
-
197
两个多月的空余时间里,博客差不多搭完。 感谢surmon.me,此 blog 才会诞生。 感谢七牛云提供资源...
-
44
花了两个多月时间,我与 lazzzis 完成了第二版本的Putong OJ,因为中间忙着春招以及毕业设计等,项目最近才正式上线。 项目线上地址:acm.cjlu.edu.cn/ 项目前端地址:github.com/acm309/Puto… 项目后端地址:git
-
45
Vue+Koa+Mongodb 小练习 作者: Pawn 本文首发: Pawn博客 功能: 基于vue koa mongodb进行登录,注册,留言的简单网站。 体验地址: demo.lcylove.cn github: github.com/LiChangy
-
16
前言 pm2 是 node 进程管理工具,可以利用它来简化很多 node 应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,因为在工作中遇到服务器重启后,需要一个个去重新启动每个服务,这样不仅繁琐、效率低,而且容易遗忘开启一些服务,所以特地对 pm2 进行
-
7
pm2常见命令(1)发布于 今天 15:15 1.1 查看进程/应用的资源消耗情况pm2 monit阅读 23发布于 今天 15:15
-
11
pm2 + ts-node 的那些坑 发表于 2020-11-06 Ecosystem File 按照如下写法 const fs = require("fs");let interpreter;if (process.platform === "win32") { interpreter = "/.bin/ts...
-
12
-
11
新闻动态 COS 每周精选: PM2.5 的数据可视化 王威廉 / 冷静 / 蔡占锐 / 王小宁 编辑:王小宁...
-
3
1,修改package.json{ "name": "ii222", "version": "1.0.0", "private": true, "scripts": { "dev": "nuxt", "build": "nuxt build", "start": "nuxt build && nuxt start", "generate": "nuxt generate" }, //...
-
1
Vue+Koa+MongoDB从零打造一个任务管理系统 大概是在18年...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK