Ubuntu VPSにNginxを使ってNestJSアプリケーションをデプロイする方法

0 株式
0
0
0
0

導入

現代のWebアプリケーションは、堅牢で安全なサポートに依存しています。そのため、小規模または大規模な開発チームによって管理できる、スケーラブルで安全かつ複雑なアーキテクチャを備えたアプリケーションを作成することが不可欠です。.

現代の開発者は、フロントエンドとバックエンドの両方でJavaScriptを使用することを好みます。Express.jsは、多くの開発者が使用する優れたJavaScriptフレームワークです。しかし、その最小限のアーキテクチャは、大規模なチームによるスケーラビリティとメンテナンスには適していません。そこでNest.jsの出番です。Nest.jsは、スケーラビリティとデプロイメントに非常に適した組み込みアーキテクチャを備えています。また、TypeScriptをネイティブにサポートしているため、バニラJavaScriptよりも開発者に適しています。.

このチュートリアルでは、VPS上のNginxウェブサーバーを使用してNestJSアプリケーションをデプロイする方法を学びます。アプリケーションを安全にウェブにデプロイする方法を学びます。.

前提条件
  • Ubuntu 20.04以降のVPSまたは物理的なUbuntuマシン
  • Node.js と npm (または yarn) パッケージ マネージャー。.
  • Nginx ウェブサーバー

ステップ1 – NestJSアプリケーションの準備とデプロイ

このセクションでは、NestJS CLI をインストールして基本的な NestJS アプリケーションを作成し、次のセクションで Nginx を使用してデプロイする方法を学習します。.

NestJS CLIをグローバルにインストールする

Ubuntu マシンに NestJS CLI をインストールするには、ターミナルを開いて次のコマンドを入力します。.

npm i -g @nestjs/cli

これにより、NestJS コマンドラインインターフェースがマシンにインストールされます。次に、新しい NestJS プロジェクトを作成する方法を学びます。.

新しいNestJSプロジェクトを作成する

NestJS では、新しいプロジェクトを開始する方法が 2 つ提供されています。自分に合った最適な方法をお選びください。.

CLI を使用して NestJS プロジェクトを作成するには、次のコマンドを入力します。.

nest new <project-name>
Output? Which package manager would you ❤️ to use? (Use arrow keys)
❯ npm 
yarn 
pnpm

完了すると、次のような出力が表示されます。.

OutputCREATE node_app/.eslintrc.js (663 bytes)
CREATE node_app/.prettierrc (51 bytes)
CREATE node_app/README.md (3340 bytes)
CREATE node_app/nest-cli.json (171 bytes)
CREATE node_app/package.json (1947 bytes)
CREATE node_app/tsconfig.build.json (97 bytes)
CREATE node_app/tsconfig.json (546 bytes)
CREATE node_app/src/app.controller.ts (274 bytes)
CREATE node_app/src/app.module.ts (249 bytes)
CREATE node_app/src/app.service.ts (142 bytes)
CREATE node_app/src/main.ts (208 bytes)
CREATE node_app/src/app.controller.spec.ts (617 bytes)
CREATE node_app/test/jest-e2e.json (183 bytes)
CREATE node_app/test/app.e2e-spec.ts (630 bytes)

これにより、現在の作業ディレクトリに新しいプロジェクトが作成されます。代わりに ; 別のディレクトリへの絶対パスも指定します。.

スターターテンプレートシミュレーション

NestJS は、新しいプロジェクトを開始する別の方法を提供します。これは、定型テンプレートとして機能する Git リポジトリです。このリポジトリをクローンし、以下のコマンドでプロジェクトを開始できます。.

git clone https://github.com/nestjs/typescript-starter.git <project-directory >

クローン作成が完了したら、プロジェクト ディレクトリに cd し、npm install を実行して package.json から依存関係をインストールする必要があります。.

cd <project-directory>
npm install

プロジェクトの準備ができたら、次のコマンドを使用してアプリケーション サーバーを起動できます。

npm run start

これにより、アプリケーションは http://localhost:3000 で実行されます。これで、localhost で実行できる基本的な NestJS アプリケーションが完成しました。.

アプリケーションテスト

アプリケーションを開発したら、テストを実行して、期待どおりに動作するかどうかを確認できます。NestJSには、アプリケーションのテストを実行するためのデフォルトのJestテストが用意されています。以下のコマンドでテストを開始できます。

npm run test

このプログラムはテストを行い、次のような結果を表示します。

Output> [email protected] test
> jest
PASS src/app.controller.spec.ts
AppController
root
✓ should return "Hello World!" (24 ms)
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 2.895 s
Ran all test suites.

次のセクションでは、Web サーバー上のリバース プロキシとして Nginx を使用して、この NestJS アプリケーションをデプロイする方法を学習します。.

ステップ2 – NestJSアプリケーションを提供するためにNginxを構成する

さて、このNestJSアプリケーションをホストするためのWebサーバーの設定に移りましょう。リバースプロキシアプローチを採用します。このアプローチでは、アプリケーションをlocalhostの特定のポートで実行し、Nginxサーバーを使用して、VPSのパブリックIPアドレスまたはドメインへのリクエストをlocalhostのアプリケーションにプロキシします。リバースプロキシサーバーの使用は、受信リクエストとバックエンドアプリケーション自体の間にバリアを作成することでWebサーバーのセキュリティを強化するため、業界では一般的に行われています。また、リバースプロキシは、特にサーバーで複数のWebアプリケーションをホストしている場合、サーバーの負荷管理を改善します。.

パッケージマネージャーをインストールします 午後2時 まず、実行時にプログラムを管理するものから始めます。.

pm2プロセスマネージャーをインストールする

プロセス マネージャーを開くには、次のコマンドを使用できます。 午後2時 インストール。.

npm install -g pm2

この作品で 午後2時 デバイス全体にインストールされます。.

NestJS アプリケーション用の Nginx 構成の作成

次に、アプリケーションを実行するためにNginxを設定します。前提条件のチュートリアルで説明したように、ファイアウォールでNginxアプリケーションのHTTPとHTTPSを許可していることを確認してください。ufwファイアウォールを使用している場合は、手順に従って設定できます。.

ufw enable
ufw allow ‘Nginx Full‘

次に、NestJSアプリケーション用の設定ブロックを作成します。新しいアプリケーションの場合は、デフォルト設定を編集するのではなく、新しい設定ブロックを作成することをお勧めします。ブロックを作成するには、ターミナルに次のコードを入力してください。.

sudo nano /etc/nginx/sites-available/your_domain

ここではアプリケーション名として your_domain を使用していますが、実際のアプリケーション名に変更してください。次に、エディターで次のコードを入力します。

server {
server_name your_domain www.your_domain;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

ここで、Nginx に sites-available フォルダー内の利用可能な Web アプリケーションを検索するように指示するシンボリック リンクを作成します。

sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

また、デフォルトのリンクを無効にする必要があります。無効にしないと、nginx はすべてのリクエストをデフォルトのサイトにリダイレクトします。リンクを解除するには、以下のコマンドを使用してください。.

sudo unlink /etc/nginx/sites-enabled/default

次のコマンドを使用して、Nginx サービスを再起動します。.

sudo systemctl restart nginx
Nginxを使用してNestJSアプリケーションをデプロイする

次に、NestJSアプリケーションの実行を管理するために、pm2パッケージマネージャーを起動します。作業ディレクトリをNestJSアプリケーションディレクトリに変更し、以下のコマンドを入力します。.

pm2 start npm --name "your_domain" – start

次のコマンドを実行して、サーバーの再起動時に pm2 が実行されるように設定できます。.

pm2 startup

pm2 でプログラムの設定が完了したら、次のようにして pm2 プロセス リストを保存します。

pm2 save

これで、Web アプリケーションを起動時に実行するように設定し、ローカルホストで実行されているアプリケーションへのリバース プロキシに Nginx を構成しました。.

Webアプリケーションのテスト

次のコマンドを入力すると、コンソールから Web アプリケーションをテストできます。.

curl http://localhost

リバース プロキシをサーバーの IP アドレス自体に設定しているため、サーバーのパブリック IP アドレス、ドメイン、またはサーバーからの localhost 要求はすべてアプリケーションに転送されます。 NestsJS あなたのドメイン ガイドされます。.

OutputHello World!

次のセクションでは、アプリケーションに SSL を追加して、リクエストに HTTPS プロトコルを使用する方法を学習します。.

ステップ3 – Let's Encryptを使用してSSLを追加する(オプション)

ここまで、Nginxサーバーを使用して完全に機能するNestJSアプリケーションをデプロイする方法を学びました。ただし、このデプロイではHTTPプロトコルを使用していますが、これは脆弱性を悪用される可能性があるため、本番環境では推奨されません。そこで、HTTPの暗号化バージョンであるHTTPSプロトコルに切り替える必要があります。HTTPSは、証明機関が発行するSSL/TLS証明書を使用します。これらの証明書はウェブサイト固有のものであり、クライアントとサーバー間の通信を暗号化します。.

Let's Encrypt Certbot CLI をインストールする

Let's Encryptは、消費者向けのSSL証明書の管理と自動化のためのCLIを提供しています。このツールは次のコマンドでインストールできます。

sudo apt install certbot python3-certbot-nginx

これにより、Ubuntu VPS に certbot クライアントがインストールされます。.

ドメインのSSL/TLS証明書を取得する

次のコマンドを使用して、ドメインのSSL証明書を取得できます。

sudo certbot --nginx -d <your_domain> -d <www.your_domain>

絶対です あなたのドメイン certbot を実際のドメイン名に置き換えてください。VPSでcertbotを初めて実行する場合は、メールアドレスの入力と利用規約への同意を求められます。必要な情報を入力して続行してください。.

証明書がインストールされると、すべてのリクエストをHTTPSにリダイレクトできます。ウェブサイトの整合性を確保するために、すべてのリクエストをリダイレクトすることをお勧めします。.

結果

このチュートリアルでは、Ubuntu VPSの本番環境でNginxウェブサーバーを使用してNestJSアプリケーションをデプロイする方法を学びました。また、Nginxを使用してNestJSプロジェクトとアプリケーションのリバースプロキシを設定する方法も学びました。最後に、サーバードメインにSSL/TLS証明書を追加し、クライアントとサーバー間の通信の整合性を確保する方法も学びました。.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

あなたも気に入るかもしれない