28
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

シーエー・アドバンスAdvent Calendar 2021

Day 2

Laravel公式のLaravel sailで「Laravel」+「phpMyAdmin」をサクッと環境構築

Last updated at Posted at 2021-12-02

この記事は シーエー・アドバンス Advent Calendar 2021 2日目の記事です。
前回の記事は @toubaruさんの 「macOS Catalina に Frida をインストールする」 でした。
明日の記事は @Jeyさんです。

普段、脆弱性診断のクロール業務をしています。
開発研修として、Laravelでの開発があり、今回はDockerの知識があまりない人でも
Laravel公式が出しているsailというものを使って環境構築できるようにまとめてみました。
Laravel Sailでは現時点では未サポートのPhpMyAdminを研修では使ったりもするため(Dockerの知識がちょっと必要)追加で記載しています。

#概要
Laravel公式から出ているsailが、最近Dockerの知識がない初心者でも環境構築が楽にできる
とLaravelやPHP勉強会で耳にしたので気になったので試してみました。
また、社内研修で素のPHPでサイト作成後、Laravelでのサイト作成もあるため、
今後Dockerの知識がない人でもサクッと簡単に環境構築できるかと思い、試してことをまとめてみました。

#動作検証環境

  • Mac Book Pro16(Intel)
    • OS catalina(バージョン10.15.7)
    • Docker Desktop(バージョン3.5.2)

#準備
Docker Desktop導入がまだの人はインストールしてください。

#これまでのLaravel導入手段まとめ

これまで、Laravel導入手段はLaravel非公式のもので様々な方法がありました。
PHPバージョン8以降から、Laravel公式からLaravel Sailが登場し、手軽にLaradockの環境構築ができるようになりました。

Laravel Sailで環境構築

1.Docker Desktop導入が完了したら、ターミナルを開き、作成したい任意の場所に移動します。
 (今回はデスクトップに作成します。$の後からコマンド入力してください)

Terminal
$ cd /Users/[自分のPC名]/Desktop

確認方法:

Terminal
$ pwd

#`pwd`コマンド実施後、下記のように返ってきたらOK。
/Users/[自分のPC名]/Desktop
[自分のPC名] Desktop

2.下記curlコマンドを叩く。今回はexample-appという名前で作成してます。

Terminal
$ curl -s "https://laravel.build/example-app" | bash

3.example-appに移動し、下記コマンドでSailの開始する

Terminal
$ cd example-app
$ ./vendor/bin/sail up -d

4.Sail開始後、localhostにアクセスし、Laravelの画面が表示されたらLaravel導入成功。

5.下記コマンドで一旦、Sail停止します。

Terminal
$ ./vendor/bin/sail stop

Bashエイリアスの設定
上記コマンドを短縮したい場合は、エイリアス設定しておくとsail upsail stopsailコマンドで操作ができる。

Terminal
$ alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'

Docker起動の度に、上記エイリアス設定しないとSailコマンドが使えないので注意。
Dockerで永続的にエイリアス設定する方法をご存知の方がいれば、コメントで教えていただけると嬉しいです。

6.初回起動時に.env.exampleファイルが作成されているかと思うので、自分の環境様様に.envとしてコピーします

Terminal
$ .env.example .env

7.上記⑥でコピーした.envファイルの5行目(APP_URL=)の下にLaravelのポート番号を追記する

.env
APP_PORT=8777

8.上記手順③、④を再度実施し、Laravel sail起動後、http://localhost:8777/ へアクセスし、Laravelの画面が表示されたら設定完了です。

#phpMyAndminを追加する

Sailは単なるDockerであるため、Sailに関するほぼすべてを自由にカスタマイズできます。

  • 公式でPhpMyAndminはサポートしてない。
  • 公式に上記の記載があったので、通常のDockerでPhpMyAdminを使用する時と同じ様にdocker-compose.ymlファイルに追記していきます。
  1. Sailを起動している場合、./vendor/bin/sail stopsail stopで一旦Sailを停止します。
  2. docker-compose.ymlのmysqlの下あたりにPhpMyAdminを追記する。(インデント等も同じになるよう記載してください)
docker-compose.yml
phpmyadmin:
        image: phpmyadmin/phpmyadmin
        links:
            - mysql:mysql
        ports:
            - 8888:80
        environment:
            MYSQL_USERNAME: '${DB_USERNAME}'
            MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
            PMA_HOST: mysql
        networks:
            - sail

3.PhpMyAdminでログインする際に、データベースのログイン情報が必要なので、データベース情報を追記します。

.env
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=8888
# []内は自分が作成したデータベース名を記述する
DB_DATABASE=[example-app]
# []内は自分が作成したデータベースのユーザー名を入力する
DB_USERNAME=[username]
# []内は自分が作成したUserのパスワード入力する
DB_PASSWORD=[password]

4.http://localhost:8888/index.phpにアクセスし、データベースのログイン情報を入力しPhpMyAdminにログインできれば完了です。

最終確認

最後にphpMyAndminとLaravel画面が表示されるか確認し、それぞれのページが表示されれば環境構築終了。

  • Laravel

  • phpMyAndmin

この後のLaravelを使ってのサイト作成は通常のLaravelと基本的には同じです。

BurpSuite等のプロキシツールでLaravelアプリの通信を取得したい場合

上記、Laravelで設定したlocalhostのポート番号8777で通信取得できます。

まとめ

Laravel公式がサポートしている範囲内であれば、Sailを使ったLaravelの環境構築を爆速で行えるということが分かりました。
Intel Macを持っている初心者の人であれば、curlコマンドを叩くだけでLaravelの環境構築ができてしまうので
Laravelの環境構築でつまずくことは、大分減りそうかな。と思いました。

公式がサポートしていないサービスを使いたい等、自分でSailに追加してオリジナルで環境構築を行う場合は、
.ymlファイルやDB作成時の記載方法等のDocker知識がないと厳しそうかなと感じました。

来年1月にはLTSバージョンが出るらしいので、その時にまた適宜修正したいと考えています。

28
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?