開発環境
Laravel 7.20.0
PHP 7.4
MYSQL 8.0.21
Windows version 2004
全体のおおまかな流れ
- Ubuntu導入
- WSL2に更新・導入
- dockerインストール
- laradock導入
##本記事のゴール
本記事はWindows環境上にWSL2を用いてLinux環境を構築し、Laradockを導入して画面の表示+Migrationすることを目標としています。
まずはUbuntu導入準備から
####Windowsを最新状態にアップデート(下記URLでダウンロード)
https://support.microsoft.com/ja-jp/help/4028685/windows-10-get-the-update
####PCの設定から開発者モードに変更
• 「設定(スタートボタンの歯車アイコン)」-「更新とセキュリティ」-「開発者向け」を選択
• 「開発者向け機能を使う」欄の「開発者モード」を選択して有効化
####追加機能でSubsystem for Linuxを有効化
• 「コントロールパネル」-「プログラム」-「Windowsの機能の有効化または無効化」を選択
• 一覧のなかから「Windows Subsystem for Linux(Beta)」にチェックを入れる
windows version2004の場合は表記が「Linux用Windowsサブシステム」に変更しているためそれを有効化してください。
PC再起動
####Ubuntuのインストール
UbuntuとはLinuxディストリビューションの1つであり、フリーソフトウェアとして提供されている
Microsoft storeでubunntuをインストール。
コマンドプロンプトでbashと入力。(Ubuntuにログイン出来たら成功)
続いてUbuntuの状態を最新にします。
$ sudo apt-get update
$ sudo apt-get dist-upgrade
$ sudo apt-get autoremove
###GitとPHPを取得
普通にインストールすると古いバージョンのGitがインストールされるので、リポジトリを追加して最新のものを取得。
下記コマンドを実行。
$ sudo apt-get install build-essential
$ sudo add-apt-repository ppa:git-core/ppa
$ sudo apt-get update
$ sudo apt-get install git
$ git --version //最新になっていたらOK
git version 2.28.0
###PHP
※PHP--version 7.4を指定しています。
$sudo apt-get install php7.4 php7.4-fpm php7.4-mysql php7.4-mbstring php7.4-gd
$ php -v //指定したバージョンがインストールされているかを確認
PHP 7.4.3 (cli) (built: May 26 2020 12:24:22) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies
##WSL2の事前準備
WSL2とはLinuxカーネルが動作する「本物のLinux環境」
#####「Windows PowerShell」の中の「Windows PowerShell」を「管理者として実行」して下記コマンドを実行
PS C:\>dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
PS C:\>dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
PCを再起動
バージョンの確認
C:¥> ver
Microsoft Windows [Version 10.0.19041.84]
バージョンが10.0.18917以上であることを確認
デフォルトをWSL2に設定するため、下記コマンドを実行。
C:¥> wsl --set-version ubuntu 2
WSL2に切り替わっているか確認。
C:¥> wsl -l -v
NAME STATE VERSION
* Ubuntu Stopped 2
WSL2を導入したのでDockerを構築するうえでの事前準備は完了
##Dockerのインストール
DockerとはLinux コンテナの作成と使用を実現するオープンソースのコンテナ化技術
####下記URLからDocker Desktop Edgeをインストール
https://docs.docker.com/docker-for-windows/wsl-tech-preview/
PC再起動
再起動後、タスクバーのdockerアイコンから「setting」を選択
「Enable the experimental WSL2 based engine」にチェックを入れ「Appli&Restart」をクリック
再起動が終わってnotificationと表示されたらOK
続いて、ResourcesのWSLIntegration内の「Enable WSL Integration」をクリック
「Ubuntu」を選択して「Appli&Restart」をクリック
##Dockerの動作確認
C:\Users\magic>wsl -d ubuntu
$ docker -v
Docker version 19.03.5, build 633a0ea838
####Hello Worldと表示されれば成功
$ docker run hello-world
To run a command as administrator (user "root"), use "sudo ".
See "man sudo_root" for details.
Hello from Docker!
##Laradock導入
本番環境に必要なパッケージを提供してくれる。Homesteadをより細かく分割したようなもの
###前提
Laradockも含めて1プロジェクト1リポジトリで管理したいので下記構成。
──project_dir
├ app //laravel ディレクトリ
│ ├ app
│ │ bootstrap
│ └ .env
│
└ Laradock
###Laradockをgit clone
$git clone https://github.com/Laradock/laradock.git
####設定ファイル(env-exampl)をコピーして.envを生成
$ cd laradock
$ cp env-example .env
###コピーしたenv(Laradock.env)ファイルの編集
####指定したいプロジェクトを指定
APP_CODE_PATH_HOST=../
APP_CODE_PATH_HOST=../プロジェクト名/
####データの保存ディレクトリを指定
DATA_PATH_HOST=~/.laradock/data
+ DATA_PATH_HOST=.laradock/data
####プロジェクト名の設定
laradockを使ったプロジェクトを複数作る場合、プロジェクト名が同じ場合、過去に作った同じ名前のコンテナイメージが上書きされてしまいまうため、被らない名前を設定
COMPOSE_PROJECT_NAME=laradock
+ COMPOSE_PROJECT_NAME=
####MYSQLの設定
MySQLは8系になってパスワードの生成方法が変わったらしくLaravelから操作できないため下記記述を追記。
/lardock/mysqmy.cnfに下記を追加
// [mysqld]のエリアに追記する(デフォルトの場合一番下)
default_authentication_plugin=mysql_native_password
##Laravel.envの設定
DBの設定を合わせて変更します
※DB_HOSTはdocker-compose.ymlに書かれているコンテナ内名を指定します。
DB_CONNECTION=mysql
DB_HOST=mysql(既存だと127.001になっていると思うのでmysqlに修正)
DB_PORT=3306
DB_DATABASE=default
DB_USERNAME=default
DB_PASSWORD=secret
##Laradockの起動
下記コマンドでlaradockを起動します。 引数には起動したいミドルウェアを指定
なお、projectが存在しない場合はroot権限で作成されてしまうため、必ず作成した状態で起動すること
$ docker-compose up -d nginx mysql workspace
起動確認
$ docker-compose ps
##Dockerコンテナ内からLaravelをインストール
dockerコンテナ内からlaravelをインストールする方法と、設定。
下記コマンドでWorkspaceコンテナに入る。
※userオプションでユーザを指定してください。
$ docker-compose exec --user=laradock workspace /bin/bash
コンテナ内で下記を実行してLaravelをインストール。
/var/www$ composer create-project --prefer-dist laravel/laravel .
インストール完了したところで動作確認。
(※3306portを他に使用している場合はportが競合するためタスクマネージャーなどでportを終了させてください)
Windows側のブラウザで、http://localhostにアクセスします。
###画面が表示されればインストール完了
マイグレーションの確認
MySQLの設定が完了したか、マイグレーションで確認してみましょう。
下記のようにDBにテーブルが作成されれば成功
/var/www$ php artisan migrate
Migration table created successfully.
Migrating: 2014_10_19_000000_create_users_table
Migrated: 2014_10_19_000000_create_users_table (0.36 seconds)
Migrating: 2014_10_19_100000_create_password_resets_table
Migrated: 2014_10_19_100000_create_password_resets_table (0.35 seconds)
Migrating: 2019_10_19_000000_create_failed_jobs_table
Migrated: 2019_10_19_000000_create_failed_jobs_table (0.1 seconds)
終わりに
今回はWindows環境にLaradockを導入するまでの流れを記事として投稿しました
それと来月でプログラミングを始めてから一年経つこともあり、当初よりも知見が深まったこともあるので、これから少しずつ技術記事を上げていこうと思います。
どうかよろしくお願いいたしますm(._.)m