ServBayでExpress.jsプロジェクトを作成・実行する
Express.jsとは?
Express.jsは、Node.jsをベースにした高速でオープン、シンプルなWebアプリケーションフレームワークです。シングルページアプリケーションやマルチページ、ハイブリッドなWebアプリなど、幅広い開発に対応できる強力な機能を多数備えています。Express.jsはNode.jsエコシステムの中でも最も人気のあるフレームワークのひとつで、その簡潔かつ柔軟な設計が多くの開発者から支持されています。
Express.jsの主な特徴とメリット
- シンプルかつ柔軟:Express.jsはシンプルなAPIと柔軟なミドルウェア設計を持ち、効率的なWebアプリケーション開発を実現します。
- ミドルウェア対応:様々なミドルウェアによって、リクエスト/レスポンスの解析やセッション処理、静的ファイルの提供などを容易に行えます。
- ルーティング:強力なルーティング機能により、HTTPメソッド(GET, POST, PUT, DELETEなど)やURLパスごとに適切な処理が可能です。
- 高い拡張性と統合性:Pug、EJS、Handlebarsなどのテンプレートエンジンや、MongoDB、MySQL、PostgreSQLといった各種データベース、その他Node.jsモジュールとのシームレスな統合が可能です。
- 活発なコミュニティと豊富なエコシステム:充実したサードパーティ製ミドルウェアやプラグインが多数公開されており、困ったときにも情報やリソースを簡単に見つけられます。
Express.jsを使用することで、開発者は高性能なWebアプリケーションやAPIを効率良く構築できます。ServBayは強力なローカルWeb開発環境として、Express.jsプロジェクトの実行に最適なNode.js環境と、リバースプロキシ対応のWebサーバー機能、そして包括的なデータベース管理機能を提供します。
ServBayを使ってExpress.jsプロジェクトを作成・実行する
この記事では、ServBayが提供するNode.js環境でExpress.jsプロジェクトを作成し、設定して実行する方法を順を追ってご紹介します。ここではServBayのWebサイト機能を利用し、Webサーバーを設定・リバースプロキシを使ったアクセスを実現します。この方法は、Node.js/Python/Go/Javaなどの特定ポートでサービスを稼働させるアプリに特に適しています。
前提条件
作業開始前に、以下の条件を満たしていることを確認してください:
- macOS上にServBayがインストール済み
- ServBayでNode.jsパッケージをインストール・有効化済み(ServBayコントロールパネルの[パッケージ]タブで管理可)
- (オプション)データベースを利用する場合は、それぞれに対応したデータベースパッケージ(MariaDB, PostgreSQL, MongoDB, Redis, MySQL等)をインストール・有効化済み
- 基本的なターミナル・コマンド操作に慣れている
Express.jsプロジェクトの作成
プロジェクトの初期化
まずターミナルを開き、ServBay推奨のWebサイトルートディレクトリである
/Applications/ServBay/www
へ移動します。その後、npx express-generator
コマンドでExpress.jsプロジェクトのひな型を素早く生成します。npx
はnpm v5.2以上に同梱されているツールで、Node.jsパッケージの実行が可能です。bashcd /Applications/ServBay/www npx express-generator servbay-express-app
1
2これにより、
/Applications/ServBay/www
配下にservbay-express-app
という新しいフォルダが作成され、基本構成が整ったExpress.jsプロジェクトが生成されます。必要な依存パッケージのインストール
新しく作成された
servbay-express-app
ディレクトリへ移動し、npm install
コマンドでExpress.js一式およびテンプレートエンジンや静的ファイルサービス等の必要な依存パッケージをインストールします。bashcd servbay-express-app npm install
1
2依存関係のインストールが完了するまで待ちます。
Express.jsプロジェクトの出力内容を変更する
動作確認のため、デフォルトホームページの出力内容を変更してみます。
routes/index.js
ファイルの編集Express.jsプロジェクトでは、各URLリクエストの処理をルーティングファイルで記述します。プロジェクトディレクトリ内の
routes/index.js
を開いてください。このファイルはルートパス/
のGETリクエストを担当します。Pugテンプレートによるデフォルトのレンダリングをやめ、簡単なテキストレスポンスを返すようにコードを修正しましょう。javascriptvar express = require('express'); var router = express.Router(); /* GET home page. */ router.get('/', function(req, res, next) { // レスポンスをテキスト送信に変更 res.send('Hello ServBay!'); }); module.exports = router;
1
2
3
4
5
6
7
8
9
10ファイルを保存します。
開発モードでサーバーを起動する
開発時には、変更をすぐに反映できるようローカル開発サーバーを起動します。Express.jsプロジェクトはnpm start
でHTTPサーバーが立ち上がります。
開発サーバーの起動
プロジェクトルートである
servbay-express-app
ディレクトリで、次のコマンドを実行して開発サーバーを起動します。PORT
環境変数でリッスンするポート(ここでは8585
)、DEBUG
でデバッグ出力を有効にします。bashcd /Applications/ServBay/www/servbay-express-app PORT=8585 DEBUG=servbay-express-app:* npm start
1
2サーバー起動後、ターミナルにリスン中のポート
8585
が表示されます。ServBayウェブサイトのリバースプロキシ設定
Express.jsアプリはカスタムポート(例:8585)で動作しており、標準Webポート(80/443)ではアクセスできません。そのためServBayのWebサイト機能でリバースプロキシ設定を行います。ServBayのWebサーバー(デフォルトではCaddy)は標準の80/443ポートでリクエストを受け、特定ドメイン宛てのリクエストを
127.0.0.1:8585
上のExpress.jsアプリへ転送します。ServBayコントロールパネルの「Webサイト」タブで新規サイトを追加し、以下の設定をします:
- 名前:
My first Express.js dev site
(分かりやすい名前) - ドメイン:
servbay-express-test.servbay.demo
(.servbay.demo
ドメインを使うとUser CAで自動HTTPS発行が可能) - ウェブサイトタイプ:
リバースプロキシ
を選択 - IP:
127.0.0.1
(またはlocalhost
) - ポート:
8585
(Express.jsアプリのリッスンポート)
設定後は保存してServBayの変更を適用します。
.servbay.demo
のHTTPS証明書も自動で発行されます。詳細な設定手順はServBayドキュメントのNode.js開発サイトの追加方法を参照してください。
- 名前:
開発モードサイトへのアクセス
ブラウザで
https://servbay-express-test.servbay.demo
にアクセスします。ServBayのWebサーバーがリクエストを受け、リバースプロキシ経由で8585番ポートのExpress.jsアプリに転送します。ページに"Hello ServBay!"と表示されれば成功です。ServBayはカスタムドメイン&無料SSL証明書(
.servbay.demo
の自動HTTPS含む)対応のため、ローカルでもHTTPS環境を手軽に試せます。本番環境との近似性がアップし、潜在的な問題発見にも役立ちます。
本番モードでのデプロイ
開発が完了したら、本番環境向けにアプリをデプロイできます。ローカルで本番運用と同じモードで動作検証も行いましょう。
本番環境の準備
Express.jsを本番運用する際は、
NODE_ENV
環境変数をproduction
に設定します。これにより一部のライブラリ動作(デバッグOFFや最適化など)が本番仕様に変わります。アプリがNODE_ENV=production
に正しく対応するようコードを調整しましょう。本番サーバーの起動
プロジェクトルートで次のコマンドを実行し、本番運用を模した状態でサーバーを起動します。開発・本番を区別するため、ポートは
8586
に変更、NODE_ENV
にproduction
を指定。bashcd /Applications/ServBay/www/servbay-express-app PORT=8586 NODE_ENV=production npm start
1
2サーバーが起動し、8586ポートでリスンしていることが表示されます。
ServBayウェブサイトのリバースプロキシ設定(本番)
開発モード同様に、本番向けExpress.jsアプリ用の新しいリバースプロキシサイトを追加します。
ServBayコントロールパネルの「Webサイト」タブで新規サイト追加し、下記のように設定:
- 名前:
My first Express.js production site
- ドメイン:
servbay-express-test-prod.servbay.demo
(または本番用に任意のドメイン) - ウェブサイトタイプ:
リバースプロキシ
- IP:
127.0.0.1
- ポート:
8586
(本番アプリのポート)
設定変更後は保存して適用します。
- 名前:
本番モードサイトへのアクセス
ブラウザで
https://servbay-express-test-prod.servbay.demo
にアクセスすると、8586ポートの本番モードExpress.jsアプリにリバースプロキシ経由で接続されます。本番モードの動作確認や本番設定下でのテストに役立ちます。
データベースへの接続
ServBayは様々なデータベースパッケージ(MariaDB、PostgreSQL、MongoDB、Redis)をローカルでサポートしています。これらが有効化済みであれば、Express.jsプロジェクトから簡単に接続可能です。各種データベースにはServBay標準のユーザー名・パスワード(例:MariaDB/MySQLのrootユーザーはパスワードpassword
、PostgreSQLはユーザーuser
/パスワードpassword
/デフォルトDB名servbay_default
など)が設定されています。詳細はServBayのDB画面やドキュメントを確認してください。
以下では代表的なデータベースへのExpress.jsからの接続例を紹介します。事前にnpm install <パッケージ名>
で必要なNode.js用DBドライバをインストールしておきましょう。
MongoDBへの接続
まず、MongoDB用ORMの
mongoose
をインストール:bashnpm install mongoose
1つぎに、(
app.js
や専用のDB設定ファイルなどで)以下のように接続します:javascriptvar mongoose = require('mongoose'); // ローカルのMongoDBインスタンス(データベース名:servbay-express-app)へ接続 // ServBayのMongoDBはデフォルトで認証不要 mongoose.connect('mongodb://localhost/servbay-express-app', { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => console.log('MongoDBに接続しました')) .catch(err => console.error('MongoDB接続エラー:', err));
1
2
3
4
5
6
7
8
9
10ServBayのMongoDBパッケージが起動していることを確認してください。
Redisへの接続
最初に
redis
クライアントパッケージをインストール:bashnpm install redis
1プロジェクト内で次のように接続します:
javascriptvar redis = require('redis'); // ServBayのRedisはlocalhost:6379でパスワード不要 var client = redis.createClient({ host: 'localhost', port: 6379 }); client.on('connect', function() { console.log('Redisに接続しました'); }); client.on('error', function (err) { console.log('Redisエラー: ' + err); }); // キーのセットと取得の例 // client.set('mykey', 'Hello from Express!', redis.print); // client.get('mykey', function(err, reply) { // if (err) throw err; // console.log(reply); // "Hello from Express!"と表示 // }); // 必要に応じてclientオブジェクトでRedis操作を行う
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23ServBayのRedisパッケージが起動されていることを確認してください。
MariaDB / MySQLへの接続
ServBayはMariaDBとMySQLの両方をサポートしています。一般的には
mariadb
やmysql2
パッケージを使って接続します。ここではmariadb
パッケージを用いますが、MySQLにも接続可能です。まず
mariadb
またはmysql2
をインストール:bashnpm install mariadb # または npm install mysql2
1そして、ServBayのデフォルト認証情報を使って接続します(MariaDB/MySQLのrootパスワードは
password
です)。javascriptvar mariadb = require('mariadb'); // ServBayのMariaDB/MySQLはlocalhost:3306で動作 var pool = mariadb.createPool({ host: 'localhost', port: 3306, // デフォルトポート user: 'root', // ServBayのデフォルトユーザー password: 'password', // ServBayのデフォルトパスワード database: 'servbay_express_app', // ServBayで作成したデータベース connectionLimit: 5 // コネクションプールサイズ }); pool.getConnection() .then(conn => { console.log("MariaDB/MySQLに接続しました"); // クエリ実行時はconnオブジェクトを使用 // conn.query("SELECT 1").then(...).catch(...).finally(() => conn.release()); conn.release(); // 使用後はコネクションを解放 }) .catch(err => { console.log("接続エラー: " + err); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21事前にServBay内のデータベース管理ツール(phpMyAdmin, Adminer等)で
servbay_express_app
データベースを作成してください。また、MariaDBまたはMySQLパッケージが起動済みであることを確認しましょう。PostgreSQLへの接続
まず、PostgreSQLドライバの
pg
パッケージをインストール:bashnpm install pg
1続いて、ServBayのデフォルト認証情報(ユーザー:user、パスワード:password、データベース:servbay_default)で接続します。
javascriptvar { Pool } = require('pg'); // ServBayのPostgreSQLはlocalhost:5432で動作 var pool = new Pool({ user: 'user', // ServBayのデフォルトユーザー host: 'localhost', database: 'servbay_default', // デフォルトDBまたは任意のDB password: 'password', // ServBayのデフォルトパスワード port: 5432, // デフォルトポート }); pool.connect((err, client, done) => { if (err) { console.error('PostgreSQL接続エラー:', err); return; } console.log('PostgreSQLに接続しました'); // クライアントでクエリ実行可 // client.query('SELECT NOW()', (err, res) => { ... done(); }); done(); // 使用後は解放 }); // async/await方式の例 // try { // const client = await pool.connect(); // console.log('PostgreSQLに接続しました'); // // const res = await client.query('SELECT NOW()'); // // console.log(res.rows[0]); // client.release(); // 使用後は解放 // } catch (err) { // console.error('PostgreSQL接続エラー:', err); // }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31ServBayでPostgreSQLパッケージが起動中であることを確認してください。
まとめ
ここまでの手順で、ServBayを使いExpress.jsプロジェクトの作成・設定・実行がローカルでできるようになりました。本記事で学んだ内容は以下の通りです:
express-generator
によるプロジェクトの初期化- Express.jsアプリを任意のポートで起動
- ServBayのWebサイト機能でリバースプロキシを設定し、標準HTTP/Sポート経由でNode.jsアプリを公開
- ServBay上で複数種類のデータベースに接続
ServBayを活用すれば、Node.js(Express.js)開発に最適なローカル環境を簡単に構築し、管理できます。SSL自動発行やサイトバックアップ、ログ閲覧などの便利機能も揃っているため、より効率的・安全な開発ワークフローを実現できます。