LoginSignup
10
10

WSL2: UbuntuでPHP+MySQL+Laravelインストールの手順

Last updated at Posted at 2021-06-30

はじめに

WindowsでWSL2を使用し、PHP+MySQL+laravelのインストールや初期設定をしたので、その時のメモ。

前提

WSL2とUbuntuの環境設定

WSL2の環境設定の参考:

  • WSL2
  • Ubuntu 20.04 LTS
PowerShell
$ wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-20.04    Running         2

手順

①phpをインストール

Ubuntu
$ sudo apt-get update
$ sudo apt install -y php

$ php -v
PHP 7.4.3

②MySQLのインストール

Ubuntu
$ sudo apt install -y mysql-server
  • ステータスの確認/起動
Ubuntu
$ sudo service mysql status

$ sudo service mysql start

このスタートで、su: 警告: ディレクトリを /nonexistent・・・ といった警告がでるがいったんOK

  • セットアップ
Ubuntu
$ sudo mysql_secure_installation
  • ルートでのログイン
Ubuntu
$ sudo mysql -u root -p
  • 起動時の警告対応
Ubuntu
$ sudo usermod -d /var/lib/mysql mysql

$ sudo service mysql restart

③ laravelのインストール

  • laravelのインストールに必要なphpの拡張機能をインストールとモジュールの確認
Ubuntu
$ sudo apt install php7.4-bcmath php7.4-mbstring php7.4-xml php7.4-zip

$ php -m
  • Composerのインストール

Composer公式サイト:https://getcomposer.org/download/
ダウンロード用ページ記載のコマンドをコピペして実行

Ubuntu
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/フォルダの下に移動とバージョン確認
Ubuntu
$ sudo mv  composer.phar /usr/local/bin/composer

$ composer -V
  • laravel 6.xxx系のインストール
Ubuntu
$ composer create-project --prefer-dist laravel/laravel フォルダ名 "6.*"

最新のlaravelにて作成する場合は、最後の部分は何も指定しなければOK(下図は現在のバージョンのv8.44.0)

Screenshot_1.png

  • 作成されたフォルダに移動して、起動
Ubuntu
$ php artisan serve

Screenshot_2.png

④laravelのデバックツールのインストール

  • デバックツールのインストール
Ubuntu
$ composer require barryvdh/laravel-debugbar

Screenshot_3.png

  • デバックの表示・非表示は .envファイル(APP_DEBUG=true/false)にて決定することができる
 .env
APP_DEBUG=true

⑤laravelからデータベースへの接続

  • LaravelからMySQLに接続用のドライバーをインストール
Ubuntu
$ sudo apt install php7.4-mysql
  • MySQLの起動
Ubuntu
$ sudo service mysql start
  • 文字コードの確認
Ubuntu
mysql> show variables like '%char%';

/etc/mysql/mysql.confの下にあるmysqld.cnf に「character-set-server=utf8」を追記

  • MySQLを再起動して、設定が反映されているかを確認する
Ubuntu
$ sudo service mysql restart
  • laravelから接続するデータベースを作成する
Ubuntu
mysql> create database laravel6;

mysql> show databases;
  • ポート番号の確認(3306であることを確認する)
Ubuntu
mysql> show variables like 'port';
  • Laravelの.envファイルを開きデータベース接続に関するパラメータを設定
 .env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel6
DB_USERNAME=root
DB_PASSWORD=*******
  • Laravelのテーブルを作成するためにmigrateコマンドを実行
Ubuntu
$ php artisan migrate

ここでエラーが発生する(MySQLに接続する際にsudoを使ってアクセスしなければならないことと同じ問題)
原因は、rootユーザの認証方式となる。MySQLに接続して、rootの認証方式を確認。

Ubuntu
mysql> SELECT user, host, plugin FROM mysql.user;

rootのpluginを確認するとauto_socketになっている。mysql_native_password へ認証方式を設定。

Ubuntu
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '********';

ユーザのpluginを確認し、認証方式が変更になっていることを確認。これを実施すると、sudo をつけなくても、mysql -u root -p でMySQLに接続可能になる。再度、下記を実行して、エラーにならずに問題なくテーブルが作成されればOK

Ubuntu
$ php artisan migrate

参考URL

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