🆙

Homestead をアップデートしたい

2020/11/15に公開

アップデートの方法がどこにもないので、 box の最新版を追加し、 git のソースも最新化した (方法はこちら)。
ただし、この方法だとデータベースの中身が引き継がれない。
もし最新化する前であれば、普通に vagrant sshmysqldump するだけ。
ダンプの仕方を知りたい人は飛ばしてこちら

自分みたいにうっかり更新した後で、旧 Homestead のデータを取り出したいとなった人は次へ

データベース内容の引き継ぎ

  1. VirtualBox から旧 Homestead を直接起動
  2. GUI でログインする(login: vagrant, Password: vagrant)
  3. mysqldump する
  4. ホストのコンソールから scp で取り出す
  5. 旧 Homestead シャットダウンする
  6. 新 Homestead を vagrant up で起動する
  7. 先程のダンプファイルをゲストと共有しているフォルダに入れる
  8. vagrant ssh でゲストに入り、共有フォルダに移動する
  9. マイグレーションを実行する
  10. ダンプを mysql に流し込む

ダンプの仕方

データだけとる

大抵の人はマイグレーションを利用しているので、ダンプはデータだけ取れれば良いはず。
databasebk_databas.sql はそれぞれ自分に合ったものに変更する。

mysqldump -t `database_name` --ignore-table=migrations > bk_databas.sql

スキーマも一緒に

マイグレーションを利用していない場合は以下になる。
-t があるかどうかの違い。

mysqldump `database_name` > bk_databas.sql

最新化

  1. Homestead.yaml のバックアップ (例: cp Homestead.yaml Homestead.yaml.bk)
  2. vagrant box update
  3. git fetch
  4. git checkout release
  5. bash init.sh
  6. いくつか聞かれるが全部 y
  7. Homestead.yaml の差分を確認し、プロジェクトに必要なところを戻す
  8. デフォルトのPHPバージョンが変更になっている場合は、以前のやつに設定する (例: php72)

ライブラリとかは何もしなくてもそのまま引き継がれているはずなので、 composer とかは基本的にやらなくて良いはず。
自分のプロジェクトの PHP バージョンが分かっているのであれば、 Homestead.yamlsites ディレクティブで該当のプロジェクトに php: "7.2" と記載するのが良いと思う。

Discussion