はじめに
Node.jsとかExpressの公式ドキュメントは基本的にhttpサーバーの立ち上げ方しか解説されておらず、httpsサーバーはどうやって立ち上げるんじゃ?と思ったので、それをやります。
やること
いつもの雛形に
①証明書配置用のディレクトリを作成して秘密鍵と証明書を配置
②bin/wwwを修正してhttpsサーバーを作成
の2点のみ。
環境
- Node,js:18.12.0
- npm:9.2.0
- Express:4.18.2
- EJS:3.1.8(別に必要ない)
1.雛形を作成
いつものやつ(テンプレートエンジンはejs)。
$ npx express-generator --view=ejs <アプリ名>
$ cd <アプリ名>
$ npm install
2.SSL証明書を配置
証明書配置用のディレクトリを作成し、
$ mkdir .ssl
秘密鍵と証明書を配置。
※証明書の作成方法は割愛
$ ls .ssl
server.crt server.key
3.bin/wwwの修正
fsとhttpsのモジュールを追加して、HTTPSサーバーを作成するように修正する。
express-generatorがvarで書いてるから、なんとなくvarで書く。
#!/usr/bin/env node
/**
* Module dependencies.
*/
var app = require('../app');
var debug = require('debug')('sample-socket.io-express-generator:server');
var http = require('http');
var fs = require('fs'); // 追記
var https = require('https'); // 追記
/*----------省略----------*/
/**
* Create HTTP server.
*/
//var server = http.createServer(app); // コメントアウト
// ここから下追記
/**
* Create HTTPS server.
*/
var options = {
key: fs.readFileSync('./ssl/server.key'),
cert: fs.readFileSync('./ssl/server.crt')
};
var server = https.createServer(options, app);
/*----------省略----------*/
4.サーバーを起動
$ npm start
https://localhost:3000/に接続できることを感じる。
めでたし。
おわりに
Node.jsとかExpress自体での解説記事はたくさんあるに、express-generatorの雛形での解説記事があまりみつからないので備忘録として書いてみました。
(記事が見つからないのは探し方がヘタクソなだけかもしれないが…)
express-generatorの雛形は非常に便利な反面、bin/wwwで起動しているせいでカスタマイズする時に詰まることが多々あるのがイヤですね…。
最近Expressに触れる機会があったので他にもexpress-generatorの雛形に関する記事を書いていきたいです。