0
0

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 5 years have passed since last update.

Laravel 開発環境の構築 ( VirtualBox + Vagrant + Homestead + Composer + Eclipse ) 第2回

Last updated at Posted at 2017-12-02

はじめに

Laravel 公式で提供されている Homestead と Vagrant box を利用し, 1 つの仮想マシン上に 3 つの Laravel の開発環境 ( PHP5.6 + PHP7.0 + PHP7.1 ) を構築する手順をまとめています。

今回は, Homestead6 から追加された [ PHPバージョンの切替機能 ] を利用して環境を構築していきます。
引用 : Laravel 5.5 Laravel Homestead

複数のPHPバージョン
Homestead6から、同一仮想マシン上での複数PHPバージョンをサポートを開始しました。Homestead.yamlファイルで、特定のサイトでどのバージョンのPHPを使用するのかを指定できます。利用できるPHPバージョンは、"5.6"、"7.0"、"7.1"、"7.2"です。この機能は、Nginx使用時のみ利用できます。

前提条件

なお, この記事は [ Laravel 開発環境の構築 ( VirtualBox + Vagrant + Homestead + Composer + Eclipse ) 第1回 ] の 前編後編 が前提条件となっています。これらの記事をご覧になっていない方は, 事前にご確認ください。

Laravel 開発環境の構築 ( PHP5.6 + PHP7.0 + PHP7.1 )

ここでは, サブドメインを使用して PHP バージョンの異なる複数プロジェクトに対応する方法を紹介します。

まずは仮想マシンを起動しましょう。ターミナル ( Git Bash ) で Vagrantfile があるディレクトリ ( 今回の場合は [ Homestead ] ) に移動してから下記のコマンドを実行します。

ターミナル
slangsoft@win7 MINGW64 ~
$ cd ~/LaravelProjects/Homestead/  <-- 入力 : Vagrantfile があるディレクトリに移動

slangsoft@win7 MINGW64 ~/LaravelProjects/Homestead (master)
$ vagrant up  <-- 入力 : 仮想マシンの起動

次に, 仮想マシンに SSH でログインし, Composer を利用して Laravel ファイルをダウンロードしていくのですが, ここで注意が必要です。Laravel はバージョンによってシステム要件が異なります。

Laravel のシステム要件

Laravel PHP Mcrypt OpenSSL PDO Mbstring Tokenizer XML
5.0 >= 5.4.0 PHP拡張 PHP拡張 PHP拡張 PHP拡張 - -
5.1 >= 5.5.9 - PHP拡張 PHP拡張 PHP拡張 PHP拡張 -
5.2 >= 5.5.9 - PHP拡張 PHP拡張 PHP拡張 PHP拡張 -
5.3 >= 5.6.4 - PHP拡張 PHP拡張 PHP拡張 PHP拡張 PHP拡張
5.4 >= 5.6.4 - PHP拡張 PHP拡張 PHP拡張 PHP拡張 PHP拡張
5.5 >= 7.0.0 - PHP拡張 PHP拡張 PHP拡張 PHP拡張 PHP拡張

前回の記事 で [ TestProject ] と [ TestProject2 ] は作成済みなので, 今回は PHP5.6.32 を使いたいという想定で, Laravel5.2 を使って [ TestProject3 ] を追加します。

構築するプロジェクトの構成

プロジェクト名 Laravel Ver PHP アクセス用URI
TestProject 5.5 7.1 http://homestead.test/
TestProject2 5.5 7.0 http://myapp.homestead.test/
TestProject3 5.2 5.6 http://php65.homestead.test/

それでは早速, [ TestProject3 ] ディレクトリに Laravel5.2 をダウンロードします。
既に仮想マシンは立ち上げましたので, 仮想マシンに SSH でログインし, 以下のコマンドを実行します。

RLogin
vagrant@homestead:~$ cd ./code  <-- 入力 : [ code ] ディレクトリに移動
vagrant@homestead:~/code$ composer create-project laravel/laravel --prefer-dist TestProject3 5.2  <-- 入力 : [ TestProject3 ] ディレクトリに Laravel5.2 をダウンロード

上記コマンドの実行でエラーが出た場合
2017年12月02日現在, 上記コマンドの実行で, 必ず下記のようなエラーが発生します。

エラー内容
Script php artisan clear-compiled handling the pre-update-cmd event returned with error code 255

原因は公式のバグなので, 以下のように対処してください。

まず, Windows7 のエクスプローラーを使用して下記ディレクトリを開き, [ TestProject3 ] ディレクトリが作成されていることを確認してください。

ディレクトリ
C:\Users\ユーザー名\LaravelProjects\TestProject3

このディレクトリ配下にある [ composer.json ] をテキストエディタで開き, 以下の修正を行います。

修正方法

composer.jsonより抜粋
    "scripts": {
        "post-root-package-install": [
            "php -r \"copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ],
        "post-install-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "pre-update-cmd": [                <-- 削除
            "php artisan clear-compiled"   <-- 削除
        ],                                 <-- 削除
        "post-update-cmd": [
            "php artisan clear-compiled",  <-- 追加
            "php artisan optimize"
        ]
    },

修正完了後

composer.jsonより抜粋
    "scripts": {
        "post-root-package-install": [
            "php -r \"copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ],
        "post-install-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ]
    },

修正が完了したら, 仮想マシン上で [ TestProject3 ] ディレクトリへ移動し, 以下のコマンドを実行します。

RLogin
vagrant@homestead:~/code$ cd ./TestProject3              <-- 入力 : [ TestProject3 ] ディレクトリへ移動
vagrant@homestead:~/code/TestProject3$ composer install  <-- 入力

これで無事に Laravel5.2 のインストール ( [ TestProject3 ] プロジェクトの作成 ) は完了です。

次に, [ Homestead.yaml ] の [ sites: ] に設定を追加します。

修正するファイル
C:\Users\ユーザー名\LaravelProjects\Homestead.yaml
Homestead.yamlから抜粋
sites:
    - map: homestead.test
      to: /home/vagrant/code/TestProject/public
      php: "7.1"                                  <-- この行を追加
    - map: myapp.homestead.test
      to: /home/vagrant/code/TestProject2/public
      php: "7.0"                                  <-- この行を追加
    - map: php56.homestead.test                   <-- この行を追加
      to: /home/vagrant/code/TestProject3/public  <-- この行を追加
      php: "5.6"                                  <-- この行を追加

設定を追加したら, その設定内容を再読み込みさせる必要があります。ターミナル ( Git Bash ) で Vagrantfile があるディレクトリ ( 今回の場合は [ Homestead ] ) に移動してから下記のコマンドを実行します。

ターミナル
slangsoft@win7 MINGW64 ~
$ cd ~/LaravelProjects/Homestead/  <-- 入力 : Vagrantfile があるディレクトリに移動

slangsoft@win7 MINGW64 ~/LaravelProjects/Homestead (master)
$ vagrant provision  <-- 入力 : 設定ファイルの再読み込み

続けて, hosts ファイルに追加したサイトの設定を追加します。

メモ帳を管理者権限で起動します。
[ ファイル(F) ] → [ 開く(O)... ] を実行し, [ ファイル名(N): ] 欄に下記のファイル名を入力して [ 開く(O) ] ボタンをクリックします。

hostsファイル名
C:\Windows\System32\drivers\etc\hosts

hosts ファイルの最終行に下記を追記し, 上書き保存してメモ帳を閉じます。

hostsファイルに追加する設定
192.168.10.10 homestead.test
192.168.10.10 myapp.homestead.test
192.168.10.10 php56.homestead.test  <-- この行を追加

今度はブラウザから [ http://php56.homestead.test ] にアクセスしてみてください。下図のように表示されれは成功です。
LaravelWebPage_01.png

ただ, これでは意図したとおりに PHP5.6 で動作しているかが判断できませんので, アクセスした時に PHP のバージョンを表示するように内容を変更してみましょう。

Windows7 のエクスプローラーを使用して下記ディレクトリを開き, その中にあるwelcome.blade.php をテキストエディタで開きます。

ディレクトリ
C:\Users\[ユーザー名]\LaravelProjects\TestProject3\resources\views

PHP のバージョンを表示させるために, 以下のように修正します。

[ TestProject3 ] の修正方法

welcome.blade.phpより抜粋
<body>
    <div class="container">
        <div class="content">
            <div class="title">Laravel 5</div>
            <div><?php echo 'Current PHP version: ' . phpversion(); ?></div>  <-- この行を追加
        </div>
    </div>
</body>

同様の修正を, [ TestProject ] と [ TestProject2 ] にも行ってください。

[ TestProject ] と [ TestProject2 ] の修正方法

welcome.blade.phpより抜粋
<body>
    <div class="flex-center position-ref full-height">
        @if (Route::has('login'))
            <div class="top-right links">
                @auth
                    <a href="{{ url('/home') }}">Home</a>
                @else
                    <a href="{{ route('login') }}">Login</a>
                    <a href="{{ route('register') }}">Register</a>
                @endauth
            </div>
        @endif

        <div class="content">
            <div class="title m-b-md">
                Laravel
            </div>
            <div><?php echo 'Current PHP version: ' . phpversion(); ?></div>  <-- この行を追加

            <div class="links">
                <a href="https://laravel.com/docs">Documentation</a>
                <a href="https://laracasts.com">Laracasts</a>
                <a href="https://laravel-news.com">News</a>
                <a href="https://forge.laravel.com">Forge</a>
                <a href="https://github.com/laravel/laravel">GitHub</a>
            </div>
        </div>
    </div>
</body>

ここまでできたら, それぞれのページを表示してみます。

http://homestead.test/
LaravelWebPage_02.png

http://myapp.homestead.test/
LaravelWebPage_03.png

http://php56.homestead.test/
LaravelWebPage_04.png

期待通り, PHP7.1 / PHP7.0 / PHP5.6 が切り替わっていることが確認でしました。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?