さくらのVPSで運用してたRailsのアプリだが、ほとんど放置状態になっているのにも関わらず月1000円ぐらい払い続けているのがもったいないのでherokuのフリープランに移管した。
つまずきつつ解決したことなどを健忘録的に書き残しておく。
Ruby や gem のバージョンアップ
Macの場合入れるだけで大体つまずく
次からはDocker使ったほうがええんじゃないかと思った。シンプルにググったらなんとかなるものが多いからがんばれ
一回 Gemfile.lock
を消して bundle install して一気に依存解決するという技があった
precompile
デプロイはGithubのリポジトリ指定するだけで簡単にできたがCSSがあたっていない。
precompileに設定が必要で、まず下記のgemをproductionに指定する。
gem 'rails_12factor'
あとは bundle exec rake assets:precompile
もしておく。
DBのインポート
DBはプラグインという形で提供されている。
PostgreSQLで問題ない場合はPostgresを使うのが無難っぽいが、MySQLを使いたかった。
heroku addons:create cleardb:ignite
というコマンドでインポートできると公式に紹介があるが、--fork
コマンドはMySQLサーバーがpublicにアクセスできるところにある場合に使えるみたいで、無効なURLを渡しても静かに失敗する。
JawsDBはフリーの制限が結構厳しくて、DBのサイズによってはINSERT時に勝手にRejectされたりするっぽい。
で結局いかの記事を参考にClearDBにmysqlコマンド使って書き込むってやつをやった。
JawsDBを例に書いてあるがClearDBでも同様にできる。ホスト名とかパスワードとかどこ?!ってなるがheroku config で出てきたmysql:の連結URLをバラせばいける。
heroku config -a [app-name]
最後にDATABASE_URLを指定するのだが、そのときはmysql:をmysql2:に変更する。
heroku config:set DATABASE_URL='mysql2://~~~' -a [app-name]
独自ドメインの設定
設定のDNS Targetからアドレスを持ってきて
CNAMEに設定すればOK
以下日記
Mac上でRailsアプリだが、Herokuにはかなりあっさりデプロイすることができた。一方さくらのVPSはというと、VPS自体に罪はないのだけどなんかいつからかnginxのソケットがなんとかで落ちてて、productionのlogはlogrotateしてなかったので20GBとかになってた ほかにも罠は色々ある気がするけど日常的にサーバー管理してないのでもう1〜2年置くとさっぱり思い出せんし再度デプロイするのにサクッとできる自信は全然ない。マネージする範囲は絞ったほうがいいな〜と再実感しました。おわり