さくらの VPS で動かしている Rails アプリをバージョンアップした、その記録。
今回のバージョンアップでは、Rails のバージョンアップしないけど、データベースの変更をするので若干緊張しながらやった。
まずは、アプリを停止する。
で、万が一のためにデータベースのバックアップ。
[takatoh@tk2-254-36564 ~]$ mysqldump -u lathercraft -p lathercraft_production > lcp-20180502.sql
次に、アプリのディレクトリに移動して git fetch
、git merge origin/master
。
[takatoh@tk2-254-36564 ~]$ cd /var/www/lathercraft [takatoh@tk2-254-36564 lathercraft]$ sudo git fetch Password: remote: Counting objects: 126, done. remote: Compressing objects: 100% (126/126), done. remote: Total 126 (delta 95), reused 0 (delta 0) Receiving objects: 100% (126/126), 11.91 KiB | 6 KiB/s, done. Resolving deltas: 100% (95/95), completed with 21 local objects. From https://bitbucket.org/takatoh/lathercraft 14f1281..7aecdc3 master -> origin/master * [new branch] support-release-datetime -> origin/support-release-datetime * [new tag] v2.0.1 -> v2.0.1 From https://bitbucket.org/takatoh/lathercraft * [new tag] v2.0.0 -> v2.0.0 [takatoh@tk2-254-36564 lathercraft]$ sudo git merge origin/master Auto-merging .gitignore Auto-merging db/schema.rb CONFLICT (content): Merge conflict in db/schema.rb Automatic merge failed; fix conflicts and then commit the result.
あれ、db/schema.rb がコンフリクトした?なんでだ?
中身を見てみると、文字列のカラムに limit:255
がついている。このファイルはデータベースをマイグレートすれば更新されるはずなので、元に戻しておく。
[takatoh@tk2-254-36564 lathercraft]$ sudo vim db/schema.rb
修正が済んだら commit
。
[takatoh@tk2-254-36564 lathercraft]$ sudo git add db/schema.rb [takatoh@tk2-254-36564 lathercraft]$ sudo git commit -m "merge branch origin/master."
さて、いよいよデータベースのマイグレーション。
[takatoh@tk2-254-36564 lathercraft]$ sudo -s [root@tk2-254-36564 lathercraft]# export SECRET_KEY_BASE=bundle exec rake secret [root@tk2-254-36564 lathercraft]# bundle exec rake db:migrate RAILS_ENV=production DEPRECATION WARNING: The configuration option `config.serve_static_assets` has been renamed to `config.serve_static_files` to clarify its role (it merely enables serving everything in the `public` folder and is unrelated to the asset pipeline). The `serve_static_assets` alias will be removed in Rails 5.0. Please migrate your configuration files accordingly. (called from block inat /var/www/lathercraft/config/environments/production.rb:23) == 20180430070208 AddReleaseDatetimeToItems: migrating ======================== -- add_column(:items, :release_datetime, :datetime) -> 1.5631s == 20180430070208 AddReleaseDatetimeToItems: migrated (1.5635s) ===============
なんか警告が出てるけどまあいいや。次に進もう。
アプリを production 環境で立ち上げてみる。
[root@tk2-254-36564 lathercraft]# export SECRET_KEY_BASE=bundle exec rake secret [root@tk2-254-36564 lathercraft]# bundle exec rake db:migrate RAILS_ENV=production
無事、立ち上がった。けど、あるページではエラーになってしまった。開発環境で修正して本番環境に反映すると、直った。多分これで大丈夫。
最後に本番用に立ち上げて完了。
[追記]
マイグレーションのところで出た警告だけど、ググってみたら config.serve_static_assets
という設定項目が config.serve_static_files
に名前変更されている、ということが分かった。なので、その通りに修正して完了。