Typescript を実行する環境を整える@WSL2

typescript

ゴールデンウイーク後半ということもあり、仕事に向けてゆっくり勉強でもしようという今日です。結構ブログネタがたまってきたので、少しずつアウトプットしていこうと思います!前回はTypescript の型定義に関して簡単にまとめてみましたが、今回は実行環境を用意していきましょう。

今回やること

今回のブログで書いていくことは、Typescript をバックエンドで実行する環境を整えることです。
なので、WSL2 上でDB を用意して、CRUD の処理ができるところをゴールとしたいなと思います。
ただ、CRUD の処理を書くところまでは書いているとかなりの長さになってしまうので、処理については別の記事で書きたいと思います。

実行環境について

今回は以下のような実行環境を整えていこうと思います。

  • WSL2
    • Node Js (Volta でバージョンを管理)
      • v18.20.5
    • Mongodb
      • 6.0.23
    • POSTMAN などのAPI ツール(Curl で代用可能)

まずは、Mongodb をWSL2 にインストールするところから書いていきましょう。Node JS のインストールとVolta のインストールはこちらの記事を参考にしてみてください。

Qiitaの記事をGithub で管理したくて、WSL にvolta でnode インストールしてQiita 記事をpull まで - Qiita
今回の趣旨 Qiita の記事をQiita 内で管理してもよかったのですが、どうせならGithub で管理してみたいなという欲望があったので、設定をしてみることにしました。その時にWSL と普段は連携しているので、WSL 上にnode をイ...

それでは、MongoDB のインストールからかいていきます!

MongoDB の環境を整える

基本的には、公式通りにインストールしていきますので、公式を参照いただいても大丈夫です。

# GPG key import
curl -fsSL https://www.mongodb.org/static/pgp/server-6.0.asc | \
   sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg \
   --dearmor

# リストファイルの作成
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

# パッケージ update
apt update
(※ここでupdate でのエラーが表示された場合、GPG key の設定がうまくいってない可能性があります)

#MongoDB サーバー インストール
apt install mongodb-org

# 起動
systemctl start mongod
=> 起動状態になるとオッケーです

僕の環境ではこのセットで6.0 系統がインストールすることができました!最初にバージョンを間違えていれてしまい、GPG key のエラーが発生したりなどがありましたが、それ以外は特にエラーがなかったので、割とすんなりインストールできるのではないかと思います。

ただ、インストールすると、MySQL などはデフォルトでパスワード認証になっているのですが、
MongoDB はパスワードなしでログインができてしまいますので、パスワードの設定だけ最初にすすめておきましょう。

MongoDB の初期設定

mongoDB の初期設定をしていきましょう。MongoDB のconf ファイルは/etc/mongod.conf として存在しています。そのファイルでパスワード認証の設定をしていきます

#mongodb にログイン
mongosh

# admin db にswitch
use admin

# user 作成
db.createUser(
  {
    user: "tansan",
    pwd: "password",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" },
             { role: "dbAdminAnyDatabase", db: "admin" },
             { role: "readWriteAnyDatabase", db: "admin" }
           ]
  }
)

=> { ok: 1 }
//エラーなく作成されていたら、大丈夫です

# conf 編集
nano /etc/mongod.conf

# security をコメントアウトはずして、auth の設定追加
security:
  authorization: enabled

#再起動
systemctl restart mongod

# mongosh でパスワード認証設定が有効か確認
mongosh

show tables;
=> MongoServerError[Unauthorized]: command listDatabases requires authentication
authentication のエラーが発生したら、パスワード認証が有効になっている

# mongosh + password 認証でログイン
mongosh mongodb://tansan@localhost:27017/
password:*******

# show databases
test> show databases;
admin   132.00 KiB
config   60.00 KiB
local    72.00 KiB
=> コマンドがauth エラーなく通ったら想定通り

MongoDB の初期設定はここまでになります。これでパスワード認証を通してのみアクセスが可能な状態を作成できたので、セキュリティが向上しました!!最後にTypescript がバックエンドで使えるように準備をしていきましょう!

Typescript の準備

Typescript の準備と言っても、react create project などはせずに、package.json などをインストールして、Typescript で記載したものが使えるように、tsc をインストールするのみになります。

# package json 作成
npm init

# ts ファイル作成
touch index.ts

#  typescript とts-node インストール
npm install -g typescript ts-node

# index.ts にテストコード
let test: string = "test"
console.log(test);

# tsc でコンパイル
tsc index.ts
=> index.js ファイルが作成される

# 実行
node index.js
=> test 
// console log の中身が表示されたらオッケー!

この時点でnode js を使って、typescript でバックエンドを書く準備はできました。

まとめ

めっちゃ中途半端ですが、この辺でtypescript が使える環境とデータベースの準備ができましたので、今回はこれにて終わろうとは思いますが、次はexpress を使って、サーバーの機能も持たせて、api 通信でCRUD の処理について書いていこうと思っているので、処理については次の記事を乞うご期待ください!

タイトルとURLをコピーしました