美文网首页
Nestjs开发和部署

Nestjs开发和部署

作者: oldlie | 来源:发表于2022-04-03 17:20 被阅读0次

    准备工作

    打包工具

    PKG可以将代码和node环境打包集成在一起,可以将node程序打包输出到不同的操作系统平台

    npm install -g pkg

    Nest相关工具

    # nest-cli 工具
    npm i -g @nestjs/cli
    
    # Typeorm和mysql
    npm install --save @nestjs/typeorm typeorm mysql2
    npm install reflect-metadata --save
    
    # 内存缓存
    npm install cache-manager 
    npm install -D @types/cache-manager
    
    # 远程调用
    npm i --save @nestjs/axios
    

    创建新项目

    # 创建新的nest项目
    nest new project-name
    
    # nest cli操作: nest g [type] name
    # 创建module
    nest g module module-name
    nest g co controller-name
    nest g s service-name
    

    数据库配置文件

    ormconfig.json

    {
        "type": "mysql",
        "host": "app.oldlie.cn",
        "port": 3306,
        "username": "oldlie",
        "password": "oldlie.com",
        "database": "test",
        "synchronize": true,
        "logging": false,
        "entities": ["dist/**/*.entity{.ts,.js}"]
    }
    

    代码完成之后可以用以下脚本进行编译打包

    #!/bin/bash
    
    #主版本号
    mv=`cat version | awk -F '.' '{print $1}'`
    #子版本号
    sv=`cat version | awk -F '.' '{print $2}'`
    #编译版本号
    cv=`cat version | awk -F '.' '{print $3}'`
    
    cv=`expr $cv + 1`
    version=$mv.$sv.$cv
    
    echo '************ build project ************'
    echo ''
    echo 'complie project version: mp-api.'$version
    echo 'clear target directory'
    rm -rf ./target/
    
    #编译
    npm run build
    
    filename='mp-api.'$version
    
    #打包
    pkg -o ./target/$filename ./dist/main.js
    
    #压缩
    zip ./target/$filename'.zip' ./target/$filename
    
    #将更新之后的版本号写入version文件
    echo $version > version
    
    ls -lh ./target
    
    

    部署

    将上一个脚本生成的zip包部署到应用服务器,利用以下脚本运行或者重启

    #!/bin/bash
    
    appid=`ps -ef | grep mp-api | grep -v "grep" | awk '{print $2}'`
    
    if [ $appid ];then
      echo 'Found mp-api process, stop pid:'$appid
      kill -15 $appid
      sleep 10s
      echo 'Stoped'
      echo 'Backup & clear log'
      logdate=`date +%y%m%d.%H%M`
      zip /www/wwwroot/js/$logdate.log.zip nohup.out
      echo '' > nohup.out
      echo 'clear taget files'
      rm -rf /www/wwwroot/js/target
      echo 'clear done'
    fi
    
    read -p 'Input version (ex:1.0.1):' version
    
    unzip '/www/wwwroot/js/mp-api.'$version'.zip'
    nohup /www/wwwroot/js/target/mp-api.$version & 1>/dev/null 2>error.log &
    
    ps -ef | grep mp-api | grep -v "grep"
    
    

    相关文章

      网友评论

          本文标题:Nestjs开发和部署

          本文链接:https://www.haomeiwen.com/subject/roifsrtx.html