AmazonLinux2でLaravelを起動する

どうも、若松です。

ひょんなことからLaravelを触ることになったので、AmazonLinux2で一から動かしてみます。

# コマンド一覧

```bash
# PHPインストール
amazon-linux-extras -y install php7.3
yum install -y php-pecl-zip php-mbstring php-dom

# Composerインストール
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
mv composer.phar /usr/local/bin/composer

# 環境変数設定
export COMPOSER_ALLOW_SUPERUSER=1
export COMPOSER_HOME="/composer"
export PATH="$PATH:/composer/vendor/bin"

# Laravelインストール
composer global require "laravel/installer"

# Laravelプロジェクト作成
laravel new

# Laravelサーバー起動
php artisan serve --host 0.0.0.0
```

# コマンド詳細
## PHPインストール

```bash
amazon-linux-extras -y install php7.3
yum install -y php-pecl-zip php-mbstring php-dom
```
PHP7.3はextrasリポジトリに格納されています。
AmazonLinux2では通常のyumリポジトリの他にextrasリポジトリを利用することができます。
extrasリポジトリは専用の `amazon-linux-extras` コマンドで利用できます。

## Composerインストール

```bash
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
mv composer.phar /usr/local/bin/composer
```
Composerのインストールは公式のコマンドをそのまま使用します。
https://getcomposer.org/download/

## 環境変数設定

```bash
export COMPOSER_ALLOW_SUPERUSER=1
export COMPOSER_HOME="/composer"
export PATH="$PATH:/composer/vendor/bin"
```
意味は以下のとおり

| 変数名 | 値 | 意味 |
| --- | --- | --- |
| COMPOSER_ALLOW_SUPERUSER | 1 | rootでのインストールを許可 |
| COMPOSER_HOME | /composer | Composerのインストール先 |
| PATH | $PATH:/composer/vendor/bin | vender配下のbinにPATHを通す |

## Laravelインストール

```bash
composer global require "laravel/installer"
```
ComposerでLaravelをインストールします。
vender配下にlaravelコマンドが配置されます。

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

```bash
laravel new
```
Laravelのプロジェクトを作成します。
プロジェクトを作成すると以下のようなファイル群が配置されます。

```bash
# ll
total 396
drwxr-xr-x  6 root root     84 Jul  6 05:12 app
-rw-r--r--  1 root root   1686 Jul  6 05:17 artisan
drwxr-xr-x  3 root root     34 Jul  6 05:12 bootstrap
-rw-r--r--  1 root root   1550 Jul  6 05:17 composer.json
-rw-r--r--  1 root root 167312 Jul  6 05:17 composer.lock
drwxr-xr-x  2 root root    247 Jul  6 05:12 config
drwxr-xr-x  5 root root     72 Jul  6 05:12 database
-rw-r--r--  1 root root   1125 Jul  6 05:17 package.json
-rw-r--r--  1 root root   1156 Jul  6 05:17 phpunit.xml
drwxr-xr-x  4 root root     98 Jul  6 05:12 public
drwxr-xr-x  6 root root     53 Jul  6 05:12 resources
drwxr-xr-x  2 root root     75 Jul  6 05:12 routes
-rw-r--r--  1 root root    563 Jul  6 05:17 server.php
drwxr-xr-x  5 root root     46 Jul  6 05:12 storage
drwxr-xr-x  4 root root     83 Jul  6 05:12 tests
drwxr-xr-x 40 root root   4096 Jul  6 05:18 vendor
-rw-r--r--  1 root root    538 Jul  6 05:17 webpack.mix.js
-rw-r--r--  1 root root 207745 Jul  6 05:17 yarn.lock
```

## Laravelサーバー起動

```bash
php artisan serve --host 0.0.0.0
```
artisanサブコマンドを用いてサーバーを起動します。
hostオプションでListenアドレスを指定しない場合は `localhost` でListenされます。

## ブラウザでサンプルを表示
`http://[IPアドレス]:8000` にアクセスすることで以下のサンプルを表示します。
<img width="1280" alt="スクリーンショット 2019-07-06 22.57.48.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94816/19e8b773-be43-5b82-892c-b7269b6853d2.png">

# まとめ
AmazonLinux2でLaravelのサンプルを表示するまでをまとめました。
次はDockerで同様のサンプル表示までまとめていきたいと思います。