LAMP環境構築方法について

ローカル環境でLAMPの環境構築を行なった。
その際の手順やつまづいたところについてまとめる。
また、今回はLAMP環境の構築からLaravelのローカルホスト画面を確認することまでをゴールとする。

## 1. WSL2のインストール
 WSL2とは、Windows Subsystem for Linux 2の略で，Windows上でLinuxを仮想的に動かすことができるシステム環境のこと。
WSL2ではUbuntuを採用している。

### WSL2のインストール方法
1. Windows PowerShellを起動させる
2. `wsl --install`と入力し、インストールを開始させる
3. インストールが完了したら下図のような画面が表示されるので再起動させる
　![スクリーンショット 2024-10-22 065909_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3495326/da187788-4349-65a0-4b00-24803354b322.png)
<br>
4. ubuntuを立ち上げるために再起動を行う

:::note warn
しかし、ここで下図のようなエラー(0x80370114エラー)が発生

![スクリーンショット 2024-10-22 071053_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3495326/31a5565c-9d31-07b7-5fa3-7f74848e669e.png)

:::

:::note
解決策
Windows ハイパーバイザー プラットフォームにチェックを入れ、有効化させることで解決することができる。

![スクリーンショット 2024-10-22 071205_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3495326/8378c365-dce1-0c60-28d8-d71eef896805.png)


これは、WSL1とWSL2で動かす仕組みが異なるためである。
WSL1ではLXCodeというサブシステムがLinuxの実行環境を作成し、Windowsカーネル上で動作する。
それに対し、WSL2ではLinuxカーネルをハイパーバイザー上で動かすことができる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3495326/728d1a80-ad9c-15e5-9c09-aec020af00f1.png)

:::

5.再起動が完了しユーザー名とパスワードを設定したのち、下図のような画面が表示できればWSL2の導入が成功

![スクリーンショット 2024-10-22 072218_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3495326/7d3389a0-33d1-fd63-7442-8b15f03d4988.png)


 ## 2. Apache、MySQL、PHPをインストールする
 WSL2(Ubuntu)をインストールしたので残りの必要なものをインストールする。
 
### Apacheのインストール方法
ApacheはWebサーバの一つで様々なOSのパソコンをサーバーとして利用することができる。

以下のコマンドでApacheをインストールし、起動させる
`sudo`は管理者権限コマンドなのでなくても良い

``` CLI
sudo apt update
sudo apt install apache2
sudo service apache2 start
```
:::note warn
ここでファイヤウォールの設定が必要になる場合があるが、今回はWindowsでWSL2をインストールしたので不要
:::

### MySQLのインストール方法
以下のコマンドでMySQLのインストールし、起動させる
``` CLI
sudo apt install mysql-server
sudo service mysql start
```

実際に動作確認を行い、接続を解除する
``` CLI
sudo mysql

// 以下のコマンドで解除
exit
```

### PHPのインストール方法
サーバーサイドのプログラムで今回はPHPをインストールする。

以下のコマンドで最新のPHPとApacheの関連モジュール、MySQL関連のモジュールをインストールする。
``` CLI
sudo apt install php libapache2-mod-php php-mysql php-curl php-mbstring php-xml php-zip
```

<br>
インストールされていることを下記のコマンドで確認する。
コマンド実行後にバージョンが表示されれば成功している。

``` CLI
php -v
```

## 3. composerをインストールし、プロジェクトを立ち上げる
Laravelのインストールにはcomposerが必要になるためインストールする。

### composerのインストール
composerのインストーラーをダウンロードする。
``` CLI
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
```

composerをインストールする
``` CLI
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
```

最後にcomposerがインストールされているか確認する。
コマンドを実行し、バージョンが表示されれば成功。
``` CLI
composer -v
```
<br>

### Laravelのインストールとプロジェクト作成
`mkdir`コマンドで作業ディレクトリを作成する。

Laravelのインストール兼プロジェクトの作成を行う。
今回は「test-app」プロジェクトを作成したが、名前を変えることで任意のプロジェクトを作成することができる。
``` CLI
composer create-project laravel/laravel test-app
```
<br>

### プロジェクトの実行
`cd`コマンドを用いてプロジェクトのディレクトリに移動したのち、下記のコマンドを実行することでプロジェクトを実行する。

``` CLI
php artisan serve
```
:::note warn
初回はマイグレーションしなければエラー画面が表示されることになり、画像のような初めの画面が表示されない。
:::

表示されたIPアドレスにブラウザからアクセスすることで下図のような画面が表示される。
画面を表示させることができれば、LAMPの環境構築からローカルホストにアクセスするまでが成功したことになる。

<br>

![スクリーンショット 2024-10-24 174254.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3495326/31c34d08-9f4f-98e9-d858-90f980b7c12b.png)




#### 参考文献
> [WSL2 のインストールとアンインストール](https://qiita.com/zakoken/items/61141df6aeae9e3f8e36#)
> [LAMP(Linux,Apache,MySQL,PHP)環境構築【Ubuntu20.04】](https://lunaris-code.com/pc/974)
> [PHPフレームワーク、Laravel開発環境構築【Ubuntu 20.04】](https://lunaris-code.com/web/1001)
> [WindowsでWSL2を使って「完全なLinux」環境を作ろう！](https://www.kagoya.jp/howto/it-glossary/develop/wsl2_linux/)
> [Windwos11のWSLインストール時に0x80370114エラーが出る問題](https://zenn.dev/ohno/articles/1cb49d190af1f4)