BunはNode.jsの代替として高速な実行環境を提供しますが、本番環境でアプリケーションを運用する際には、プロセスマネージャーの使用が推奨されます。PM2は人気のあるプロセスマネージャーですが、BunとPM2を組み合わせる際にはいくつかの注意点があります。この記事では、Node.jsをインストールせずにBunとPM2を使用するための方法を解説します。
PM2とBunを組み合わせる3つの方法
BunでPM2を使用するには、主に以下の3つの方法があります:
- Node.jsをインストールする方法
- シンボリックリンクを使用する方法
- Bunインタープリターを指定する方法
1. Node.jsをインストールする方法
最も確実な方法は、Node.jsをインストールすることです。
メリット
- 最も安定した環境で動作する
- PM2の全機能が確実に使用できる
- 追加の設定が不要
デメリット
- Node.jsという追加の依存関係が必要
- Bunだけで完結させたい場合は冗長
手順
# Node.jsをインストール
sudo apt update
sudo apt install nodejs npm
# PM2をインストール
npm install -g pm2
# 動作確認
pm2 -v
# Bunアプリケーションを起動
pm2 start index.ts --interpreter ~/.bun/bin/bun
2. シンボリックリンクを使用する方法
Node.jsをインストールしたくない場合は、Bunからnode
コマンドへのシンボリックリンクを作成する方法があります。
メリット
- Node.jsをインストールせずにPM2コマンドが使用可能
- 設定が比較的シンプル
デメリット
- Bunの完全なNode.js互換性に依存する
- 将来のBunアップデートで互換性に問題が生じる可能性がある
- PM2コマンド自体は内部的にnodeコマンドを参照するスクリプトとして実装されています。そのため、nodeコマンドが利用可能でない限り、pm2 -vなどのコマンドは実行できません。
手順
# Bunをインストール(既にインストール済みの場合はスキップ)
curl -fsSL https://bun.sh/install | bash
# PM2をBunでインストール
bun install -g pm2
# Bunから'node'へのシンボリックリンクを作成
sudo ln -s $(which bun) /usr/local/bin/node
# 動作確認できない
pm2 -v
# Bunアプリケーションを起動
pm2 start index.ts
3. Bunインタープリターを指定する方法
PM2の設定ファイルを使用して、Bunをインタープリターとして明示的に指定する方法です。
メリット
- 設定が明示的で分かりやすい
- アプリケーション固有の設定が可能
デメリット
- PM2コマンド自体の実行には別途対応が必要
- 設定ファイルの作成が必要
手順
まず、PM2コマンド自体を実行可能にするために、前述のシンボリックリンク方式を適用します:
# Bunから'node'へのシンボリックリンクを作成
sudo ln -s $(which bun) /usr/local/bin/node
次に、PM2の設定ファイルを作成します:
// pm2.config.js
module.exports = {
name: "my-bun-app",
script: "index.ts",
interpreter: "bun",
env: {
PATH: `${process.env.HOME}/.bun/bin:${process.env.PATH}`,
}
};
そして、設定ファイルを使用してアプリケーションを起動します:
pm2 start pm2.config.js
推奨される方法
Node.jsをインストールしたくない場合、シンボリックリンク方式が最も簡単で効果的です。この方法では:
- PM2コマンド自体が実行可能になる
- 追加の設定ファイルなしでBunアプリケーションを起動できる
ただし、より明示的な設定や複雑なデプロイシナリオでは、シンボリックリンク方式と設定ファイル方式を組み合わせることも検討してください。
注意点
-
互換性の問題: BunはNode.jsとの完全な互換性を目指していますが、一部の機能では互換性の問題が発生する可能性があります。
-
将来のアップデート: Bunや PM2 の将来のアップデートで互換性や動作が変わる可能性があります。
-
本番環境での使用: 重要な本番環境では、十分なテストを行ってから導入してください。
まとめ
Node.jsをインストールせずにBunとPM2を組み合わせる場合、シンボリックリンク方式が最も簡単な解決策です。より複雑な設定が必要な場合は、設定ファイル方式と組み合わせることで柔軟な対応が可能になります。
Bunの高速な実行環境とPM2の堅牢なプロセス管理機能を組み合わせることで、効率的なアプリケーション運用が実現できます。