Nestjs开发和部署

准备工作

打包工具

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开发和部署)