14Room

みんな泣きながらオトナになったんだ。

rbenvでrubyのバージョン管理をする。

sudo update-alternatives --config editor
sudo visudo -f /etc/sudoers.d/00_base

下記を追記

Defaults !secure_path
Defaults env_keep += "PATH RBENV_ROOT"

環境変数設定

export RBENV_ROOT=/usr/local/rbenv
export PATH=${RBENV_ROOT}/bin:${PATH}

rbenv本体インストール

sudo git clone git://github.com/sstephenson/rbenv.git ${RBENV_ROOT}
sudo git clone git://github.com/sstephenson/ruby-build.git ${RBENV_ROOT}/plugins/ruby-build
sudo rbenv init -

シェル設定

bash -c 'cat <<\__EOT__ >> ~/.profile
export RBENV_ROOT="/usr/local/rbenv"
export PATH="${RBENV_ROOT}/bin:${PATH}"
eval "$(rbenv init -)"
__EOT__'

シェル設定反映 exec ${SHELL} -l いったんログアウト、再ログイン

rbenv install -l
sudo rbenv install 2.1.3
sudo rbenv global 2.1.3
sudo rbenv exec gem install bundler
cd /var/www/taptrip2/current
2.1.3

Gemとかインストール&バージョン変更反映

rbenv exec bundle install
sudo rbenv rehash

SSL証明書の期限を調べてみよう

概要

ブラウザで確認する方法もありますが、ここではコマンドで確認する方法を述べます。 コマンド実行

-connect で調査したいFQDNを指定します。

openssl s_client -connect nativeapi.naked.com:443 < /dev/null 2> /dev/null | openssl x509 -text | grep Not

結果

BeforeからAfterまでの期間が証明書が有効な期間です。

            Not Before: Jan 18 17:17:32 2015 GMT
            Not After : Apr 22 08:27:53 2017 GMT

DBバックアップスクリプト(AWS版)

概要

mysqlサーバのデータを定期的にスナップショットでバックアップしていました。

シェルスクリプト

バックアップ

#!/bin/sh

date=`date '+%Y%m%d_%s'`
DESCRIPTION="DB_backup_$date"
VOLID="vol-783ac837"

/usr/local/bin/aws ec2 create-snapshot --volume-id $VOLID --description "$DESCRIPTION"

古いバックアップを消す

#!/bin/bash

date=`date --date="7 day ago" +%Y%m%d`
DESCRIPTION="DB_backup_$date"

snap=`/usr/local/bin/aws ec2 describe-snapshots --filters Name=description,Values=$DESCRIPTION"*" --query Snapshots[*].SnapshotId --output text`
VAR="$snap"
ary=($VAR)

for i in "${ary[@]}"
do
/usr/local/bin/aws ec2 delete-snapshot --snapshot-id $i
done
おまけ

crontabで下記のように実行されてました。 35 * * * * /root/work/db_snapshot.sh >>/tmp/analog.log 2>>/tmp/analog-err.log 25 14 * * * /root/work/delete_snapshot.sh >>/tmp/analog.log 2>>/tmp/analog-err.log

HTTP/HTTPS balancerに証明書を設定する

概要

GCPでもHTTP/HTTPS balancerにSSL証明書を持たせアクセラレータのような使い方ができます。 本投稿ではHTTP/HTTPS balancerに証明書を設定する方法を述べます。

設定方法

  • 「HTTP load balancing」で設定したいバランサーをクリックして選択。
  • 「Incoming traffic」の「Add a global forwarding rule」をクリック
  • 「Protocol」でHTTPSを選択して、「Certificate」で「Create a new certificate」をクリックする。

f:id:naked123:20151211144448p:plain

  • 下記のダイアログが表示されるので、必要情報を入力して保存 f:id:naked123:20151211144509p:plain

証明書をパスワード付きで作ってELBに怒られたときの対応方法

ELB用で使うSSL証明書をうっかりパスワード付きで作ってしまうと、いざuploadする段階で、

Error: Private key must not be encrypted with a passphrase.

と言われて拒否されます。_ノ乙(、ン、)_

そこでPrivate Keyを何らかのテキストファイルに保存して、

openssl rsa -in <Private Key> -out moge.key

というコマンドを実行してパスワードを外して下さい。 moge.keyにパスフレーズのないPrivate Keyが出力されますので、この内容をコピペして使いましょう。

消費税が海の向こうまで追って来た。

ちょっと前の話になりますが、2015/10のAWS料金を確認したところ、いつもよりも明らかに高い・・・。 慌ててサポートに問い合わせると以下のようなお返事が来ました。

2015年税制改正により、国境を越えた役務の提供に係る消費税の課税の見直しが行われました。

これに伴い、日本の居住者であるお客様が日本国外のリージョンを使用された場合も、新たに消費税の課税対象となりました。
具体的には、2015年10月より東京リージョン以外の全リージョンのご利用サービスが課税対象となりました。
その結果、2015年10月より消費税額が増えた形となります。

うーむ。なるほど。 サービス提供対象が日本ではないので、ヴァージニアにインスタンスを立てていたのですが、これでtax的なメリットは無くなっちゃいましたね。(それでも利用料金は2割ほどお得です)

それにしても8%って結構大きいですよね。。。

ELB等で使うSSL証明書を消してみよう

ELB等で使う証明書はデフォルトで10個しか入れておけません。 期限切れなど必要の無くなった証明書は消しましょう。

確認

今格納されている証明書一覧を表示する

aws iam list-server-certificates

結果がjson形式で表示される。

{
    "ServerCertificateMetadataList": [
        {
            "ServerCertificateId": "ASCAII*************", 
            "ServerCertificateName": "api.naked.com", 
            "Expiration": "2015-02-28T04:02:30Z", 
            "Path": "/", 
            "Arn": "arn:aws:iam::123456789:server-certificate/api.naked.com", 
            "UploadDate": "2014-03-12T06:40:10Z"
        }, 
        {
            "ServerCertificateId": "ASCAJI*************", 
            "ServerCertificateName": "www.naked.com", 
            "Expiration": "2015-03-13T14:58:03Z", 
            "Path": "/", 
            "Arn": "arn:aws:iam::123456789:server-certificate/www.naked.com", 
            "UploadDate": "2014-03-27T09:13:34Z"
        }
}

消す

証明書を消す

aws iam delete-server-certificate --server-certificate-name SSL証明書の名称

(削除したいSSL証明書の「ServerCertificateName」を入力