【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