はじめに
WindowsでWSL2を使用し、PHP+MySQL+laravelのインストールや初期設定をしたので、その時のメモ。
前提
WSL2とUbuntuの環境設定
WSL2の環境設定の参考:
- WSL2
- Ubuntu 20.04 LTS
$ wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Running 2
手順
①phpをインストール
$ sudo apt-get update
$ sudo apt install -y php
$ php -v
PHP 7.4.3
②MySQLのインストール
$ sudo apt install -y mysql-server
- ステータスの確認/起動
$ sudo service mysql status
$ sudo service mysql start
このスタートで、su: 警告: ディレクトリを /nonexistent・・・ といった警告がでるがいったんOK
- セットアップ
$ sudo mysql_secure_installation
- ルートでのログイン
$ sudo mysql -u root -p
- 起動時の警告対応
$ sudo usermod -d /var/lib/mysql mysql
$ sudo service mysql restart
③ laravelのインストール
- laravelのインストールに必要なphpの拡張機能をインストールとモジュールの確認
$ sudo apt install php7.4-bcmath php7.4-mbstring php7.4-xml php7.4-zip
$ php -m
- Composerのインストール
Composer公式サイト:https://getcomposer.org/download/
ダウンロード用ページ記載のコマンドをコピペして実行
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
- /user/local/bin/フォルダの下に移動とバージョン確認
$ sudo mv composer.phar /usr/local/bin/composer
$ composer -V
- laravel 6.xxx系のインストール
$ composer create-project --prefer-dist laravel/laravel フォルダ名 "6.*"
最新のlaravelにて作成する場合は、最後の部分は何も指定しなければOK(下図は現在のバージョンのv8.44.0)
- 作成されたフォルダに移動して、起動
$ php artisan serve
- http://localhost:8000/ にアクセス
④laravelのデバックツールのインストール
- デバックツールのインストール
$ composer require barryvdh/laravel-debugbar
- デバックの表示・非表示は .envファイル(APP_DEBUG=true/false)にて決定することができる
APP_DEBUG=true
⑤laravelからデータベースへの接続
- LaravelからMySQLに接続用のドライバーをインストール
$ sudo apt install php7.4-mysql
- MySQLの起動
$ sudo service mysql start
- 文字コードの確認
mysql> show variables like '%char%';
/etc/mysql/mysql.confの下にあるmysqld.cnf に「character-set-server=utf8」を追記
- MySQLを再起動して、設定が反映されているかを確認する
$ sudo service mysql restart
- laravelから接続するデータベースを作成する
mysql> create database laravel6;
mysql> show databases;
- ポート番号の確認(3306であることを確認する)
mysql> show variables like 'port';
- Laravelの.envファイルを開きデータベース接続に関するパラメータを設定
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel6
DB_USERNAME=root
DB_PASSWORD=*******
- Laravelのテーブルを作成するためにmigrateコマンドを実行
$ php artisan migrate
ここでエラーが発生する(MySQLに接続する際にsudoを使ってアクセスしなければならないことと同じ問題)
原因は、rootユーザの認証方式となる。MySQLに接続して、rootの認証方式を確認。
mysql> SELECT user, host, plugin FROM mysql.user;
rootのpluginを確認するとauto_socketになっている。mysql_native_password へ認証方式を設定。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '********';
ユーザのpluginを確認し、認証方式が変更になっていることを確認。これを実施すると、sudo をつけなくても、mysql -u root -p でMySQLに接続可能になる。再度、下記を実行して、エラーにならずに問題なくテーブルが作成されればOK
$ php artisan migrate
参考URL