Cloud9でLaravelの環境構築・データベース(MySQL)の構築をする

最近Laravelの勉強を始めたばかりです。
Cloud9を使って環境構築をしようとしたのですが、結構悩んで時間がかかってしまったので記事にまとめたいと思います。

### 【Cloud9の作成】
①AWSの無料アカウントを作成しているのが前提です！
②Cloud9のページまで行き、「Create environment」を押します。
③Step1:Name environment
・Name部分に好きな名前（今から作成するcloud9のワークスペース）をつけます。
④Step2:Configure settings
　・Environment typeはデフォルトのままで大丈夫です。
　・Instance typeもデフォルトのままで大丈夫ですが、無料枠に収めたい方は必ず「t2.micro」が選択されているか確認して下さい！
　・PlatformはAmazon Linux AMIを選択しました。
　（Amazon Linux 2にすると、データベースがMariaDBというものになってしまいました。上記を選択すると、MySQLになりました。おそらくAmazon Linux 2でも変更できるのでしょうが、やり方が分かりませんでした...）
⑤「Next Step」を押します。
⑥内容を最終確認し、「Create environment」を押すと、cloud9の完成です！

### 【Laravelをインストール・アプリの立ち上げ】
①Cloud9上部のWindowタブからNew Terminalを押して、ターミナルを立ち上げます。
②以下のコマンドを実行し、PHPのバージョンを上げます。

```
$php -v
$sudo yum -y update
$sudo yum -y install http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
$sudo yum -y install php73 php73-mbstring php73-pdo php73-mysqlnd
$sudo unlink /usr/bin/php
$sudo ln -s /etc/alternatives/php7 /usr/bin/php
$sudo yum install php php-mbstring php-pdo php-gd php-xml
$php -v　　　　#バージョンが上がっているか確認！
```

③以下のコマンドを実行し、Composer(PHPのライブラリ管理ツール)をインストールします。

```
$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
$ composer  #文字絵？みたいなので、composerと表示されればOK!
```

④以下のコマンドを実行し、アプリケーションの作成をします。

```
$ composer create-project laravel/laravel ./ここは作りたいアプリケーション名 --prefer-dist
```

⑤サーバーを立ち上げてみましょう。以下を実行し、PreviewタブのPreview Running Applicationを押します。Laravelのデフォルト？のページが表示されていれば成功です！

```
$ cd 自分のアプリケーション名
$ php artisan serve --port=8080
```

### 【データベース構築】
①以下を実行し、MySQLのバージョンを上げます。
```
$ sudo service mysqld stop
$ sudo yum -y erase mysql-config mysql55-server mysql55-libs mysql55
$ sudo yum -y install mysql57-server mysql57
$ sudo service mysqld start
$ mysql --version　　#バージョンが5.7以上になっていることを確認！
```

②以下を実行し、データベースを作成します。

```
$ mysql -u root -p　　　#パスワードを聞かれたので何も入力せずEnterを押しました
$ create database 自分の好きなデータベースの名前;
$ exit;
```

③以下を実行、マイグレーションファイルを作成します。
```
$ php artisan make:migration create_複数形のモデル名_table --create=複数形のモデル名;　　#posts等
```

④database/migrations/今日の日付create_先程の名前_table.phpを開きます。下記コードの中央ぐらいに追加したいカラムを入力します。

```
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateDogsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id();
            $table->string('name');　　　　#追加したいカラムを入力
            $table->text('comment');　　　　　#追加したいカラムを入力
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('posts');
    }
}
```

⑤app/Providers/AppServiceProvider.phpを開きます。２箇所追加するところがあります！

```
<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;　　　　＃ここを追加！

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Schema::defaultStringLength(191);　　　　　＃ここを追加！
    }
}
```

⑥「.env」ファイルを開く。見つからない方は、隠しファイルを表示させると出てくるかもしれません！（歯車マーク→show hidden files）
たくさん色々書いていますが、下記の部分を見つけて書き換えましょう！

```
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=作成したデータベースの名前
DB_USERNAME=root
DB_PASSWORD=
```

⑦下記のマイグレーションコマンドを実行。

```
$ php artisan migrate;
```

### 【MySQLに入り、確認する】

```
$ mysql -u root -p;
$ use 作成したデータベースの名前;
$ show tables;
$ desc 先程のモデルの複数形;
```

先程作成したテーブルが確認できれば成功です！！
最後まで閲覧いただきありがとうございました！！
プログラミング初心者で、Laravelに関してはもっと初心者なので、間違い等あるかもしれないです......
何かお気づきのことがあればコメントお願いいたします！！


#### 参考にさせていただいたサイト（※大変助かりました！ありがとうございます！）

https://www.3ryu-engineer.work/cloud9-laravel/

https://iwasawa-officialweb.com/2018/11/03/aws-cloud9-%e3%81%a7-laravel-%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b%e3%80%90%e3%83%87%e3%83%bc%e3%82%bf%e3%83%99%e3%83%bc%e3%82%b9%e6%a7%8b%e7%af%89%e3%80%91/