WSL2 Apache Laravel MySQL

### 1. WSL 2のセットアップとApacheのインストール

1. **WSL 2の有効化:**
   - PowerShellを管理者権限で開き、以下のコマンドを実行します。
     ```powershell
     dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
     dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
     ```

   - パソコンを再起動します。

   - WSL 2をデフォルトのバージョンに設定します。
     ```powershell
     wsl --set-default-version 2
     ```

2. **Ubuntuのインストール:**
   - Microsoft StoreからUbuntuをインストールします。
   - インストール後、初回の起動とユーザーアカウントの作成を行います。

3. **Apacheのインストール:**
   ```bash
   sudo apt update
   sudo apt install apache2
   ```

### 2. Laravelプロジェクトのセットアップ

4. **必要なツールのインストール:**
   ```bash
   sudo apt update
   sudo apt install php composer nodejs npm
   ```

5. **Laravelプロジェクトのクローン:**
   ```bash
   git clone git://github.com/your-username/your-laravel-repo.git project-name
   ```

6. **Laravelプロジェクトの設定:**
   - LaravelアプリケーションをWebサーバーにデプロイします。一般的な手順は、Laravelアプリケーションのソースコードをサーバーにコピーすることです。また、Composerを使用して依存関係をインストールすることも重要です。以下は一般的な手順です。
   ```bash
   # Laravelアプリケーションのディレクトリに移動
   cd /path/to/your/laravel/app

   # Composerを使用して依存関係をインストール
   composer install

   # 必要に応じて環境設定をコピー
   cp .env.example .env

   # アプリケーションキーを生成
   php artisan key:generate
   ```

### 3. MySQLの設定と起動

7. **MySQLのインストール:**
   ```bash
   sudo apt-get install mysql-server
   ```

   - インストール中にMySQLのルートユーザのパスワードを設定します。

8. **MySQLサービスの起動:**
   ```bash
   sudo service mysql start
   ```

9. **MySQLの設定:**
   ```bash
   sudo mysql_secure_installation
   ```

   - インタラクティブなセキュリティスクリプトが実行され、セキュリティ設定が行われます。設定内容に従って進めてください。

### 4. Laravelプロジェクトのデータベース設定

10. **Laravelプロジェクトの`.env`ファイルの編集:**
    - `DB_HOST`、`DB_PORT`、`DB_DATABASE`、`DB_USERNAME`、`DB_PASSWORD`をMySQLに合わせて設定します。

    ```env
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=your_database_name
    DB_USERNAME=your_database_username
    DB_PASSWORD=your_database_password
    ```

    - `your_database_name`、`your_database_username`、`your_database_password`を適切な値に置き換えてください。

11. **Laravelプロジェクトのマイグレーション:**
    ```bash
    php artisan migrate
    ```

### 5. Apacheの設定と起動

12. **Apacheの設定:**
    - Apacheのデフォルト設定ファイルを編集します。
      ```bash
      sudo nano /etc/apache2/sites-available/000-default.conf
      ```

    - `DocumentRoot` をLaravelプロジェクトのパスに変更します。
      ```apache
      DocumentRoot /mnt/c/path/to/your/laravel/project-name/public
      ```

    - `AllowOverride` の設定を変更して、`.htaccess` ファイルが有効になるようにします。
      ```apache
      <VirtualHost *:80>
          ServerAdmin webmaster@example.com
          DocumentRoot /mnt/c/path/to/your/laravel/project-name/public
          ServerName yourdomain.com

          <Directory /mnt/c/path/to/your/laravel/project-name/public>
              Options Indexes FollowSymLinks
              AllowOverride All
              Require all granted
          </Directory>

          ErrorLog ${APACHE_LOG_DIR}/error.log
          CustomLog ${APACHE_LOG_DIR}/access.log combined
      </VirtualHost>
      ```
      - DocumentRootはpublicディレクトリを指すように設定されています。これはセキュリティ上の理由からLaravelの公式推奨事項です。
    - Apacheを再起動します。
      ```bash
      sudo service apache2 restart
      ```

### 6. Windows 10からアクセス

13. **WSL 2のIPアドレスの取得:**
    ```bash
    ip addr show eth0
    ```

14. **Windows 10のホストファイルの編集:**
    - `C:\Windows\System32\drivers\etc\hosts` を管理者権限で開き、以下を追加します。
      ```
      WSL2_IP_ADDRESS   project-name.local
      ```

      ここで、`WSL2_IP_ADDRESS`は先程確認したWSL 2のIPアドレス、`project-name.local`はアクセスしたいドメイン名に置き換えてください。

15. **ブラウザからアクセス:**
    - ブラウザで `http://project-name.local` にアクセスして、Laravelプロジェクトが正常に表示されることを確認します。

これで、LaravelプロジェクトをGitからクローンし、MySQLを使用する手順が完了しました。必要に応じてMySQLのユーザーやデータベースの設定を適切に調整してください。