前のパートに戻る 完了して次のパートへ  

  1-2 Laravelプロジェクトの作成

このパートではLaravelのインストールを行っていきます。

本パートの目標物


本パートではCloud9にLaravelをインストールし、初期設定を完了することを目標とします。

本パートのゴールは下記2点が目視できる事で完了となります。

  • Laravelの初期画面が確認できる
  • マイグレーションで作成したテーブルを確認できる

目標物を作成するまでの流れ


  1. composerのインストール
  2. Laravelのインストール
  3. テーブル(migrationファイル)の作成
  4. 作成したテーブルの確認

前パートでインストールしたPHPとMySQLを使ってLaravelが動く環境を作っていき、データベースとの連携を完了させてコードを書く直前まで完了します。

では実際に進めていきましょう。

1. composerのインストール


composerとは?

composerとは、PHPのパッケージ管理ツールです。利用するパッケージ(ライブラリ)間の依存関係も解決してくれます。

今後Laravelで開発を進めるにあたり、ライブラリを導入することも多々あります。

ライブラリなどを導入した際にプロジェクトメンバーとの共有やライブラリ同士の依存関係(ライブラリAがないとライブラリBが動かない等)を管理してくれるパッケージマネージャーと呼ばれるものです。

インストール

以下のコマンドでcomposer本体をダウンロード・インストールしましょう。

$ curl -sS https://getcomposer.org/installer | php

続いてどこのパスからでもcomposerコマンドを使えるようにしておきます。

$ sudo mv composer.phar /usr/bin/composer

これにてcomposerのインストールが完了したので、動作を確認していきます。

$ composer -v

でバージョンを確認し、以下のようにcomposerのアスキーアートが確認できればインストール完了です。

2. Laravel6.0のインストール


ではここからcomposerを使ってLaravelをインストールしていきます。

インストール

本教材ではLaravel6.0を使っていきますので、ターミナルから以下のコマンドを打ってください。

$ composer create-project "laravel/laravel=6.0.*" --prefer-dist books

下の画像のように緑の文字で successfully と表示され、左のファイル管理の部分に books というフォルダが生成されていればインストールが完了しています。

初期設定

このセクションではLaravelのトップページを表示させるために必要な初期設定を行っていきます。

ではまず以下のコマンドでLaravelディレクトリに移動します。

$ cd books

ではまずデータベース接続設定を変更していきましょう。

環境設定ファイルは隠しファイルなので、以下のように隠しファイルを表示していきます。

このように .env ファイルが見えれば .env ファイルをクリックして開きます。

以下のように変更していきます。

  • DB_DATABASE : booksに
  • DB_PASSWORD : MySQL初期設定時に決定したもの

変更が終わったら Ctrl + s もしくは ⌘ + s で忘れずに保存しましょう。

次にディレクトリの書き込み権限付与を変更してbootstrapとstorageディレクトリにログファイルやキャッシュファイルを書き込めるようにしましょう。

以下のコマンドを実行してください。

$ sudo chmod -R 0777 bootstrap/
$ sudo chmod -R 0777 storage/

このコマンドを実行する理由としては、自分以外(ターミナル操作以外)でもディレクトリ内にファイルを書き込めるようにする必要があるからです。

Laravelは独自のログ(アプリの動作履歴)を storage/logs/ に書き込んでいくのですが、書き込みユーザーはapache(Webサーバー)です。

そのため、自分以外もファイルの書き込みをできるようにしておく必要があるためです。

動作確認

以下のコマンドを打つと開発用のサーバーが起動します。

$ php artisan serve --host=$IP --port=$PORT

3. テーブル(migrationファイル)の作成


マイグレーションとはデータベースの履歴管理の仕組みになり、PHPファイルでテーブルの定義を行うことができます。

まずはレビュー用のテーブルを作っていきましょう。

$ php artisan make:migration create_reviews_table --create=reviews

コマンドの実行が成功すると、以下のファイルが制裁されます。

database
└── migrations
    └── 日付_タイムスタンプ_create_reviews_table.php

生成されたファイルを以下のように変更してください。

マイグレーションファイルの中身を解説していきます。

数値型

  • bigIncrements : bigInteger型の自動採番を定義します。
  • bigInteger : 20桁の数値型カラムを定義します。
  • tinyInteger : 4桁までの数値型カラムを定義します

文字列型

  • string : 255文字までの文字列が入るカラムを定義します。
  • longText : 文字列型のカラムで最大長が入るカラムの型。

timestamp型

  • created_at,updated_at : laravelの仕様でtimestamp()では自動入力されない。そのため、DB:raw()で直接SQL文をじっこうしています。

外部キー

マイグレーションファイルの中で外部キー制約を設定しています。 以下のコードがreviewsテーブルの中のuser_idはusersテーブルの中に存在するものしか入れることができませんといった制約です。

もしこの制約がない場合、usersテーブルに存在しない人が本のレビューを書くとはおかしいですよね?

こういったデータの不整合を防ぐのが外部キー制約になります。

マイグレーションの実行

マイグレーションファイルの編集が終わりましたら、保存してターミナルに以下のコマンドを入力してください。

$ php artisan migrate

php artisanコマンドとはLaravelが用意しているコマンドでLaravelに関わる便利な機能を簡単に使うことができます。

migrateはマイグレーションファイルの内容を実行するコマンドになるので、先ほど編集した内容がテーブルに反映されているのか、確認してみましょう。

4. 作成したテーブルの確認


最後にマイグレーションで作成したテーブルが本当に存在するのか確認していきましょう。まずはMySQLに接続します。

$ mysql -uroot -p先ほど決めたパスワード

とコマンド入力していきます。 -pのあとはスペースを入れずに パスワードを入力します。

MySQLにログインしたら、まずデータベースを選択します。

mysql> use books;

次にマイグレーションで作ったreviewsテーブルの構造を確認してみましょう。以下のコマンドを実行してください。

mysql> SHOW FULL COLUMNS FROM reviews;

このようにテーブルの構造がターミナルに返ってくれば無事に作成できています。

また、マイグレーションが成功している時点でPHPからMySQLへの接続ができている証拠なので、環境設定も上手くできています。

5. 開発用サーバーの起動


ではCloud9のコンソールに以下のコマンドを打って開発用サーバーを実行してみましょう。

$ php artisan serve --host=$IP --port=$PORT 

以下のような反応がターミナルから返ってきたら、サーバーの立ち上げが完了しています。

$ php artisan serve --host=$IP --port=$PORT            
Laravel development server started: http://127.0.0.1:8080

サーバーを立ち上げるとターミナルが占有されてしまうため、以下のようにターミナルをもう1つ立ち上げて、php artisanコマンドなどは新しいターミナルから実行するようにすると便利です。

では以下のようにプレビューボタンを押して動作を確認してみましょう。

その後、プレビュー画面が小さいので右斜め上矢印ボタンを押すと別タブの全画面で見ることができます。


プレビューでエラーが出てしまう方へ

2020年3月30日追記:新しいパッケージのバージョンですと、httpでのアクセスができない現状が確認されております。

その場合、 app/Http/Middleware/TrustProxies.php に以下のように追記していただき、プレビューを https://プレジューのURL といった形でアクセスしていただくと解決いたします。

最後に

以上で、Laravelのインストールとデータベース・テーブルの作成が終了しました。

2019年現在ではマイグレーションによるテーブル管理を取り入れているプロジェクトが多数なので、マイグレーションを使ったテーブル作成を是非とも抑えてください。

お疲れ様でした。

議論

15 質問

このコースの評価は?