AWSにてnode.js, express4.xをインストールしてhttps接続を行う
Amazon EC2にてインスタンス起動
Keyの作成
putty使用場合pemをputtygenにてppkに変換。
ログイン設定
準備
インスタンス内モジュールのアップデート
$ sudo yum update
gitのインストール
$ sudo yum install git
nvmのインストール
・gitリポジトリからクローン
$ git clone https://github.com/creationix/nvm.git ~/.nvm
・コマンド対応
$ source ~/.nvm/nvm.sh
node.jsのインストール
・node.jsのリリースバージョン確認
$ nvm ls-remote
・対象となるnode.jsのインストール
$ nvm install v[バージョンNo]
PM2のインストール(グローバル)
$ npm install pm2@latest -g
expressのインストール
$ npm install express
expressコマンドのインストール(グローバル)
$ npm install -g express-generator
expressアプリケーションを作成
expressコマンドを使わずシンプルなコードで確認
適当なディレクトリを作成して下記ファイルを配置
app.js
var express = require('express'); var app = express(); var port = 3000; app.get('/', function (req, res) { res.send('Hello, World!'); }); app.get('/port', function(req, res) { res.send(String(port)); }); app.listen(port); console.log("server starting...port:"+ port);
package.json
"name": "express-sample", "version": "0.0.1", "private": true, "scripts": { "start": "node app" }, "dependencies": { "express": "*" } }
起動
$ pm2 start app.js
expressコマンドにて作成したアプリの確認
アプリ作成
$ express [アプリ名]
起動
$ npm start
PM2でデーモン化して起動
・pm2起動用準備
express4.xのexpressコマンドで作成したアプリはそのままではpm2での起動ができない。
原因は、初期起動用の [アプリ名]/bin/www に拡張子が付いていないため(人に教えていただきました。)
なので、バックアップついでに拡張子を付与する。
$ cd bin/ $cp ./www ./www.js
・pm2で起動
$ pm2 start wwww.js
・確認
$ pm2 ls
httpsでのアクセス
証明書を作成
$ openssl genrsa -aes128 1024 > server.pem $ openssl req -new -key server.pem> server.csr $ openssl x509 -in server.csr -days 365 -req -signkey server.pem > server.crt $ openssl rsa -in server.pem -out server.rsa
https用にwww.jsを書き換え
・作成した証明書類を適当なディレクトリで管理
www.js
var debug = require('debug')('web'); var https = require('https'); var app = require('../app'); var fs = require('fs'); var port = 3000; var options = { key: fs.readFileSync('../keys/server.rsa'), cert: fs.readFileSync('../keys/server.crt') }; //var server = app.listen(app.get('port'), function() { https.createServer(options, app).listen(port);
参考