自社ウェブアプリをlaravel5.4から6.2にバージョンアップするために、まずローカル環境でmasterからlaravel6のブランチを作り、laravel6のバージョンアップ作業を行いました。
デプロイする前の、本番と全く同じ設定のテストサーバで動作確認をする時、突然、現バージョンのバグ修正とテストが必要になることがあります。今回は、簡単に切り替える方法を2つ考えてまとめました。
現バージョ:laravel 5.4
新バージョン:laravel 6.2
webサーバ:apache2
##方法1
###考え方:プロジェクトフォルダーにあるlaravel 5.4のvendorを別の名前(例えばvendor_54)に変更してを残し、6.2のvendorをインストールします。動作用vendorは5.4と6.2のフォルダーを選んで切り替えます。
イメージは以下で示します:
laravel6.2をインストール前のプロジェクトフォルダー:
/var/www/html/{project name}/
|-vendor ⇐ laravel 5.4
インストール後:
/var/www/html/{project name}/
|-vendor ⇐ laravel 6
|-vendor_54 ⇐ laravel 5.4
###手順
まず、ブランチをlaravel6にcheckoutします。
cd /var/www/html/{project name}
git checkout laraval6
次に、このブランチのcomposer.lockはlaravel 6になっているため、5.4用vendorをvendor_54に変更してからlaravel 6をインストールします。
mv vendor vendor_54
composer install
composer install したらエラーが出ました。php7.2-bcmathをインストールしてうまく行きました。
sudo apt install php7.2-bcmath
composer install
composer dump-autoload
画面にアクセスすると、ログインエラーが出ましたので
php artisan config:clear
php artisan view:clear
で解消しました。
###サーバのlaravel version切り替え
【laravel 6 ➞ laravel 5.4】の場合
mv vendor vendor_6
mv vendor_54 vendor
php artisan config:clear
php artisan view:clear
git checkout laravel54
結果として⇓のようになります。
structure:
/var/www/html/{project name}/
|-vendor ⇐ laravel 5.4
|-vendor_6 ⇐ laravel 6
※もし画面にアクセスする時にエラーが出たら、cookiesを削除してからもう一回アクセスする必要があります。
【laravel 5 ➞ laravel 6】の場合
mv vendor vendor_54
mv vendor_6 vendor
php artisan config:clear
php artisan view:clear
git checkout laravel6
結果は次のようです⇓
structure:
/var/www/html/{project name}
/vendor ⇐ laravel 6
/vendor_54 ⇐ laravel 5.4
##方法2
###考え方:laravel5.4のプロジェクトフォルダーを残したまま、laravel 6.2のフォルダーを作成、apacheのconfファイルの切り替えによりバージョンを変える。
Structure:
/var/www/html/
|-{project name} laravel 5.4
|-{project2 name} laravel 6
###手順
laravel 5.4のプロジェクトフォルダーをコピーし、laravel 6用のフォルダー{project2 name}作成します。
cp -r /var/www/html/{project name} var/www/html/{project2 name}
{project2 name}のlaravel5.4用vendorを削除してからlaravel 6をインストール
cd /var/www/html/{project2 name}
git checkout laraval6
rm -r vendor
composer install
エラーだ出る場合は、方法1と同じように:
sudo apt install php7.2-bcmath
composer install
composer dump-autoload
最後に、キャッシュの削除を忘れずに!
php artisan view:clear
php artisan config:clear
webサーバのconf設定ファイルを追加
cd /etc/apache2/sites-available
cp project.com.conf project2.com.conf
project2.com.confの DocumentRootとDirectoryをproject name->project2 nameに変更
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName project.com
DocumentRoot /var/www/html/{project2 name}/public
usecanonicalname ON
<Directory "/var/www/html/{project2 name}/public">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
...
注意:ブラウザで同じドメインを使うので、ここのServerNameはproject.comのままです。
###サーバのlaravel version切り替え
【laravel 5 ➞ laravel 6】の場合は
sudo a2dissite project.com.conf
sudo a2ensite project2.com.conf
sudo systemctl reload apache2
git checkout laravel6
【laravel 6 ➞ laravel 5】の場合は
sudo a2dissite project2.com.conf
sudo a2ensite project.com.conf
sudo systemctl reload apache2
git checkout laravel54
※注意:方法2は、Cronやsupervisorを使う場合はcronとsupervisorの設定も変更必要です。