WSL上に構築したLAMPにLaravelをインストールする（2018秋）


前回構築したWSL/LAMP環境にLaravelをインストールし、動作させてみましょう。
前回の記事はこちら：[WSLにLAMPを構築する（2018秋）](https://qiita.com/syoutin/items/60c54b7767a49c1e3e51)


# 環境

| もの | バージョン |
|:-:|:-:|
|ホストOS | Windows10 Home <br> バージョン:1803 <br> OSビルド:17134.320 |
|WSL OS | ubuntu 18.04 LTS |
| (L)AMP | apache2：Apache/2.4.29 (Ubuntu) <br> MySQL：mysql Ver 8.0.12 <br> php：PHP 7.2.10-0ubuntu0.18.04.1 |
| laravel | 5.5(LTS) |

laravelは最新の5.6/5.7がありますが、今回はLTSである5.5を採用します。

# 下準備

laravel5.5をインストールするためには、以下のものが必要です。

* php >=7.0.0
* OpenSSL PHP拡張
* PDO PHP拡張
* Mbstring PHP拡張
* Tokenizer PHP拡張
* XML PHP拡張

参考：https://readouble.com/laravel/5.5/ja/installation.html

WSL（ubuntu）にインストールしていきましょう。現在インストールされているphp関連モジュールは以下の通りです。

```
 # dpkg -l | grep php
ii  libapache2-mod-php             1:7.2+60ubuntu1                     all          server-side, HTML-embedded scripting language (Apache 2 module) (default)
ii  libapache2-mod-php7.2          7.2.10-0ubuntu0.18.04.1             amd64        server-side, HTML-embedded scripting language (Apache 2 module)
ii  php                            1:7.2+60ubuntu1                     all          server-side, HTML-embedded scripting language (default)
ii  php-common                     1:60ubuntu1                         all          Common files for PHP packages
ii  php-mysql                      1:7.2+60ubuntu1                     all          MySQL module for PHP [default]
ii  php7.2                         7.2.10-0ubuntu0.18.04.1             all          server-side, HTML-embedded scripting language (metapackage)
ii  php7.2-cli                     7.2.10-0ubuntu0.18.04.1             amd64        command-line interpreter for the PHP scripting language
ii  php7.2-common                  7.2.10-0ubuntu0.18.04.1             amd64        documentation, examples and common module for PHP
ii  php7.2-json                    7.2.10-0ubuntu0.18.04.1             amd64        JSON module for PHP
ii  php7.2-mysql                   7.2.10-0ubuntu0.18.04.1             amd64        MySQL module for PHP
ii  php7.2-opcache                 7.2.10-0ubuntu0.18.04.1             amd64        Zend OpCache module for PHP
ii  php7.2-readline                7.2.10-0ubuntu0.18.04.1             amd64        readline module for PHP

 # php -m | egrep "openssl|mysqlnd|mbstring|tokenizer|xml"
libxml
mysqlnd
openssl
tokenizer
```

mbstring以外は揃ってそうなので、php-mbstringを追加しましょう。

```
 # apt install php-mbstring
```

もっかい確認。

```
 # php -m | egrep "openssl|mysqlnd|mbstring|tokenizer|xml"
libxml
mbstring
mysqlnd
openssl
```

大丈夫かな。まぁだめならあとで戻ってきましょう。

続いて、laravelをインストールするためのcomposerを用意します。
参考：https://getcomposer.org/download/

```
cd /usr/local/bin
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '93b54496392c062774670ac18b134c3b3a95e5a5e5c8f1a9f115f203b75bf9a129d5daa8ba6a13e2cc8a1da0806388a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
ln -s /usr/local/bin/composer.phar /usr/local/bin/composer
```

パスを通すため、最初に/usr/local/binにcdしています。
コマンド実行の際に composer.phar はいちいち叩くのが面倒なので、composerのみで実行できるようにしています。

# laravelインストール
準備は整いました。いよいよlaravelをインストールします。
インストールする対象のディレクトリに移動し、手順に従いインストールを進めます。
参考：https://readouble.com/laravel/5.5/ja/installation.html

```
# cd /mnt/d/d_ExtDisk/dev1
# composer global require "laravel/installer"
```

以下のようなエラーになりました。zipもいるじゃねーか。
![composer-error.png](https://qiita-image-store.s3.amazonaws.com/0/51774/ef274187-5531-5c18-1322-80184c13f28e.png)

rootでcomposer叩くなって怒られてますが、今回は全部rootでやるので無視します。

```
# apt install php-zip
 → php-zipがインストールされる
# php -m | grep zip
zip
```

composer 再チャレンジ。

```
 # composer global require "laravel/installer"
```
 → 無事インストールされました。
そのまま、laravelをインストールします。


![composer-error2.png](https://qiita-image-store.s3.amazonaws.com/0/51774/40f044e3-783f-ff7a-0344-6b7f872e824f.png)
また怒られた。phpunitのためにphp-domが必要らしい。

```
# apt install php-dom
# php -m | grep dom
dom
```

リトライ！
 → 無事 blog/ ディレクトリが作成されて、laravel5.5.x（今回は5.5.28)がインストールされました。

テストサーバを起動し、接続できることを確認します。

```
# cd blog
# php artisan serve &
Laravel development server started: <http://127.0.0.1:8000>
```

WEBブラウザでアクセス
![laravel.png](https://qiita-image-store.s3.amazonaws.com/0/51774/f746e9d9-97e6-5a65-80ba-2fa83078d435.png)

localhost:8000でlaravelのスタート画面が表示され、CLIにはアクセスログが標準出力へ流れることを確認できたら、動作確認OKです。ここまできたら、あとは[laravel本](https://www.amazon.co.jp/dp/4802611846/)を購入してガシガシ勉強＆開発していきましょう。

# Todo

* phpのテストサーバではなくapacheで動作させる
* https化する