laradockでIntelliJ+Laravel+Vuejsの環境構築：⑴Laravelを動かしてみよう


# 概要

laradockでIntelliJ+Laravel+Vuejsの環境構築：⑴Laravelを動かしてみよう
⬆︎今ここ
laradockでIntelliJ+Laravel+Vuejsの環境構築：⑵Vuejsを動かしてみよう
laradockでIntelliJ+Laravel+Vuejsの環境構築：⑶

# Laravelとは

phpで人気のフレームワーク。
設計方針的に自由度高い。
自由度が高いので汚く書こうと思えば書けちゃう。

2019年8月３日現在
5.5LTSが安定板で最新

公式
https://readouble.com/laravel/


# 環境

今回気にする環境
OS：mac, Ubuntu
docker, docker-compose


- 動作確認してる環境

```
mac book
docker：19.03.1
#docker内で動かした各種バージョン
php:7.2.20-2
composer:1.8.4
laravel:v5.5
```


# 環境構築の種類

~~1.ローカル上に環境を構築する~~
→
osの上にphpenvとか入れてlaravel入れる。今回これ使わない。ってか今後も使わない。つもり

メリット：覚えることが少ない。仮想環境の勉強はしなくて良い。
デメリット：他の人と環境合わせる時に結構めんどくさい。

2.laradock dockerで環境を構築する
→
osの上にdocker入れて、その環境内でlaravel環境を構築する。
今回はこれで。

メリット：docker覚えれば便利。
デメリット：docker覚えないといけない。

~~3.Homesteadで環境を構築する~~
→dockerでいいじゃん的な趣味的な理由でここは学習しない。


# laradockで環境構築

laradockはlaravel専用docker。

前提としてdockerインストールしておいてね。updateもしておいてね。バージョン古いと動かないとかある。
インストールの仕方は他の資料参照。こことか。
https://qiita.com/teradonburi/items/8c23806e20ec8efc0ef4



```
mkdir app
cd app
git clone https://github.com/Laradock/laradock.git
cd laradock
#バージョンを固定してもいいと思う
git checkout v7.15
cp env-example .env
```

APP_CODE_PATH_HOSTはアプリケーションのディレクトリパス。 DATA_PATH_HOSTはプロジェクトのデータ管理場所。 COMPOSE_PROJECT_NAMEはdokcerのコンテナ名。 MYSQL_VERSIONはmysqlのバージョン。

.envの内容を修正。

```:app/laradock/.env
APP_CODE_PATH_HOST=../src/
DATA_PATH_HOST=../.laradock/data
COMPOSE_PROJECT_NAME=laradock-project_name
MYSQL_VERSION=5.7
```


コンテナ起動。※ここでお昼に行ってもいい。かなり待つ。

nginxはwebサーバー。mysqlはdb。
docker-compose up -dで必要なdockerコンテナを立ち上げる。必要なコンテナがなければ、コンテナイメージをpullしてきてコンテナ化する。-dのオプションをつけてるのでバックグラウンドで動く。

~~redisはNoql。beanstalkdはキューイング。~~


```
docker-compose up -d nginx mysql phpmyadmin
```

dockerの中に入ってlaravelプロジェクトを作成する。
composerやnodeなどlaravel開発に必要なものを用意してくれてるコンテナがworkspace。

```
docker exec -it laradock_workspace_1 /bin/bash
or
docker-compose exec workspace bash
```

workspaceコンテナ内部でlaravelプロジェクトを作成する。

```
testappフォルダを作ってその中に5.5バージョンで構築する
composer create-project "laravel/laravel=5.5.*" testapp
testappフォルダを作ってその中に構築する
composer create-project laravel/laravel testapp
srcフォルダを作ってその中に構築する
composer create-project laravel/laravel=5.5 ./
```


```php:src/resources/views/welcome.blade.php
...
            <div class="content">
                <div class="title m-b-md">
                    Laravel2! //こんな感じで少し変更する！
                </div>

                <div class="links">
                    <a href="https://laravel.com/docs">Documentation</a>
                    <a href="https://laracasts.com">Laracasts</a>
                    <a href="https://laravel-news.com">News</a>
                    <a href="https://forge.laravel.com">Forge</a>
                    <a href="https://github.com/laravel/laravel">GitHub</a>
                </div>
            </div>
...
```


アクセスして
http://localhost/

文言が少し変わってることを確認する。

<img width="710" alt="スクリーンショット 2019-08-03 22.27.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64334/6ce2ffab-5ff1-bbde-c2d7-0f3f451bda82.png">



次はVuejsを動かします。







# 参考



ここ参考
https://qiita.com/kurkuru/items/6ce0b9c4632b944347b8

サクッと動かす時はここを参考にしました。
https://daiki-sekiguchi.com/2018/08/13/laravel-vue-js-helloworld/

homestead
https://qiita.com/oreo3@github/items/1705b133e00019800ff6

Laravelについて
https://qiita.com/oreo3@github/items/1705b133e00019800ff6

チュートリアル
https://www.hypertextcandy.com/laravel-tutorial-authentication-part-2


AWSの良い記事
https://miyabi-lab.space/blog/14

docker良い記事
https://y-ohgi.com/introduction-docker/


# PHPで大事なこと


- まだ呼ばれてない関数は実行できない。


/* ここでは関数foo()はまだ定義されていないので
   コールすることはできません。
   しかし関数 bar()はコールできます。 */

https://www.php.net/manual/ja/functions.user-defined.php

# 動かない時

dockerは動いてるか確認

mysqlは動いてるか確認
https://qiita.com/fuwamaki/items/194c2a82bd6865f26045