Railsプロジェクトのアップデート手順のメモ

社内サーバーで動いてるRailsプロジェクトをバージョンアップさせるときにやったコトのメモメモ。


今回のサーバー(そろそろ変えたい気も・・・)

手順

  • Railsデータの準備とサーバーへのコピー
  • サーバー内データのバックアップ
  • Railsデータの展開、上書き


Railsデータの準備とサーバーへのコピー
一応、gitで管理してるつもりなので、gitで圧縮ファイルを作る。
このとき、アーカイブしたいRailsプロジェクトのディレクトリにcdで入っておく。

$ git archive --format=tar master | gzip > ファイル名.tar.gz

format=tar は、zipもできるみたい。
ここでアーカイブされるのは、.gitignoreで指定されてるファイルと空ディレクトリ以外のもの。
圧縮ファイルの中を見るコマンド。

$ tar -tf ファイル名.tar.gz 

で、サーバーへはscpで送る。

$ scp ファイル名.tar.gz ログイン名@IPアドレス:ファイル名.tar.gz 

scp [送る元] [送り先] なんですね。間違えないように気をつけないと。


サーバー内データのバックアップ

  • mysqlのバックアップ

データベースはmysqlで、Railsはproduction環境にしてて、何て名前のdbだったか覚えてないので確認。
その前に、ユーザー:rootにならないと見えないみたいなので、注意。

# mysqlshow
+-------------------------+
|        Databases        |
+-------------------------+
| information_schema      |
| Railsプロジェクト名_development |
| Railsプロジェクト名_production  |
| mysql                   |
| test                    |
+-------------------------+

ということで、適当なファイル名.dumpという名前でバックアップ。

# mysqldump --opt Railsプロジェクト名_production > 適当なファイル名.dump
  • Railsデータのバックアップ

単純に、Railsプロジェクト丸ごと圧縮。
cdでRailsプロジェクトに入ってから、

# tar -zcvf /保存したいディレクトリ/適当なファイル名.tar.gz .

最後のドット、忘れそう。


Railsデータの展開、上書き
データを移してしまう前に、apacheを止める。

# apachectl stop

んで、止まったかどうか確認。

# ps aux|grep httpd

ps auxは、実行中のプロセスを表示させるんだそうです。んで、パイプしてgrephttpdを絞り込んで。
apacheを止める前と止めたあとで、表示されるのが変わるから、ま、それを見ればわかるかな。
今回は、データベースの追加・更新もするで、Railsプロジェクト/config/database.ymlをどこかにコピーしておく。
scpした圧縮ファイルを展開。

# tar -zxvf ファイル名.tar.gz 

コピーして退避してたdatabase.ymlも上書きして、production環境のdb:migrate

# RAILS_ENV=production rake db:migrate

追加したテーブルとかがちゃんと出来てるかどうか見てみる。

# ruby script/dbconsole production

最後に、apacheのスタート、忘れずに。

# apachectl start

おまけで、エラーが出てないかどうかちょっと見てみる。

# cat log/production.log 


これでアップデート一人で出来るねw