npm run dev
でそのまま実行するとhttp://localhost:3000
でサーバーが起動する。Nuxt.js単体で開発する分にはこれで問題ないのだが、他サービスが関わってくるとできればhttpsでアクセスできるようにしたい。ということで、Vue CLIで生成したNuxt.jsプロジェクトをhttps化して起動する方法をまとめる。
環境は以下の通り。
- macOS High Sierra
- vue-cli@3.0.1
- nuxt.js@1.4.2
Nuxt.jsプロジェクトをhttps化して起動する
とりあえずNuxt.jsプロジェクトをそのまま起動してみる。
# vue-cliをグローバルにインストール
$ npm i -g vue-cli
# テンプレートを生成する
$ vue init nuxt-community/starter-template my-project
# とりあえず実行してみる
$ cd my-project
$ npm i
$ npm run dev
# http://localhost:3000でアクセス可能
自己署名証明書(オレオレ証明書)を作成する
ローカルの開発環境で使うものなので、自己署名証明書を使う。# 秘密鍵を生成する
$ openssl genrsa 2048 > server.key
# 証明書署名要求を生成する
$ openssl req -new -key server.key > server.csr
# サーバー証明書を生成する(有効期限は適当に10年)
openssl x509 -in server.csr -days 3650 -req -signkey server.key > server.crt
自己署名証明書の詳しい作り方は、以下の記事を参考にしてほしい。
httpsサーバー用の設定ファイルを作成する
次にhttpsサーバーを起動するための設定ファイルを作成する。ディレクトリ構成は以下のような感じ(好みで変えてください)
|- https
| |- server.js // ←これを作成する
| |- server.crt
| |- server.key
|- nuxt.config.js
|- package.json
|- 以下略
今回は開発時のみだけhttps化したいのでシンプルにまとめる。(本番環境では別の方法でhttps化するためここには書かない)
// ~/https/server.js
const { Nuxt, Builder } = require('nuxt')
const https = require('https')
const fs = require('fs')
const config = require('../nuxt.config.js')
const port = 3000
const nuxt = new Nuxt(config)
new Builder(nuxt)
.build()
.then(listen)
.catch(error => {
console.error(error)
process.exit(1)
})
function listen() {
const options = {
key : fs.readFileSync(`${__dirname}/server.key`),
cert: fs.readFileSync(`${__dirname}/server.crt`),
}
https.createServer(options, nuxt.render).listen(port)
console.log(`Server listening on localhost:${port}.`)
}
サーバーをhttps化して起動する
package.jsonの
dev
を以下のように書き換える。
// package.json
{
// 略
"scripts": {
// "dev": "nuxt" を書き換える
"dev": "node ./https/server.js"
},
// 略
}
書き換えたらサーバーを起動し、
https://localhost:3000
でアクセスする
$ npm run dev
参考サイト
以上
written by @bc_rikko
0 件のコメント :
コメントを投稿