Nestjs开发和部署
2022-04-03 本文已影响0人
oldlie
准备工作
打包工具
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"