Laravelのインストール、初期設定、GitHubの使用



Laravelのインストールには専用インストーラを使用する方法とComposerを利用する方法の2つがありますが、今回はComposerでのインストールを行います。
DBはMySQLを使います。
PHPとphpmyadminが使える環境を前提に進めます。

## Composer

### Composerのインストール
ComposerはPHPのパッケージ管理ツールです。
下記のサイトからインストールできます。
[Composer](https://getcomposer.org/)

### Composerのインストール確認
下記のコマンドを実行してバージョンが表示されればインストールできています。

```:terminal
 composer --version
 //composer -vでも可
```

### Composerのパッケージインストール時間の短縮

#### packagist.jpの使用
海外に向いているリポジトリを、日本の有志の方が運用をおこなっているリポジトリ( https://packagist.jp/ )に向ける事でインストールにかかる時間が短縮できます。

##### リポジトリの追加

```:terminal
composer config -g repos.packagist composer https://packagist.jp
composer update
```

##### リポジトリの削除

```:terminal
composer config -g --unset repos.packagist
```

#### Prestissimoの使用
Prestissimoを導入してダウンロードを並列処理する
[Prestissimo](https://packagist.org/packages/hirak/prestissimo)

```:terminal
composer global require hirak/prestissimo
```



## Laravelのインストール

```:terminal
  //最新版をインストールする場合
  composer create-project laravel/laravel [プロジェクト名] --prefer-dist
  
  //バージョンを指定してインストールする場合(x.0の部分がバージョン指定)
  composer create-project laravel/laravel [プロジェクト名] --prefer-dist "x.0.*"

```
※ --prefer-distはファイル圧縮版を使用するというオプションです。


### Laravelの動作確認(簡易サーバー)
プロジェクトのルートに移動して下記コマンドを実行します。

```:terminal
 php artisan serve
```
http://localhost:8000/  もしくは　http://127.0.0.1:8000 にアクセスして、Laravelのデフォルトの画面が表示されればOKです。
Ctrl+Cで簡易サーバーを終了します。


##初期設定
### タイムゾーン、言語を日本にする

```config/app.php
'timezone' => 'UTC',
//↓
'timezone' => 'Asia/Tokyo',
     
'locale' => 'en',
//↓
'locale' => 'ja',
```

### DBの文字コードをutf8にする

```:config/database.php
'mysql' => [
  'charset' => 'utf8mb4',
  //↓
  'charset' => 'utf8',
             
  'collation' => 'utf8mb4_unicode_ci',
  //↓
  'collation' => 'utf8_unicode_ci',            
]
```

### デバッグバーの使用

#### インストール
簡易サーバーを立ち上げると下部にデバッグ情報が表示されるようになります。

```:terminal
composer require barryvdh/laravel-debugbar
```

#### 非表示
本番環境など表示したくない環境では下記のように値を変更します。

```:.env
APP_DEBUG=true
//↓
APP_DEBUG=false
```

### DB(MySQL)の設定
phpMyAdminを使ってDB(DB名)とユーザー(ユーザー名、パスワード)を作成して、下記を編集します。

```:.env
 DB_CONNECTION=mysql
 DB_HOST=127.0.0.1
 DB_PORT=3306
 DB_DATABASE=DB名
 DB_USERNAME=ユーザー名
 DB_PASSWORD=パスワード
```





### Laravel-ui、認証

```:terminal
//バージョン指定しない場合
composer require laravel/ui --dev

//バージョン指定する場合
composer require laravel/ui:^1.0 --dev
```

#### スカフォールド生成

```:terminal
//ユーザー認証不要時
php artisan ui bootstrap
php artisan ui vue
php artisan ui react
 
//ユーザー認証
php artisan ui bootstrap --auth
php artisan ui vue --auth
php artisan ui react --auth
```








### npm

Please run "npm install && npm run dev" to compile your fresh scaffolding.と表示されるので従います。

#### Node.jsのインストール

npmがインストールされていない場合、Node.jsをインストールします。
(Node.jsがインストールされていればnpmも使えるようになります。)
[Node.js](https://nodejs.org/en/download/)

#### Node.js、npmのインストール確認
バージョンが表示されればインストールできています。

```:terminal
node -v
npm –v
```

#### npmによるパッケージインストール
package.jsonの内容に従ってパッケージがインストールされます。

```:terminal
npm install
```

#### CSSとJavaScriptのビルド

```:terminal
//一回だけビルド(開発用)
npm run dev

//一回だけビルド(本番用)
npm run prod

//ファイルの変更を感知してビルド
npm run watch
```


ビルド対象のファイル、ビルドして生成されるファイルはwebpack.mix.jsで確認、変更できます。

|種類|ビルドの対象ファイル|
|:--|:--|
|JavaScript|resources/js/app.js|
|SCSS|resources/sass/app.scss|

 
|種類|ビルドで生成されるファイルが格納されるフォルダ|
|:--|:--|
|JavaScript|public/js|
|CSS|public/css|





## migration
3つのテーブルが作成されます。
(上でユーザー認証機能を追加している場合はusersテーブルを加えた4つのテーブルが作成されます。)

```:terminal
php artisan migrate
```

#### 作成されるテーブル
- failed_jobs
- migrations
- password_resets
- (users)



### Laravelの動作確認(簡易サーバー)
プロジェクトのルートに移動して下記コマンドを実行します。

```:terminal
 php artisan serve
```
http://localhost:8000/  もしくは　http://127.0.0.1:8000 にアクセスして、Laravelのデフォルトの画面の右上にLOGINとREGISTERが追加されていればOKです。
Ctrl+Cで簡易サーバーを終了します。





## エラーメッセージの日本語化
resources/lang/に下記のjaフォルダをenフォルダと同じ階層に配置します。
https://github.com/minoryorg/laravel-resources-lang-ja

※jaフォルダ内のファイルの編集でさらにメッセージのカスタマイズができます。

```:resources\lang\ja\validation.php
'attributes' => [],
//↓
'attributes' => ['email'=>'メールアドレス',
'name'=>'名前'
],
``` 

## GitHubの使用

### GitHubへpushする
GitHubにPushするまでの手順です。

#### GitHubでリポジトリ作成
GitHubのマイページにあるRepositoriesタブを開き、Newボタンを押します。
リポジトリ名を入力して、空っぽの新規レポジトリを作成しておきます。

#### ローカルでのGitのリポジトリ作成
プロジェクトルートに移動してGitのリポジトリを作成します。

```:terminal
git init
```

#### .gitignore
Laravelでは、gitを使う前提で.gitignoreがディレクトリ直下に用意されています。

|無視ファイル/フォルダ(一部抜粋)|内容|
|---|---|
|.env|接続情報などが保存されているので、誤ってGitHubに上がらないように設定されている|
|/vender|composerでインストールしたファイル (laravel自体もここに入っている)|
|/node_modules|npmでインストールしたファイルが入っている|

#### push

```:terminal
git add .
git commit -m "メッセージ"
git remote add origin https://github.com/ユーザー名/リポジトリ名.git
git push -u origin master
```

### GitHubからcloneする
今度はGitHubからファイルを取ってきて使えるようにしていきます。

```:terminal
git clone https://github.com/ユーザー名/リポジトリ名.git
```

cloneしただけでは、Laravelの動作に必要なファイルが足りないので、.gitignoreで無視していたファイルを作成します。

#### .envファイルの作成

##### DBの接続情報
.env.exampleをコピーして.envにリネームして、接続情報などを記入します。
DBがなければ作成が必要になります。

##### デバッグバーの使用
使用する場合のみ変更します。

```.env
APP_DEBUG=false
//↓
APP_DEBUG=true
```

##### アプリケーションキーの作成

```:terminal
php artisan key:generate
```

.envのAPP_KEYに値が書き込まれます。


#### /vender配下のファイル (Composerでのパッケージインストール)
cloneした環境にComposerがインストールがされていない場合はインストールします。
下記コマンドでcomposer.jsonの内容に従ってパッケージがインストールされます。

```:terminal
composer install
```

#### /node_modules配下のファイル (npmでのパッケージインストール)

cloneした環境にnpmがインストールがされていない場合はインストールします。
下記コマンドでpackage.jsonの内容に従ってパッケージがインストールされます。

```:terminal
npm install
```

### migration
テーブルを作成します。

```:terminal
php artisan migrate
```

### Laravelの動作確認(簡易サーバー)
プロジェクトのルートに移動して下記コマンドを実行します。

```:terminal
 php artisan serve
```
http://localhost:8000/  もしくは　http://127.0.0.1:8000 にアクセスして、Laravelのデフォルトの画面が表示されればOKです。
Ctrl+Cで簡易サーバーを終了します。


## 設定変更が反映されない場合

キャッシュやコンフィグのクリアを試してみてください。

```:terminal
php artisan cache:clear
php artisan config:clear
```