Laravelをインストールしてみた


:::note info
前提
+ UbuntuをインストールしたWindows端末
+ Windows端末にDocker Desktopをインストール済
+ Laravel Sailを使いたい
:::

参照
+ [Laravelインストールマニュアル](https://laravel.com/docs/11.x/installation)
+ [Laravel Sailインストールマニュアル](https://laravel.com/docs/11.x/sail#installation)

目次：
+ 最新版Laravelをインストールする
+ Laravelのバージョンを指定してインストールする
---------------------------------------
## 最新版Laravelをインストールする
### 手順

:::note warn
+ example-appと書かれた箇所は、お好きな名前に変えてください。
+ /home/appと書かれた箇所は、あなたの既存ディレクトリに読み替えてください。
:::
 
1\. Ubuntuのコンソール画面を開く（以下はコンソール画面での操作です。）
2\. カレントディレクトリ設定（既存のパスを指定してください。）
  ```shell:例：
  cd /home/app
  ```
3\. Laravelインストールコマンドを実行
  ```shell:例
  curl -s https://laravel.build/example-app | bash
  ```
  /home/appディレクトリ下にexample-appというディレクトリが作成され、そこにLaravelがインストールされます。
  
4\. Ubuntuのスーパーユーザーのパスワードを求められる場合はパスワードを入力
 ```shell:表示画面
 [sudo] password for ******:
 ```
5\. 以下のような表示が出ればインストールが正常に終了
 ```shell:表示画面
 Thank you! We hope you build something incredible. Dive in with: cd example-app && ./vendor/bin/sail up
 ```
6\. Sailを起動 
 ```shell:例
 cd example-app
 ./vendor/bin/sail up -d
 ```
 マニュアルには'-d'オプションが記されていませんが、その通りにするとプロンプトが戻ってこないので、'-d'オプションを追加してます。

7\. データベースの構造を設定
```shell:コマンド
./vendor/bin/sail artisan migrate
```

8\. Laravelによるシステム画面の表示を確認
WEBブラウザを起動して下記URLにアクセスして、Laravelの画面が表示されることを確認します。
[http://localhost](http://localhost)

9\. パソコンの電源を落とすときは
前の6.で-dオプションを付けてsailを起動させている場合、Sailを停止させておいたほうが良いと思います。
```shell:Sail停止コマンド
  ./vendor/bin/sail stop
```
-dオプションを付けずにSailを起動させた場合はコンソール上でCTRL+cで停止します。

---------------------------------------
## Laravelのバージョンを指定してインストールする
### 手順

:::note warn
+ example-appと書かれた箇所は、お好きな名前に変えてください。
+ /home/appと書かれた箇所は、あなたの既存ディレクトリに読み替えてください。
:::
 
1\. Ubuntuのコンソール画面を開く（以下はコンソール画面での操作です。）
2\. カレントディレクトリ設定（既存のパスを指定してください。）
  ```shell:例：
  cd /home/app
  ```
3\. Laravelインストールコマンドを実行
  ```shell:Laravelバージョン10をインストールする例
  composer create-project "laravel/laravel=10.*" example-app
  ```
  /home/appディレクトリ下にexample-appというディレクトリが作成され、そこにLaravelがインストールされます。
  
4\. Ubuntuのスーパーユーザーのパスワードを求められる場合はパスワードを入力
 ```shell:表示画面
 [sudo] password for ******:
 ```
5\. 以下のような表示が出ればインストールが正常に終了
 ```shell:表示画面
  laravel/sail .................................................................................................. DONE
  laravel/sanctum ............................................................................................... DONE
  laravel/tinker ................................................................................................ DONE
  nesbot/carbon ................................................................................................. DONE
  nunomaduro/collision .......................................................................................... DONE
  nunomaduro/termwind ........................................................................................... DONE
  spatie/laravel-ignition ....................................................................................... DONE

82 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
> @php artisan vendor:publish --tag=laravel-assets --ansi --force

   INFO  No publishable resources for tag [laravel-assets].

No security vulnerability advisories found
> @php artisan key:generate --ansi

   INFO  Application key set successfully.
 ```
6\. Sailを起動 
 ```shell:例
 cd example-app
 ./vendor/bin/sail up -d

 -bash: ./vendor/bin/sail: No such file or directory
 ```
 残念ながらバージョン指定でインストールした場合、sailはインストールされませんでした。
 以下のようにしてLaravel Sailをインストールします。

---------------------------------------
## Laravel Sailのインストール
### 手順

:::note warn
+ /home/app/example-appと書かれた箇所は、あなたのLaravelアプリのディレクトリに読み替えてください。
:::

1\. Ubuntuのコンソール画面を開く（以下はコンソール画面での操作です。）
2\. カレントディレクトリ設定
  ```shell:例：
  cd /home/app/example-app
  ```
3\. Laravel Sailパッケージを格納
  ```shell:コマンド
  composer require laravel/sail --dev
  ```
  
4\. 以下のような表示が出ることを確認
 ```shell:表示画面
  laravel/sail .................................................................................................. DONE
  laravel/sanctum ............................................................................................... DONE
  laravel/tinker ................................................................................................ DONE
  nesbot/carbon ................................................................................................. DONE
  nunomaduro/collision .......................................................................................... DONE
  nunomaduro/termwind ........................................................................................... DONE
  spatie/laravel-ignition ....................................................................................... DONE

82 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
> @php artisan vendor:publish --tag=laravel-assets --ansi --force

   INFO  No publishable resources for tag [laravel-assets].

No security vulnerability advisories found
Using version ^1.32 for laravel/sail
 ```

5\. Laravel Sailをインストール
```shell:コマンド
php artisan sail:install
```

以下のように、使いたいサービスの選択を求められる。
```shell:コンソール画面
 ┌ Which services would you like to install? ───────────────────┐
 │ › ◼ mysql                                                  ┃ │
 │   ◻ pgsql                                                  │ │
 │   ◻ mariadb                                                │ │
 │   ◻ redis                                                  │ │
 │   ◻ memcached                                              │ │
 └────────────────────────────────────────────────── 1 selected ┘
```
上下矢印キーで対象行に移動させて、ブランクキーで選択・非選択を切り替えます。
選択し終わったらエンターキーで処理を続行させます。

6\. 以下のような表示が出ることを確認
```shell:コンソール画面
   INFO  Sail scaffolding installed successfully. You may run your Docker containers using Sail's "up" command.

➜ ./vendor/bin/sail up

   WARN  A database service was installed. Run "artisan migrate" to prepare your database:

➜ ./vendor/bin/sail artisan migrate
```

7\. Laravel sailを起動
```shell:コマンド
./vendor/bin/sail up -d
```
 マニュアルには'-d'オプションが記されていませんが、その通りにするとプロンプトが戻ってこないので、'-d'オプションを追加してます。

8\. データベースの構造を設定
```shell:コマンド
./vendor/bin/sail artisan migrate
```

9\. Laravelのバージョンを確認
```shell:コマンド
./vendor/bin/sail artisan --version
```

```shell:コンソール画面
Laravel Framework 10.48.22
```

10\. Laravelによるシステム画面の表示を確認
WEBブラウザを起動して下記URLにアクセスして、Laravelの画面が表示されることを確認します。
[http://localhost](http://localhost)

11\. パソコンの電源を落とすときは
前の7.で-dオプションを付けてsailを起動させている場合、Sailを停止させておいたほうが良いと思います。
```shell:Sail停止コマンド
  ./vendor/bin/sail stop
```
-dオプションを付けずにSailを起動させた場合はコンソール上でCTRL+cで停止します。

---------------------------------------
## トラブル１
Laravelバージョン指定インストール時に正常終了せず、以下の表示で終わってました。

```shell:実行コマンド
  composer create-project "laravel/laravel=10.*" example-app
```

```shell:バージョン指定インストール時に表示したエラー
You can also run `php --ini` in a terminal to see which files are used by PHP in CLI mode.
Alternatively, you can run Composer with `--ignore-platform-req=ext-curl` to temporarily ignore these required extensions.
 ```
 
さらに上には、以下のようにインストールできなかったプログラムがあるようでした。
```shell:バージョン指定インストール時に表示したエラー
 Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - spatie/laravel-ignition[2.0.0, ..., 2.8.0] require ext-curl * -> it is missing from your system. Install or enable PHP's curl extension.
    - Root composer.json requires spatie/laravel-ignition ^2.0 -> satisfiable by spatie/laravel-ignition[2.0.0, ..., 2.8.0].
 ```

本来なら、php.iniファイルでext-curlと書かれている部分のコメントを外すんだと思いますが、エラーメッセージに `--ignore-platform-req=ext-curl`を付けてみて、と書かれていたので試して見ました。
   ```shell:エラー対策
  composer create-project "laravel/laravel=10.*" example-app --ignore-platform-req=ext-curl
  ```

  上のコマンドで再インストールを試み、エラーが出た際にインストールされなかった'spatie/laravel-ignition'がインストールされたか、画面の上のほうを確認してみて、
```shell:コンソール画面
    spatie/laravel-ignition ....................................................................................... DONE
```
と表示されていたので無事終了。
ですが、これは暫定的な対応ですので、ご注意ください。

---------------------------------------
## トラブル２
Laravel Sailインストール時に正常終了せず、以下の表示で終わってました。
```shell:実行コマンド
  composer require laravel/sail --dev 
```

```shell:コンソール画面
  You can also run `php --ini` in a terminal to see which files are used by PHP in CLI mode.
Alternatively, you can run Composer with `--ignore-platform-req=ext-curl` to temporarily ignore these required extensions.
You can also try re-running composer require with an explicit version constraint, e.g. "composer require laravel/sail:*" to figure out if any version is installable, or "composer require laravel/sail:^2.1" if you know which you need.

Installation failed, reverting ./composer.json and ./composer.lock to their original content.
```


トラブル１と同様に`--ignore-platform-req=ext-curl`を付けて再実行してみました。
```shell:エラー対策
  composer require laravel/sail --dev --ignore-platform-req=ext-curl
```

以下の表示が出て、無事終了
```shell:コンソール画面
Using version ^1.32 for laravel/sail
```