※Ubuntuのコマンドは、基本的にはすべて一般ユーザーで実行しています。
WSL2を有効化
以下の公式の記事を参照……
Windows Subsystem for Linux (WSL) を Windows 10 にインストールする | Microsoft Docs
まず管理者権限で起動したPowerShellで以下コマンド実行して、仮想マシンプラットフォーム機能を有効化。
そしたらPC再起動後、『x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ』をインストール。
そしたらPowerShellで以下コマンド実行して、Linuxディストリビューションインストール時の既定のバージョンをWSL2に変更。
Ubuntuをインストール
Microsoft Storeから、ここでは『Ubuntu 20.04 LTS』をインストール。
※なぜならUbuntu無印はWSL1でインストール済みだったから。それに、WSL1ではUbuntu 20.04が sleep: cannot read realtime clock: Invalid argument
とか言ってちゃんと動かなかったからちょうど良いと思ったので。詳しくは以下の記事を参照。
(今はまだ)WSL1にUbuntu 20.04を入れるな - Qiita
ちなみに、インストール済みのディストリビューションをWSL2に切り替える場合はコマンドプロンプトで以下実行。
以下、WSL2のUbuntu上で環境構築を行っていく。
環境構築の前に
……と思ったが、自分の環境ではWSL1のUbuntuの方でApacheとMadiaDBが動いてたので、念のため止めておく。
以下、今度こそWSL2のUbuntu上で環境構築を行っていく。
環境構築開始
最初はこれ。
Apacheをインストール
そしたらWSL2のUbuntuにApacheインストール。
サービス起動してるか確認。
WSL2になってもインストール後に自動で起動しないのは同じようなので、以下コマンドで起動する。
無事に起動。なお、ここで Failed to enable APR_TCP_DEFER_ACCEPT
とか表示される人はこちらを参照。
この時点で http://localhost
を開くと、ちゃんとUbuntuのApache2のデフォルトページが表示された。
[2020-11-23追記] なんか後日確認したところ、表示されなくなってた。
あれ? 調べたところ、本当はWSL2上の localhost
にWindows側から接続するには設定が必要らしい。
WSL2内で立ち上げたサーバにWindows側からlocalhostで接続する - Qiita
Windows側のユーザのフォルダに .wslconfig
を作成して、中身を以下のようにする。
そしたらコマンドプロンプトからWSL2をシャットダウン。
再度WSL2を立ち上げてApache2を起動したら、やっと http://localhost
にアクセスできるようになった。
PHPをインストール
PHP7.4を……と思ったが、いまPHPで動かしてる本番環境が7.2なので7.2をインストール。
最後に以下のメッセージが表示されたけど、開発環境だしFPMは無効のままで構わないので無視。
インストールできたか確認。
ApacheにPHPを乗せる
ApacheのPHP7.2モジュールをインストールして、Apacheを再起動。
PHPが動くか確認したい。以下コマンド実行してから、http://localhost/phpinfo.php
を開いてみる。
phpinfoの表が表示されればOK。
Composerをインストール
Composerも入れていく。インストール方法は概ね公式サイト通り。
まずインストーラをダウンロード。
Installer verified
と表示されればファイルのハッシュ値はOK。
そしたら以下コマンドでインストールする。ここでは /usr/local/bin
に composer
という名前でインストールして、グローバルで composer
コマンドを使えるようにする。
MariaDBをインストール
以下コマンドでインストール。
一応、サービスがどうなってるか確認。
WSL1と同様に、インストール直後はサービスが起動していない。起動する。
そしたら mysql_secure_installation
で初期設定を行っていく。
初期設定できたら、試しにrootユーザーで入ってみる。パスワードを訊かれたら、さっき設定したパスワードを入力する。
入れたからOK。quit
で抜けられる。
MariaDBに開発用ユーザー作成
開発で使うので、MariaDBに開発用ユーザーを作っておく。
ここでは仮にユーザー名は mydevuser
、パスワードは mypassword
とする。開発用なので接続元は localhost
とする。
MariaDBにログインして以下実行。
作成したら、ユーザーテーブルを確認してみる。
こんな感じになってるはず。
念のため quit
で抜けて、作成したユーザーで入れるか試してみる。(※-ppassword
は誤字ではない。-p
の後にスペースは本当にいらない。)
入れればOK。
MariaDBにデータベース作成
ついでにデータベースも作成する。ここでは仮に mydevdb
とする。
MariaDBにログインして以下実行。
さらに今回は手元に mysqldump
で作成したダンプファイルがあるので、今作ったデータベースにリストア。
quit
で抜けてから以下実行。
実際には、ダンプファイルはWindows側に置いてあるものを /mnt/c/Users/piyopiyo/Desktop/dump.sql
みたいに指定した。
自動起動設定
最後に、PC立ち上げ時にApacheとMariaDBが自動起動するように設定する。
少し調べたらWSL2でも systemctl
は使えないっぽいので、WSL1と同様にWindowsのスタートアップでやることにした。
『ファイル名を指定して実行』に shell:startup
を入力して、ログインユーザーのスタートアップのフォルダ (C:\Users\ユーザー名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
) を開く。そこに好きな名前のbatファイルを作って、内容を以下の通りにする。
ここでは Ubuntu 20.04 をインストールしてるので、ディストリビューションの指定は Ubuntu-20.04
にしてある。インストール済みのディストリビューションの名前はコマンドプロンプトで wsl -l
で確認できるよ。
これでWindowsを再起動してみると、ログイン時に一瞬だけ黒窓が出てきて以下が表示され、ApacheとMariaDBが起動される。
以上。