Node.jsでSSL通信(iOS8, iOS9のサファリでは注意)


Node.jsでSSL通信させる書き方

var https = require('https');
var fs = require('fs');
var options = {
    key: fs.readFileSync('キーのファイルパス'),
    cert: fs.readFileSync('証明書のファイルパス'),
    ca: fs.readFileSync('中間証明書のファイルパス')
};
https.createServer(options, function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
}).listen(1337, "0.0.0.0");

ここで重要なのが中間証明書(ca)の設定で、
以前はこのcaの設定が無くても動いてたのに、
iOS8以降のサファリでは動かない場合あり。
特にsquidなどのプロキシ経由など。

AWS EC2 t2インスタンスの実力


AWSに新しく追加されたEC2インスタンスt2を試してみた。

元々、2台のm1.smallをELB配下で運用していたところに、hvm仕様にイメージを移行したものをt2.smallで起動しELBに追加した結果。

下記グラフのようになった。
これは費用対効果かなり高いんじゃないでしょうか!

CPU利用率

グラフの水色とオレンジがm1.smallで、緑がt2.smallですが格段に良いのがわかります。

hvm仕様にイメージを変更するのは面倒ですが、それをやるだけの価値は十分あると思います。

(動作しているものはAmazon Linux上でApache+PHPでのアプリケーション、DBは別サーバ)

Amazon LinuxにRuby2.0とRails4.0をインストール


AWS EC2(Amazon Linux)にRuby2.0とRails4.0をインストール

環境

AWS EC2
OS: Amazon Linux (2013.09-release)
Ruby: 2.0.0p247
Rails: 4.0.0

手順

  1. 必要なパッケージのインストール
    sudo yum -y install gcc
    sudo yum -y install gcc-c++
    sudo yum -y install zlib-devel
    sudo yum -y install httpd-devel
    sudo yum -y install curl-devel
    sudo yum -y install sqlite-devel
  2. ruby2.0.0のインストール
    mkdir src
    cd src
    wget http://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz
    tar xzf  ruby-2.0.0-p247.tar.gz
    cd ruby-2.0.0-p247
    ./configure
    make
    make test
    sudo su -
    cd /home/user/src/
    make install
  3. OpenSSLモジュールのインストール
    cd ext/openssl
    ./configure
    make
    make install
  4. railsインストール
    gem install bundler
    gem install rdoc
    gem install rails
    rails -v
  5. sqlliteインストール
    gem install sqlite3
  6. Unicornインストール
    gem install unicorn
  7. nginxインストール
    sudo yum -y install nginx
    sudo /etc/init.d/nginx start
  8. nginx設定編集中