2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

一つのドメインでlaravel複数バージョンの動作確認方法

Last updated at Posted at 2020-01-09

自社ウェブアプリを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の DocumentRootDirectoryを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の設定も変更必要です。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?