NestJS プロジェクトを作成して実行する
NestJSとは?
NestJSは、効率的で拡張性の高いNode.jsサーバーサイドアプリケーションを構築するためのフレームワークです。TypeScriptで記述されており、Angularからインスピレーションを受けて、モジュール化アーキテクチャと依存性注入(DI)パターンを採用しています。NestJSは強力なツールと機能を提供し、開発者が複雑なアプリケーションを容易に構築できるようにします。
NestJSの主な特徴と利点
- モジュール化アーキテクチャ:コードをモジュールで組織化し、アプリケーションをより構造化し、保守しやすくします。
- 依存性注入:強力な依存性注入システムを提供し、コードのテスト性と保守性を向上させます。
- TypeScriptの使用:TypeScriptの静的型チェックと最新のJavaScript機能を活用し、開発効率とコード品質を向上させます。
- 豊富なデコレータ:デコレータを使用してコントローラ、サービス、モジュールなどを定義し、コードをより簡潔で直感的にします。
- 強力なエコシステム:NestJSは豊富なサードパーティモジュールとプラグインをサポートし、開発をより便利にします。
NestJSを使用すると、開発者は高性能なWebアプリケーションやAPIを迅速に構築することができます。
ServBayを使用してNestJSプロジェクトを作成して実行する
この記事では、ServBayが提供するNode.js環境を使用してNestJSプロジェクトを作成して実行します。ServBayの『ホスト』機能を使用してWebサーバーを設定し、リバースプロキシを介してプロジェクトにアクセスします。
NestJSプロジェクトを作成する
プロジェクトを初期化する
まず、ServBayが提供するNode.js環境をインストールしていることを確認します。次に、以下のコマンドを使用してNestJS CLIをグローバルにインストールします:
bashnpm install -g @nestjs/cli
1ServBay推奨のウェブサイトルートディレクトリ
/Applications/ServBay/www
に新しいNestJSプロジェクトを作成します:bashcd /Applications/ServBay/www nest new servbay-nest-app
1
2プロンプトに従ってプロジェクト名(推奨:
servbay-nest-app
)を入力し、他のオプションを必要に応じて選択します。依存関係をインストールする
プロジェクトディレクトリに移動し、依存関係をインストールします:
bashcd servbay-nest-app npm install
1
2
NestJSプロジェクトの出力内容を変更する
src/app.controller.ts
ファイルを変更するsrc/app.controller.ts
ファイルを開き、ウェブページが "Hello ServBay!" を出力するように内容を変更します:typescriptimport { Controller, Get } from '@nestjs/common'; @Controller() export class AppController { @Get() getHello(): string { return 'Hello ServBay!'; } }
1
2
3
4
5
6
7
8
9
開発モードに切り替える
開発サーバーを実行する
開発サーバーを起動し、ポートを指定します(例:8585):
bashPORT=8585 npm run start
1これにより、ローカルで開発サーバーが起動され、ポート8585が公開されます。
ServBayホストリバースプロキシを設定する
ServBayの『ホスト』機能を使用して、開発サーバーにアクセスするためにリバースプロキシを設定します。ServBayの『ホスト』設定で、新しいリバースプロキシを追加します:
- 名前:
My first NestJS dev site
- ドメイン:
servbay-nest-test.dev
- ホストタイプ:
リバースプロキシ
- IP:
127.0.0.1
- ポート:
8585
詳細な設定手順については、Nodejs開発用のウェブサイトの追加を参照してください。
- 名前:
開発モードにアクセスする
ブラウザを開き、
https://servbay-nest-test.dev
にアクセスしてプロジェクトをリアルタイムで確認します。ServBayはカスタムドメインと無料のSSL証明書をサポートしているため、より高いセキュリティを享受できます。
本番バージョンのデプロイ
本番環境を準備する
プロジェクトが本番環境で正常に実行できることを確認します。一般的に、NestJSプロジェクトには特別なビルドステップは必要ありませんが、いくつかの環境変数の設定やその他の構成が必要な場合があります。
本番サーバーを実行する
本番サーバーを起動し、ポートを指定します(例:8586):
bashPORT=8586 NODE_ENV=production npm run start:prod
1ServBayホストリバースプロキシを設定する
ServBayの『ホスト』機能を使用して、本番サーバーにアクセスするためにリバースプロキシを設定します。ServBayの『ホスト』設定で、新しいリバースプロキシを追加します:
- 名前:
My first NestJS production site
- ドメイン:
servbay-nest-test.prod
- ホストタイプ:
リバースプロキシ
- IP:
127.0.0.1
- ポート:
8586
- 名前:
本番モードにアクセスする
ブラウザを開き、
https://servbay-nest-test.prod
にアクセスして本番バージョンを確認します。ServBayのカスタムドメインと無料SSL証明書により、あなたのウェブサイトはより高いセキュリティと信頼性を持つことができます。
データベース接続
ServBayは、Redis、MariaDB、PostgreSQL、MongoDBのデータベースサポートを提供しています。以下に、これらのデータベースに接続する例を示します。
MongoDBに接続する
@nestjs/mongoose
とmongoose
をインストールします:bashnpm install @nestjs/mongoose mongoose
1次にプロジェクトにインポートして接続します:
typescriptimport { Module } from '@nestjs/common'; import { MongooseModule } from '@nestjs/mongoose'; import { AppController } from './app.controller'; import { AppService } from './app.service'; @Module({ imports: [ MongooseModule.forRoot('mongodb://localhost/servbay-nest-app'), ], controllers: [AppController], providers: [AppService], }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13Redisに接続する
@nestjs/redis
とredis
をインストールします:bashnpm install @nestjs/redis redis
1次にプロジェクトにインポートして接続します:
typescriptimport { Module } from '@nestjs/common'; import { RedisModule } from '@nestjs/redis'; import { AppController } from './app.controller'; import { AppService } from './app.service'; @Module({ imports: [ RedisModule.forRoot({ url: 'redis://localhost:6379', }), ], controllers: [AppController], providers: [AppService], }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15MariaDBに接続する
@nestjs/typeorm
とmysql2
をインストールします:bashnpm install @nestjs/typeorm mysql2
1次にプロジェクトにインポートして接続します:
typescriptimport { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { AppController } from './app.controller'; import { AppService } from './app.service'; @Module({ imports: [ TypeOrmModule.forRoot({ type: 'mariadb', host: 'localhost', port: 3306, username: 'root', password: 'password', database: 'servbay_nest_app', entities: [], synchronize: true, }), ], controllers: [AppController], providers: [AppService], }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22PostgreSQLに接続する
@nestjs/typeorm
とpg
をインストールします:bashnpm install @nestjs/typeorm pg
1次にプロジェクトにインポートして接続します:
typescriptimport { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { AppController } from './app.controller'; import { AppService } from './app.service'; @Module({ imports: [ TypeOrmModule.forRoot({ type: 'postgres', host: 'localhost', port: 5432, username: 'user', password: 'password', database: 'servbay_nest_app', entities: [], synchronize: true, }), ], controllers: [AppController], providers: [AppService], }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
以上の手順に従って、NestJSプロジェクトを作成し実行し、ServBayが提供する機能を使用してプロジェクトを管理およびアクセスし、複数のデータベースに接続しました。