WSL(Windows10)のUbuntuにLaravelインストール

Windows10ではWindows Subsystem for Linux(WSL)を利用することでLinuxをインストールすることができ、そのLinux上にLaravelをインストールすることが可能です。Windows10にインストールしたUbuntuでLaravelを動作させるためにはPHPのインストールなどいくつか設定があるので一つ一つ詳細に説明を行っていきます。Dockerを利用したLaravel Sailの設定ではないので注意してください。
Ubuntuのバージョンは、18.04。PHPのバージョンは7.2。Laravelバージョンは6.3と5.8の環境で行っています。
目次
Windows上へのLinuxのインストール
WSLを使ったUbuntuのインストールについては下記の文書を参考にしてください。
Ubuntuの設定
Ubuntuのインストール後、Ubuntuに接続していない場合は、Ubuntuに接続するためにコマンドプロンプトでwslコマンドを実行します。Ubuntuに接続後、cdコマンドでホームディレクトリに移動します。
PHPのインストール
WSLを使ってインストールしたUbuntuにはPHPがインストールされていないため、PHPのインストールを行う必要があります。また、Laravelのインストール要件が下記となっているので、モジュールに漏れがないようにPHPのインストールを行います。
- PHP >= 7.2.0
- BCMath PHP Extension
- Ctype PHP Extension
- JSON PHP Extension
- Mbstring PHP Extension
- OpenSSL PHP Extension
- PDO PHP Extension
- Tokenizer PHP Extension
- XML PHP Extension

PHPのバージョンは7.2をインストールしています。 Laravelの要件に必要なモジュールを一緒にインストールを行います。
インストール後はPHPのバージョンとインストールしたモジュールを確認します。
モジュールの確認はphp -mコマンドで行います。要件のモジュールがインストールされていることが確認できます。

Composerのインストール
LaravelをインストールするためにはComposerをインストールする必要があります。ComposerはPHPのパッケージ管理ツールで、Composerを使うとパッケージを効率よく管理することができます。
ComposerをインストールするためにComposerの公式ホームページにアクセスしてDownloadボタンをクリックします。

Composerをコマンドラインでインストールするため下記の赤枠にあるスクリプトをコピーします。

ターミナルにペーストして実行します。
実行すると実行したフォルダにcomposer.pharファイルが作成されます。
composer.phar -Vコマンドを実行してインストールしたComposerのバージョンを確認することができます。
composerコマンドを他のフォルダからも実行できるように/user/local/bin/フォルダの下に移動します。その際に名前はcomposerに変更します。

whichコマンドを実行してcomposerのパスが通っているか確認します。whichコマンド実行後にパスが表示されれたパスが通っているため、どこのフォルダからもcomposerコマンドを実行することができます。

zipコマンドのインストール
Laravelのインストールを行う際にunzipコマンドが必要になるため、zipコマンドのインストールを行います。インストール直後のUbuntuにはzipコマンドは入っていません。

Laravel6.xのインストール
composerのインストールも完了したので、Laravelのインストールを行います。 下記を実行すると実行フォルダの下にlaravel6というフォルダが作成され、そのフォルダの中にLaravelに必要なファイルが保存されます。laravel6は任意の名前なので好きな名前を付けてください。
Laravel5.8のインストール

composerのインストールも完了したので、Laravelのインストールを行います。下記を実行すると実行フォルダの下にlaravel5.8というフォルダが作成され、そのフォルダの中にLaravelに必要なファイルが保存されます。laravel5.8という名前は任意なので好きな名前を付けてください。
インストールが完了したら、php artisan serveコマンドで開発用WEBサーバを起動してLaravelにアクセスできるか確認を行います。
Laravelのインストールフォルダであるlaravel5.8で実行してください。
ブラウザでアクセスし、下記の画面が表示されたらLaravelのインストールは正常に完了しています。


sqlite3のインストール
本文書ではsqliteとMySQLデータベースのインストール方法と設定方法を説明しています。どちらかのデータベースを選択して、設定を行ってください。
Laravelにデータを保存するためにデータベースが必要になります。sqlite3データベースを利用するためapt installコマンドでsqlite3をインストールします。
またsqlite3データベースへ接続するためのPDOドライバも必要になるためインストールを行います。
sqlite3のデータベースファイルの作成を行います。Laravelのインストールフォルダで実行してください。
sqlite3データベースの設定
Laravelからsqliteのデータベースに接続するために.envファイルのDB_CONNECTIONの設定値をmysqlからsqliteに変更します。

php artisan migrateコマンドでusersテーブルの作成を行います。下記のように表示されたらテーブルの作成は完了しています。

MySQLのインストール
WSLのUbuntuにMySQLをインストールして、Laravelのテーブルが作成できるか確認を行います。いくつか途中でエラーが発生していますが、対処方法も記述しています。
まず、apt installコマンドでmysql-serverパッケージのインストールを行います。
インストールされたmysqlのバージョンを確認します。5.7がインストールされていることが確認できます。
次にLaravelからMySQLに接続用のドライバーをインストールします。
MySQLの起動
インストール後MySQLの起動を行うとエラーが発生しました。エラーが発生しますが、MySQLは起動しています。
mysqlユーザのディレクトリが下記のように nonexistentになっているため変更を行う必要があります。
変更するためには起動したMySQLを一度停止する必要があります。
停止後にmysqlユーザのディレクトリを変更します。

変更後はエラーなしでmysqlが起動します。
Laravel用データベースの作成
データベースを作成するためには、MySQLにログインする必要があります。下記のコマンドで接続を行います。

MySQLへの接続後文字コードの確認を行います。下記のコマンドを実行するとcharacter_set_databaseとcharacter_set_serverの文字コードがlatin1になっているのでutf8へ変更します。
変更は/etc/mysql/mysql.confの下にあるmysqld.cnfファイルで行います。ファイルを開いて一番再度に下記の設定を追加してください。
追加後はMySQLに変更を反映させるためmysqlのサービスの再起動を行います。
mysqlのサービスを再起動後に再度MySQLに接続して、文字コードがutf8に変更されていることを確認します。
接続後create databaseコマンドでLaravel用のデータベースを作成します。
データベースが作成されているか確認します。
LaravelでMySQLに接続する際にport番号も必要になるので確認を行っておきます。port番号は3306だということがわかります。
MySQLの準備は完了したのでLaravel側の設定に移ります。
Laravelの.envファイルを開きデータベース接続に関するパラメータを以下のように変更します。
.envファイルの更新が完了したら、Laravelのテーブルを作成するためにphp artisan migrateコマンドを実行します。
しかし、SQLSTATE[HY000] [1698] Access denied for user ‘root’@’localhost’のエラーが発生してテーブルを作成することができません。
これはMySQLに接続する際にsudoを使ってアクセスしなければならないことと同じ問題でアクセスすることができません。原因は、rootユーザの認証方式です。
MySQLに接続して、rootの認証方式を確認します。
rootのpluginを確認するとauto_socketになっています。MySQLにログインする際にLinuxのログインユーザの名前と一致するかチェックを行っているためMysqlのrootユーザにパスワードを設定していたとしても有効にならず接続することができません。sudoを使用せずにログインするためにこのpluginを変更する必要があります。
下記のコマンドでpluginとパスワードを設定します。パスワードは’’で引き続きブランクにしています。パスワードを設定したい場合はBYの後の”の中にパスワード文字列を入力してください。
実行後pluginが変更されているか確認します。pluginがauth_socketからmysql_native_passwordに変更されていることが確認できます。
sudoをつけることなくmysqlコマンドでMySQLに接続できれば設定は反映されています。
再度php artisan migrareコマンドを実行します。問題なくテーブルが作成されることを確認することができます。
npmのインストール
フロントエンドにvue.js等のJavaScriptを利用する場合はコンパイルが必要となるので、npm(node package manager)をインストールする必要があります。npmのインストールは下記のコマンドを実行します。
インストールに失敗した場合は、apt-get updateを実行して再度npmのインストールを行ってください。
認証機能の追加(6.xの場合)
ログインの認証機能を使用するためには、laravel/uiパッケージをインストールする必要があります 。
次にphp artisan ui vue –authコマンドを実行するとログイン機能とvue.jsの設定も一緒にインストールされます。
認証機能とvueをインストールしたらnpmコマンドを利用してJavaScriptライブラリのインストールとコンパイルを実行します。
実行後、ユーザの登録をブラウザ上から行うことができます。
認証機能の追加(5.8の場合)
ユーザの認証機能を追加するためにphp artisan authコマンドを実行します。実行後、ユーザの登録をブラウザ上から行うことができます。
エクスプローラーでフォルダを開く
Laravelのインストールフォルダを開くためには、explorer.exeコマンドを実行します。インストールフォルダの中で下記のコマンドを実行するとエクスプローラーでフォルダの中身を確認することができます。
WSLのパスも確認することができます。