2016年7月15日金曜日

Fabricを使って、簡単にELB+EC2環境にローリングデプロイ

Python製のプロビジョニングツールであるFabricを使って、ELB + EC2環境にアプリケーションをローリングデプロイします。
ELBから1台ずつEC2インスタンスを切り離して、アプリケーションをデプロイしてリスタート、終わったら、ELBにEC2インスタンスを追加します。
なぜ、Fabricを使ったかというと、ほかのデプロイ自動化ツール、たとえばCapistranoやAnsibleだと、ELBのAPIを叩く処理を書くのがちょっと面倒そうだったからです。Fabricなら使いやすそうなPythonライブラリがあり、簡潔に書けるな、と考えたからです。
以下のFabricスクリプトは、ロールバックやヘルスチェックなどの処理を書いていません。もうちょっと高級なことがしたかったら、他の方法を考えたりするといいと思います。
※ ELBは、Classic load balancerを使っています。

Fabricのインストール
環境:Mac OS X
$ sudo easy_install fabric
$ sudo pip install boto
$ fab --version
Fabric 1.11.1
Paramiko 1.17.1
Fabricスクリプト
実行結果

Top image from msburrows roll

2016年7月1日金曜日

HTTPヘッダーからPhusion Passengerのバージョンを隠す

Chrome DevToolsで自分のサイトを見ていたところ、Sinatraで作ったウェブアプリのHTTPヘッダーに、Phusion Passengerのバージョン情報が出ていて、気になってしまったので。消してみました。
こんな感じです。
Server:nginx + Phusion Passenger 5.0.29
X-Powered-By:Phusion Passenger 5.0.29
nginxの設定に以下の記述を入れてPhusion Passengerのバージョン情報を消しました。
情報を上書きすれば良いです。
server {
    listen 80;
    server_name rapper.hitokoto.co;

    more_set_headers 'Server: nginx';
    more_set_headers 'X-Powered-By';

top image from Saïda ...hide...