Web + Life Hack

〜True But Useless〜

【Rails】【デプロイ】【初心者】先輩に「やるな!」と思われるために確認したいこと

みなさんはどのような構成でデプロイを行っているでしょうか?

現在、私が携わっているサービスはRailsを利用していることもあり、
CapstranoにてAWSのサーバー(インスタンスVPC)にデプロイを行っています。

その際に確認しておいた方が良いのでは?
(デプロイが中途半端で終わってしまうとソース反映が完了していなかったり、
何らかの原因でサービス停止などが発生します。)

と思ったので、今回は同様の構成でサービスを運用されている方向けに記事を
書きたいと思います。



1・デプロイ対象のサーバーでSSH finger printを実施済みか?
デプロイ対象のサーバーは「deploy.rb」へ対象サーバーを明記する必要がありその情報を元にcapstranoはデプロイを行うのですが、
「新規にサーバーを立ち上げた」場合、
SSH finger printが必要で、それをせずに、capstranoでデプロイを実施してしまうと、
SSH finger printが行われていないためこけてしまいます。
なのでデプロイをする前に

ssh -p 12022 login_user@hostname.ne.jp

などしてSSH finger printが実施されていることを確認する。
*login_user:ログインするユーザー
hotname.ne.jp:対象サーバーのホスト名



2・Known Hostsを更新したか?上記1に近いのですが、「停止中サーバーを再起動した」場合、
known_hostsに記載されたsshキーと一致せず、

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

というエラーが出てしまう場合があります。
このエラーの解除方法としては、
.ssh配下のknown_hostファイルを削除する方法などありますが、
その場合だと、他のサーバーにも影響し、再度、各サーバーにログインしてSSH finger printを行う必要があります。
そのため、再起動したサーバーを知っている場合は、

 cd ~/.ssh
 vi known_hosts

を実行し、対象ホスト名とキーを検索してその箇所を削除する方が良いかと思います


3・deploy.rbの「:remote_cache」がコメントアウトされていないか?
「:remote_cache」がコメントアウトまたは、存在していないとサーバーに配置された
ソースが差分対象ではなく、「全対象」となってしまい、
その分のソース反映が発生します。
そのため大変、時間が掛かってしまいます。
なので

set :deploy_via, :remote_cache

上記コードがコメントアウトされていないまたは、存在することを確認してください。
*:deploy_via:デプロイ先に該当

これからデプロイをされる方に参考になれば幸いです。



参考サイト
http://bigchu.com/ssh-known_hosts.html
https://help.github.com/articles/deploying-with-capistrano