# cloud9を使ったlaravel環境構築 ### AWSアカウントを作成する アカウント登録にクレカ登録、電話番号認証等必要になるので、ちょっと面倒ですが・・。cloud9の利用は無料ですが、サーバーをたてるとサーバーの使用料がかかります。でも登録から12ヶ月間は自動で無料枠が付与されます。詳しくは調べてみてください。 ### AWS Cloud 9上に新たな環境を作成 アカウントを作成したら、cloud9で環境を作成します。 1. create environmentをクリック ![](https://i.imgur.com/gA8370m.png) 2. Nameで適当に名前つけて、次に進む ![](https://i.imgur.com/OqsPLme.png) 3. Configure settingsはデフォルトのままでいいので、そのまま次へ進む 4. [create environment]を押して、環境が作成されます。 5. 環境作成されると、こんな画面に。 ![](https://i.imgur.com/HaCOMeg.png) 左側がフォルダ構成、ファイルクリックすると画面中央に表示されます(今AWS Cloud9と表示されているところ)。下にあるのがコマンド操作部分(ec2-user:~/environment $ と表示されているところ)。 次から、コマンドラインで環境構築していきます。 ### PHPのバージョンを7.1に上げる PHPのバージョン確認。 ``` $ php -v PHP 5.6.40 (cli) (built: Oct 31 2019 20:35:16) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with Xdebug v2.5.5, Copyright (c) 2002-2017, by Derick Rethans ``` デフォルトのPHPのバージョンが5.6なので、7.1にあげます。下記のコマンドを実行します。 ``` $ sudo yum -y update $ sudo yum -y install php71 php71-mbstring php71-pdo php71-intl php71-pdo_mysql php71-pdo_pgsql php71-xdebug php71-opcache php71-apcu $ sudo unlink /usr/bin/php $ sudo ln -s /etc/alternatives/php7 /usr/bin/php ``` ↑2行目でmysqlのPDOドライバをインストールしています。 cloud9でのlaravel環境構築を紹介している記事で、エラーになる場合があって、それがこのドライバがインストールされていないのが原因でした。デフォルトだと、`pdo_sqlite`しか入っていないです。 ``` $ php -m | grep pdo #ドライバの確認 pdo_mysql pdo_pgsql pdo_sqlite ``` ### Composerのインストール ``` $ curl -sS https://getcomposer.org/installer | php $ sudo mv composer.phar /usr/local/bin/composer $ composer #確認用:composerの大きな文字が表示されてればOK ``` ### laravelのインストール ``` $ composer global require "laravel/installer" ``` メモリ不足でインストールができない時(composerコマンドでエラーになる) https://qiita.com/takaaki-mizuno/items/fc1b9ef513609cab7eb9 ### laravelプロジェクトの作成 ``` $ composer create-project laravel/laravel [プロジェクト名] ``` バージョンを指定しない場合、最新バージョンで作成されます。指定する場合は、プロジェクト名の後に例えば`5.5.*`などとつけて指定します。 ``` ec2-user:~/environment $ ls laravel-tdd README.md ``` environment直下に、プロジェクト(laravel-tdd)が作成されています。 ### mysqlのバージョンをあげる ``` ec2-user:~/environment $ mysql --version mysql Ver 14.14 Distrib 5.5.62, for Linux (x86_64) using readline 5.1 ``` ↑デフォルトだと5.5で、migrationでエラーになることがあるので、バージョンをあげます。下記コマンドを実行します。 ``` $ 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でDBを作成する mysqlにログインします。パスワードは空白のままでエンター。 ``` ec2-user:~/environment $ mysql -uroot -p Enter password: #空欄 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.7.30 MySQL Community Server (GPL) Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> ``` プロジェクト用のDBを作成します。今回はsampleという名前で作成します。 ``` mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.01 sec) mysql> create database sample; Query OK, 1 row affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sample | | sys | +--------------------+ 5 rows in set (0.00 sec) ``` 作成されました。 ### laravelの環境ファイルのDB設定を変更する exitでmysqlから一旦ログアウトします。プロジェクト下に移動し、`.env`という隠しファイルがあるので、それを編集します。 ``` ec2-user:~/environment $ ls laravel-tdd README.md ec2-user:~/environment $ cd laravel-tdd ec2-user:~/environment/laravel-tdd $ ls -a . artisan composer.lock .editorconfig .gitattributes phpunit.xml resources storage vendor .. bootstrap config .env .gitignore public routes .styleci.yml webpack.mix.js app composer.json database .env.example package.json readme.md server.php tests ``` ![](https://i.imgur.com/iQgT17h.png) ファイル構成欄の歯車マークをクリックすると、[show hidden files]という部分があるので、ここにチェックを入れると隠しファイルも表示されます。`.env`ファイルを開きます。 DBの設定のところを、下記のように書き換えます。 ``` DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=sample DB_USERNAME=root DB_PASSWORD= ``` 保存したら、artisanコマンドでmigrateできるか確認してみます。 ``` ec2-user:~/environment/laravel-tdd $ php artisan migrate Migration table created successfully. Migrating: 2014_10_12_000000_create_users_table Migrated: 2014_10_12_000000_create_users_table (0.06 seconds) Migrating: 2014_10_12_100000_create_password_resets_table Migrated: 2014_10_12_100000_create_password_resets_table (0.03 seconds) ec2-user:~/environment/laravel-tdd $ ``` ↑こんな感じで実行できれば、DBとの紐付けが成功しています。先ほど作ったDBみてみると、新しくテーブルが作成されています。 ``` mysql> use sample Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +------------------+ | Tables_in_sample | +------------------+ | migrations | | password_resets | | users | +------------------+ 3 rows in set (0.01 sec) mysql> ``` 最後に、ブラウザで表示確認してみます。まず、ローカルサーバーをたてて、 ``` ec2-user:~/environment/laravel-tdd $ php artisan serve --port=8080 Laravel development server started: <http://127.0.0.1:8080> ``` [preview running application]をクリックすると、ブラウザが開きます。 ![](https://i.imgur.com/iJ3pFR4.png) laravelの画面が表示されてたらOKです! ![](https://i.imgur.com/onfw0TF.png)