在本地环境上用pm2跑koa+ts项目

最近在用node和ts来写前后端分离的项目,云服务器到期且并没有续费的打算,所以打算在本地环境捣鼓。网上的教程大多都是指导如何在云服务器上部署koa并用pm2守护进程。自己依葫芦画瓢在本地整了一套,故记录一下。

一、简单介绍PM2

开始之前先了解一下什么是pm2,这次认认真真逐字逐句的读了下概念,之前大致知道这是一个管理node进程的工具,把它笼统的归类于与phpstydy、nginx类似的工具,但是其实并不完全一致。

pm2一般来说是用于我们的生产环境,也就是云服务器上的node进程管理工具(废话),它不仅能进行进程守护,同时也支持性能监控、负载均衡等的功能,并且还可以使用命令来取查看我们node进程的状态,小白友好上手简单。我之前错误的认为它和phpstydy、nginx类似,更贴切的来讲,它其实更像是Linux的进程管理工具Supervisor或者Forever。

二、我用它来解决什么问题?

很简单,我主要是用来解决本地开发的时候,不用每次得用命令行工具cd到项目目录用命令去启动接口服务,我需要项目接口在我需要的时候一直运行着,且不会因为误触命令行工具关闭按钮时而挂掉服务。
同理,云服务器其实就可以看成一部虚拟的计算机,在服务器上用pm2,其实也是解决的一样的问题。

三、pm2的特性

  • pm2在后台运行。例如node app.js这样的命令,是需要一直在前台运行,容易因为代码错误或者是命令行工具的问题导致中断,不稳定。pm2在后台运行,也支持将错误用log文件输出的方式记录。
  • 0 秒停机重载。它能立即重新启动应用的所有进程并在重新加载代码后将请求,路由到新的进程,这意味着在应用维护升级的时候是不需要停机的,node服务不会中断,但这种处理方式不可避免的会造成一些请求失败和丢失。
  • 内建负载均衡。使用node cluster集群模块,可以自由的设置每次启动的进程的个数,如果设置为0,意味着它会根据服务器CPU的使用情况来灵活的设置进程的数量。
  • 停止不稳定的进程。可以避免死循环。
  • 控制台监测。可以在控制台实时监测运行情况。
  • 多平台支持。支持各大主流平台如Linux、MacOs、Windows等

四、安装和使用

  • 安装

    # 全局安装
    npm install -g pm2
    
  • 启动项目

    # 1、首先cd到项目的根目录下,也就是项目入口文件同级的目录下
    # 2、执行指定应用 pm2 start [配置文件/入口文件] --name [项目名字]
    pm2 start app.ts --name web_blog
    
  • 常用命令

    # 查看当前进程
    pm2 ls
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较具体的问题,我尽量给出详细的回答。 首先,你需要了解每个工具的作用: - Node.js: 一个基于 Chrome V8 引擎的 JavaScript 运行时,可用于构建高性能的网络应用程序。 - Midway.js: 一个基于 Egg.js 的 Serverless Node.js 框架,提供了函数计算、API 网关等 Serverless 场景下的解决方案。 - Koa: 一个基于 Node.js 平台的 Web 开发框架,旨在提供更小、更富有表现力、更健壮的 Web 应用程序。 - TypeScript: 是 JavaScript 的一个超集,可以编译成纯 JavaScript。 接下来,你可以按照以下步骤进行开发: 1. 创建一个基于 Midway.js 的应用程序: ``` $ npm init midwayjs-app jsapi ``` 2. 安装需要的依赖: ``` $ cd jsapi $ npm install koa koa-bodyparser koa-router cross-env --save $ npm install @midwayjs/koa @midwayjs/faas @midwayjs/socketio --save $ npm install typescript ts-node @types/node --save-dev ``` 3. 创建 TypeScript 配置文件 `tsconfig.json`: ``` { "extends": "@midwayjs/tsconfig/tsconfig.json", "compilerOptions": { "outDir": "dist", "rootDir": "src" }, "include": ["src"] } ``` 4. 创建一个简单的 TypeScript 控制器: ``` import { Provide, Controller, Get, Post, Body } from '@midwayjs/decorator'; import { Context } from 'koa'; @Provide() @Controller('/api') export class ApiController { @Get('/hello') async hello(ctx: Context) { ctx.body = 'Hello Midwayjs'; } @Post('/share') async share(@Body() body) { const { url } = body; // 解析分享链接 // ... // 返回解析结果 return { title, desc }; } } ``` 5. 创建 Koa 应用程序: ``` import { App, Config, Inject } from '@midwayjs/decorator'; import { ILifeCycle, IMidwayApplication } from '@midwayjs/core'; import { Application } from 'egg'; import * as bodyParser from 'koa-bodyparser'; import * as Router from 'koa-router'; @Config() export class AppConfig implements ILifeCycle { @Inject() app: IMidwayApplication; async onReady() { const app = this.app.getApplication() as Application; // 添加中间件 app.use(bodyParser()); app.use(app.get('koaRouter').routes()); // 启动应用程序 app.listen(3000, () => { console.log('Server listening on http://localhost:3000'); }); } } @App() export class ApiApplication implements ILifeCycle { @Inject() app: IMidwayApplication; async onReady() { const router = this.app.getApplicationContext().get('koaRouter') as Router; router.get('/api/hello', async (ctx) => { ctx.body = 'Hello Koa'; }); } } ``` 6. 启动应用程序: ``` $ npm run dev ``` 7. 使用 curl 或者 Postman 等工具测试 API: ``` $ curl -X GET http://localhost:3000/api/hello ``` ``` $ curl -X POST http://localhost:3000/api/share -d '{"url": "http://example.com"}' ``` 这样,一个基于 Node.js、Midway.js、Koa、TypeScript 的 API 解析程序就完成了。当然,这只是一个简单的示例,你可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值