読者です 読者をやめる 読者になる 読者になる

好奇心 x 探求心 = やじうまゴコロ

だって気になるんだから仕方ないじゃない!?

AWSのコストを少しでも減らすために、インスタンスをタスクで起動しようとしたらApacheが起動していなかった

仕事 仕事-AWS

AWSのEC2なんかは使った時間だけ請求される従量課金制なので、一日の終わりにインスタンスを停止して、会社が始まる頃にインスタンスを起動させるのが、大した金額ではないけど良いかなと思っています。
もちろんインスタンスを起動・停止させる監視サーバは24時間動かしておく必要がありますが、EC2の一番低スペックなインスタンスを用意すれば良いでしょう。
http://aws.amazon.com/jp/

朝画面を見てみたら動いていなかった

毎日23時にインスタンスを停止させ、朝8時に再びインスタンスを起動するように監視サーバで簡単なシェルスクリプトをタスク実行するようにしましたが、翌朝会社に来てみると画面が開かなくて焦りました。
[インスタンス停止]
aws ec2 stop-instances --instance-ids インスタンスID(i-XXXXXXXX)
[インスタンス起動]
aws ec2 start-instances --instance-ids インスタンスID(i-XXXXXXXX)

SSHで接続して確認してみるとApacheが起動途中で止まっていました。

原因はSSLパスフレーズ

SSLの鍵をパスフレーズありで作成していたので起動時にそのパスフレーズを要求されてとまっていました。
今回は対応としてこのパスフレーズの要求に自動応答するスクリプトを作成することにしました。

自動応答用で作成したスクリプト

/etc/ssl/certsディレクトリにpass_phrase.shというshellスクリプトを作成します。
vi /etc/ssl/certs/pass_phrase.sh

パスフレーズには実際のパスフレーズを書いてください

実行権限を付与します。
chmod 500 /etc/ssl/certs/pass_phrase.sh

SSLのconfigを変更します。
# vi /etc/httpd/conf.d/ssl.conf
SSLPassPhraseDialogを探して、builtinとなっている行をコメントアウトして、
「SSLPassPhraseDialog exec:/etc/ssl/certs/pass_phrase.sh」を追加します。

念の為、apacheの再起動でパスフレーズが要求されないか確認します。
# service httpd restart

これで翌日からは出勤すればサーバが自動で起動していることでしょう。
これが面倒であればパスフレーズなしの鍵にしてしまうと言う方法もありますね。

Copyright© 好奇心 x 探求心 = やじうまゴコロ All Rights Reserved.