카페24에서 클라우드 호스팅으로 우분투만 깔려 있는 상태에서 시작한다.
설치 전에는
sudo apt-get update
sudo apt-get upgrade 를 실행 해준다. 최신 상태로
sudo apt-get install vsftpd // ftp 설치
sudo apt-get install nginx // nginx 설치
sudo apt-get install -y nodejs // node 설치
sudo apt-get install npm // npm 설치
sudo apt-get install mysql-server // mysql 설치
sudo apt-get install git // git 설치
sudo npm i -g @nestjs/cli // 권한이 필요하니 sudo 넣는다
nest new project-name // 패키지매니저로 npm으로 선택
ls를 해보면 신규 프로젝트 폴더가 생긴것을 확인할 수 있다.
이렇게 작업할 수도 있지만, 서버에서 신규 프로젝트를 진행하기 보다
로컬에서 작업을 하고 github를 통해 소스를 올려서 git으로 서버에 클론하여 진행하는 것이 더 수월하다.
git clone 나의깃헙저장소주소
git clone이 끝나면 해당 프로젝트 폴더로 가서
npm install 을 실행함으로 라이브러리를 다운받는다.
서버에서 실행할 때 주의할 점은 소스를 다운 받아도
node > npm > nest 설치된 것을 확인 후
npm install 을 진행해야 한다는 점이다.
nest가 설치 안된 상태에서 진행하면 아래와 같은 오류를 보게 된다.
Error: Cannot find module 'webpack'
npm install --save @nestjs/swagger swagger-ui-express
main.ts
import { NestFactory } from '@nestjs/core';
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
const config = new DocumentBuilder()
.setTitle('Cats example')
.setDescription('The cats API description')
.setVersion('1.0')
.addTag('cats')
.build();
const document = SwaggerModule.createDocument(app, config);
SwaggerModule.setup('api', app, document);
await app.listen(3000);
}
bootstrap();
각 컨트롤러에 가서
@ApiTags로 섹터 구분해 주고
각 api 함수에
@ApiOperation으로 함수에 대한 summary와 설명을 달고
@ApiResponse에 대한 것을 넣어준다.
더 자세하게 @ApiCreatedResponse, @ApiOkResponse 등등 맞는 어노테이션을 달고 설명을 넣는다.
각 api 함수의 query, param에 해당하는
@ApiQuery, @ApiParam, 등등 달고 설명을 넣는다.
그리고 DTO나 entity처리에서도
@ApiProperty를 넣어서 변수에 대한 설명도 넣어준다.
responses:
'200':
description: OK
'400':
description: Bad request. User ID must be an integer and larger than 0.
'401':
description: Authorization information is missing or invalid.
'404':
description: A user with the specified ID was not found.
'5XX':
description: Unexpected error.
npm install -g pm2@latest // pm2설치
export NODE_ENV=production // 배포 모드로 설정
npm run build // 소스를 빌드함 >> dist/main.js생성
pm2 start dist/main.js --watch // pm2로 포크함. watch 옵션은 자동 restart 시켜줌.
pm2 사용법
$ pm2 start app.js // 시작하기
$ pm2 stop target // 중지
$ pm2 restart target // 재시작
$ pm2 logs target// 진행중인 로그
$ pm2 list // pm2로 돌아가는 리스트
$ pm2 kill // 죽이기
$ pm2 show target // 자세한 설명
참고::
https://docs.nestjs.com/openapi/introduction
https://jhyeok.com/nestjs-swagger/
https://popawaw.tistory.com/183
https://engineering.linecorp.com/ko/blog/pm2-nodejs/
https://ganzicoder.tistory.com/157