AWS Cloud9でLaravel環境を構築その壱

Macでも・・・Windowsでも・・・開発環境を構築できない場合、Cloud9しかないかなあ〜と思ったのでやってみました。
ミドルウェア達は手動で入れます。

# マシンスペック
* Mac mini 2018
* macOS Catalina（10.15.x）
* Intel Core-i7 3.2GHz 6コア
* メモリ 32GB
* SSD 512GB

# Laravel環境
* Nginx 最新版
* PHP（PHP-FPM） 7.2.x
* MySQL 5.7
* Composer 最新版
* Laravel 5.6

# やること
* Cloud9でLaravel環境構築
* ミドルウェア達は手動構築

# AWS Cloud9の準備

下記を参考に準備する。
[AWS Cloud9+Docker ComposeでLaravel環境を構築その壱#AWS Cloud9の準備](https://qiita.com/_bobtabo_/items/843d4a5f022b4e28780e#aws-cloud9%E3%81%AE%E6%BA%96%E5%82%99)

# ミドルウェアなどの準備

### PHPインストール

PHPはインストール済み。

```console
$ php -v
PHP 7.2.24 (cli) (built: Oct 31 2019 18:27:08) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
```

でも、Laravelを動かすライブラリが不足してるので、インストールし直す。

```
$ sudo yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
$ sudo yum -y install --enablerepo=remi,remi-php72 php php-devel php-mbstring php-pdo php-gd php-xml php-pecl-mcrypt php-mysqlnd php-fpm php-pecl-zip php-bcmath
・・・
Complete!
```

### Nginxインストール

```console
$ sudo vi /etc/yum.repos.d/nginx.repo
★点線内をコピペ
---
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
enabled=0
gpgcheck=0
---
:wq

$ sudo yum -y --enablerepo=nginx install nginx
```

### 設定ファイルの編集


##### PHP-FPM

```console:/etc/php-fpm.d/www.conf
$ sudo vi /etc/php-fpm.d/www.conf
★下記を点線内に編集
user = apache
group = apache
listen = /run/php-fpm/www.sock
;listen.owner = nobody
;listen.group = nobody
;listen.mode = 0660
↓
---
user = nginx
group = nginx
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
---
:wq
```

##### Nginx

```console:/etc/nginx/conf.d/default.conf
$ sudo vi /etc/nginx/conf.d/default.conf
★全行を削除
:%d

★点線内をコピペ
---
server {
    listen 8080;
    server_name laravel.cloud9;

    charset UTF-8;
    access_log  /var/log/nginx/access.log;
    location / {
        root /home/ec2-user/environment/laravel/public;
        try_files $uri /index.php?$query_string;
    }

    #error_page 404 /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page 500 502 503 504  /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        root /home/ec2-user/environment/laravel/public;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
---
:wq
```

##### 起動および自動起動設定

```console
$ sudo systemctl start php-fpm
$ sudo systemctl enable php-fpm
Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.

$ sudo systemctl start nginx
$ sudo systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
```

##### Nginxが/home/ec2-user配下を実行できるようにする

```console
$ chmod 701 /home/ec2-user
```

### MySQLインストール

##### MariaDBのアンインストール

```
$ rpm -qa | grep aria
mariadb-common-10.2.36-1.amzn2.0.1.x86_64
mariadb-config-10.2.36-1.amzn2.0.1.x86_64
mariadb-libs-10.2.36-1.amzn2.0.1.x86_64
mariadb-10.2.36-1.amzn2.0.1.x86_64

$ sudo yum -y remove mariadb*
$ sudo rm -rf /var/lib/mysql
```

##### MySQLインストール

```console
$ sudo rpm -Uvh https://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql57-community-release-el7-10.noarch.rpm
$ sudo yum -y install --enablerepo=mysql57-community mysql-community-server
$ mysqld --version
mysqld  Ver 5.7.30 for Linux on x86_64 (MySQL Community Server (GPL))
$ sudo systemctl enable mysqld.service
$ sudo systemctl start mysqld.service
$ sudo grep 'temporary password' /var/log/mysqld.log
2020-06-14T11:56:34.296676Z 1 [Note] A temporary password is generated for root@localhost: XXXXXX
$ sudo mysql_secure_installation
Enter password for user root: XXXXXX
★パスワードは「英字小文字、英字大文字、数字、記号」の組み合わせにしたら通る
 例）cloud9#CLOUD9
New password: cloud9#CLOUD9
Re-enter new password: cloud9#CLOUD9
〜 以降の質問は全て y で回答し、パスワード聞かれたら上記パスワードを入力する 〜
All done!
```

##### データベース作成など

```console
$ mysql -u root -p
Enter password: cloud9#CLOUD9

★DB：hoge、USER：fuga、PASSWORD：cloud9#CLOUD9（※好きなのに変える）
mysql> create database hoge default character set utf8 collate utf8_general_ci;
mysql> CREATE USER fuga@'%' IDENTIFIED BY 'cloud9#CLOUD9';
mysql> GRANT ALL ON hoge.* TO fuga@'%';
mysql> CREATE USER fuga@'localhost' IDENTIFIED BY 'cloud9#CLOUD9';
mysql> GRANT ALL ON hoge.* TO fuga@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> quit
```

### Composerインストール

```console
$ curl https://getcomposer.org/installer | php
$ sudo mv -i composer.phar /usr/local/bin/composer
$ composer -v
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 2.0.13 2021-04-27 13:11:08
・・・
```

### Laravelインストール

##### プロジェクト作成

```console
$ composer create-project --prefer-dist laravel/laravel laravel "5.6.*"
```

##### パッケージ追加とパーミッション変更

```console
$ cd laravel
$ composer require --dev barryvdh/laravel-ide-helper
$ composer require --dev squizlabs/php_codesniffer
$ chmod -R 777 storage
$ chmod -R 777 bootstrap/cache
```

##### データベース接続設定

```terminal:.env
$ vi .env
★下記を点線内に編集
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
↓
---
DB_DATABASE=hoge
DB_USERNAME=fuga
DB_PASSWORD=cloud9#CLOUD9
---
:wq
```

##### マイグレーション＆シーダー実行

```terminal
$ php artisan migrate:fresh --seed
```

##### キャッシュとか色々クリアするシェル作成＆実行

```terminal:bin/clear-laravel.sh
$ mkdir bin
$ vi bin/clear-laravel.sh
★下記を点線内をコピペ
---
#!/bin/bash
php artisan view:clear
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan clear-compiled
php artisan config:cache
composer dump-autoload
php artisan ide-helper:generate
php artisan ide-helper:models -N
php artisan ide-helper:meta
---
:wq
$ chmod 755 bin/clear-laravel.sh
$ bin/clear-laravel.sh
```

### ブラウザで動作確認

「Preview」 → 「Preview Running Application」を選択する。
![スクリーンショット 2021-05-11 22.43.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/ff368a84-e787-1e5b-e4f3-95ce26185417.png)

ブラウザを別タブで開く。
![スクリーンショット 2021-04-20 2.41.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/0e4c38b4-d638-23ae-3262-03fdea9fa689.png)

下記ページが表示されればOK。
![スクリーンショット 2021-04-20 2.44.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/2fbcaac7-dee1-736f-4fee-6900a9c4a5fd.png)