March 5, 2020

Laravel5.5から6.xへアップグレード

あえてLaravel5.5のまま残してたプロジェクトを6.xに上げる。

先に結論。
LTSからLTSなのでやる人多そうだけど単純なプロジェクト以外ではやめたほうがいい。
今回のも1画面しかない単機能だからできたけど修正箇所が多くなると辛い。
LTS使うなら先のバージョンの変更点も追いつつヘルパー削除みたいなやばい変更が入ったらLTS使ってる段階から準備しておく。
それやるなら結局最新バージョン使っても同じなので開発が続いてるなら常に最新バージョン使うのが良い。

見る所

差分
https://github.com/laravel/laravel/compare/5.5...6.x

6.xブランチからzipでダウンロード。
https://github.com/laravel/laravel/tree/6.x

後は各バージョンのドキュメント。5.6,5.7,5.8,6.xと4バージョンも飛ばしたら通常規模のプロジェクトならかなり大変。

config

基本的には差分見ながら書き換えていくしかないけど5.5からあまり変更してないならダウンロードしておいた6.xのファイルでそのまま上書きしてもいい。
特にconfigは多すぎるので上書きして再設定したほうが簡単。

フロント

5.5の頃はまだLaravel mix 1.0。5.5使いつつフロントだけ最新にすることはできたけどこっちも放置してた場合は上げる。
既存プロジェクトにはlaravel/uiの分離は関係ないけどapp.jsなどの変更点を探すならこっちを見る。
https://github.com/laravel/ui
ui2.xはLaravel7用。6用は1.x
https://github.com/laravel/ui/tree/1.x

初回デプロイ時のエラー

bootstrap/cache以下のキャッシュが残っててエラーが出たら削除すれば直る。artisanコマンドで削除しようとしてもコマンド実行前にエラーになることもあるのでこれは手動で削除。

viewのキャッシュに6.xで削除されたヘルパーが残ってるとエラーなのでview:clearで削除。
これはコマンドで削除できる。
この辺りはデプロイの度に毎回自動で実行している。

    php artisan config:cache
    php artisan route:cache
    php artisan view:cache

あくまでも本番環境へのデプロイ時なので開発環境ではキャッシュコマンドは一切使わない。
誰が騙してるのか知らないけどなぜか開発環境でconfig:cacheしてる人がいなくならない。
デプロイ時に自動で実行するので手動で実行することはない。

終わり

このプロジェクトはまた6.xのまま運用。
LTSと言っても何もメンテナンスしなくていいわけではなく毎日自動composer updateは続ける。
運用が続いてたら、次のLTSの次のバージョンが出た頃にまたバージョンアップ作業。

Laravel5.5のサポート終了は2020年8月30日。

© kawax