Railsプロジェクトのアップデート手順のメモ
社内サーバーで動いてるRailsプロジェクトをバージョンアップさせるときにやったコトのメモメモ。
今回のサーバー(そろそろ変えたい気も・・・)
- CentOS5.4
- Passenger
- Apache
手順
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は、実行中のプロセスを表示させるんだそうです。んで、パイプしてgrepでhttpdを絞り込んで。
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