bookmark_borderNode.js環境で.envを使用

APIキーを直書きではなく環境変数で呼び出して使いたい・・・と思い、実装しました。

https://maku77.github.io/nodejs/env/dotenv.html

参考にしたのはこちらのサイト。

 

npmに「dotenv」というパッケージがあるらしく、こちらをまずはインストール。

npm install dotenv --save

.envファイルを作成し、環境変数を設定。

KEY1=XXXXXXXXXXX
KEY2=YYYYYYYY

最初は”XXXXXXXX”ってクォーテーションマークで囲っていたけど、不要みたい。

 

jsファイルでdotenvを参照させるため、こちらを追記。

require("dotenv").config();

あとはrequireを追記したjsファイル内で

process.env.KEY1

のように書いてやれば、設定したキーを参照できる。

 

ファイル構造はこんな感じ。

sample-app
├─app.js
└─.env

最後に、Git管理するなら.envファイルはコミットしないよう気をつける必要が。

なので.gitignoreファイルに

.env

と追記を。

bookmark_borderNode.jsのSSL化

Node.jsで立てたhttpのサーバーをhttpsで接続できるようにするため色々調べたところ、

https://kennejs.com/entry/2019/01/19/074529

このサイトを参考にすることで無事SSL化に成功した。

 

ドメインも取得していたし、SSL証明書もネコでもわかる!さくらのVPS講座 ~第六回「無料SSL証明書 Let’s Encryptを導入しよう」を参考にLet’s Encryptで取得していたので、Node.jsのアプリケーションを修正だけでできた。

 

const https = require('https');
option = {
  key: fs.readFileSync('/etc/letsencrypt/live/(独自ドメイン)/privkey.pem'),
  cert: fs.readFileSync('/etc/letsencrypt/live/(独自ドメイン)/cert.pem'),
  ca: fs.readFileSync('/etc/letsencrypt/live/(独自ドメイン)/chain.pem')
}

まずはこのコードを追記。私の場合「fs」をrequireしていなかったので、この上にさらに

const fs = require('fs');

を追記。

 

const server = http.createServer(app).listen(3000);
let io2 = io.listen(server);

としていたところを

const server = https.createServer(option, app).listen(3000);
let io2 = io.listen(server);

に変更。

 

これで無事にSSL化に成功。

bookmark_borderApache&Node.jsの共存

Apacheを動かしている状態だとNode.jsでサーバーを立ててもNode.js側には接続できず、ApacheをストップするとNode.js側に接続できるという状態が発生した。

どうやら共存させるために手順が必要なようだ。

 

http://note.onichannn.net/archives/2451

上のサイトを参考に、httpd.confのリッスンポートとバーチャルホストのポートを80番以外に避難することで、無事に共存させることができた。

サイト内ではNode.js側はhttp-proxyを導入しているが、この手順は行っていない。

元々ポート80番以外で接続するように設定していたからかな。