Edited at

AWSのEC2を立ち上げてLaravelのログイン機能を動かすまで

More than 1 year has passed since last update.

EC2インスタンス立ち上げから Laravel が動くまで何度も同じところでハマる。


編集履歴

2018.03.12


  • コマンドラインの実行権限の表記が曖昧過ぎたので書き直しました。表記方法の間違いなどあればご指摘いただけますと幸いです。


EC2インスタンスを立ち上げる


①IAMユーザーでログインしてインスタンスを作成します


  • 無料枠の Amazon Linux AMI 2016.09.1 (HVM), SSD Volume Typet2.micro を選びます。


②Elastic IPを取得してインスタンスに関連付けます


  • Elastic IP を取得したら必ず関連付けて下さい。無駄なコストが発生してしまいます!


③SSH接続でログインします


インスタンスの初期設定


EC2のタイムゾーン設定

// 一応元ファイルは残しておきます

[ec2-user ~]$ sudo cp /etc/localtime /etc/localtime.org
[ec2-user ~]$ sudo cp -p /usr/share/zoneinfo/Japan /etc/localtime


LAMP環境とついでにphpMyAdminのインストール

 AWSのEC2にLAMP環境とついでにphpMyAdminをインストールする手順

投稿時はチュートリアルでうまくいかなかった部分もあったのですが今は

チュートリアル: Amazon Linux AMI を使用して LAMP ウェブサーバーをインストールする】に

完璧にまとまってますw(2018.03.12)


Apacheの設定


*.conf の設置

ここからはApache の設定ファイルをしていきます。

/etc/httpd/conf/httpd.conf の最後に


/etc/httpd/conf/httpd.conf

# Supplemental configuration

#
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf

とあり、初期状態でカスタム用の ほにゃらら.conf を受け入れてくれます。

今回はこれを利用して /etc/httpd/conf.d/custom.conf で設定していきます。

[ec2-user ~]$ sudo nano /etc/httpd/conf.d/custom.conf

※nanoを使うのは僕の好みですので、エディターはお好きなものをお使いください。


②エラーログファイルの場所を変更する

ログを見るためにいちいちウィンドウを切り替えたりするのは面倒です。

なので、吐き出されたエラーログファイルを簡単にDLできるよう、 /var/www/log あたりに吐き出すようにしています。(しなくてもいいです。)

[ec2-user ~]$ sudo mkdir /var/www/log


/etc/httpd/conf.d/custom.conf

# エラーログ

ErrorLog "/var/www/log/error_log"

# アクセスログ
<IfModule log_config_module>
CustomLog "/var/www/log/access_log" combined
</IfModule>



③読み込む php.ini の場所を変更する

ログ同様、php.iniも編集するたびにターミナルでやるのは面倒です。

なので、 /var/www/config (例)とかに設置することにします。(しなくてもいいです。)


  • デフォルトの php.ini をコピーします。

[ec2-user ~]$ sudo mkdir /var/www/config

[ec2-user ~]$ sudo cp /etc/php.ini /var/www/config/php.ini



  • php.ini の参照先を変更します。


/etc/httpd/conf.d/custom.conf

PHPIniDir "/var/www/config/"



  • ここまで出来たら一度Apacheを再起動します。

[ec2-user ~]$ sudo service httpd restart


④ハロワついでに phpinfo を確認する

Hello World! と出力するだけでは時間が勿体ないので、同時に設定変更の反映を確認します。

[ec2-user ~]$ echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php


  • あなたの Elastic IP を使ってブラウザでアクセスします。

http://【Your Elastic IP】/phpinfo.php

ちゃんと表示されて、php.ini の読み込み設定が反映されているかどうかもチェックしておきます。(しなくてもいいです。)

phpinfo02.png

設定した通り /var/www/config/php.ini になっていればOKです。

- phpinfo.php ファイルを削除します。

[ec2-user ~]$ rm /var/www/html/phpinfo.php


パーミッション設定


www グループを追加して ec2-user を所属させる

[ec2-user ~]$ sudo groupadd www

[ec2-user ~]$ sudo usermod -a -G www ec2-user
[ec2-user ~]$ exit

一度ログアウトして再度入り直します

[ec2-user ~]$ groups // 確認


  • ec2-user wheel www と表示されればOKです。

次に /var/www 以下の所有者情報を再帰的に変更します。

[ec2-user ~]$ sudo chown -R root:www /var/www


②さらにパーミッションを変更

[ec2-user ~]$ sudo chmod 2775 /var/www

[ec2-user ~]$ find /var/www -type d -exec sudo chmod 2775 {} +
[ec2-user ~]$ find /var/www -type f -exec sudo chmod 0664 {} +

ここまでで、ひとまず環境の構築は完了です。

次にフレームワークLaravelをインストールしていきます。


Laravelインストール


①その前に色々インストール


  • Composer

[ec2-user ~]$ curl -sS https://getcomposer.org/installer | sudo php

// Downloading...
[ec2-user ~]$ sudo cp composer.phar /usr/local/bin/composer
[ec2-user ~]$ sudo ln -s /usr/local/bin/composer /usr/bin/composer


  • 拡張ライブラリ

[ec2-user ~]$ sudo yum install -y php56-mbstring php56-pdo php56-mysqlnd


②Laravelプロジェクトの作成

laravel をインストールするディレクトリに移動

今回は /var/www/laravel にします。

[ec2-user ~]$ cd /var/www

[ec2-user www]$ ~/composer.phar create-project --prefer-dist laravel/laravel


③Apacheのドキュメントルートを変更

[ec2-user ~]$ sudo nano /etc/httpd/conf.d/custom.conf


custom.conf

# ドキュメントルート

DocumentRoot "/var/www/laravel/public"


④ .htaccess 有効化


  • t2.microでは初期状態では .htaccess が働きませんので、動くように設定します。

[ec2-user ~]$ sudo nano /etc/httpd/conf.d/custom.conf


custom.conf

# .htaccess 有効化

<Directory /var/www/laravel/public>
AllowOverride All
</Directory>


⑤Apache を再起動

[ec2-user ~]$ sudo service httpd restart


⑥パーミッション変更

Laravelではいくつかのディレクトリ以下に書き込み権限が必要となります。

[ec2-user ~]$ cd /var/www

[ec2-user www]$ sudo chmod -R 777 laravel/storage
[ec2-user www]$ sudo chmod -R 775 laravel/bootstrap/cache
[ec2-user www]$ sudo chown -R root:www /var/www


Laravelの設定


.env

順に設定をしていきます。

[ec2-user ~]$ cd /var/www/laravel

[ec2-user laravel]$ sudo nano .env

データベースにRDSを使っている場合には DB_HOST にエンドポイントを入れます。

このときポート番号も一緒にコピーされてくることがありますが、次の DB_PORT に分けて設定します。

メールサーバーの設定は、gmailではMFA認証の関係か、上手くいきませんでした。

レンタルサーバー等のIMAPメール設定を使って下さい。


ログイン機能を有効にする

Laravel にはログイン周りの機能が一通り揃っています。

Laravel 5.3 になってその使い方はより柔軟になったように思います。

ログイン周りの機能をとりあえず使うにはたったこれだけでOKです。

[ec2-user laravel]$ php artisan make:auth

[ec2-user laravel]$ php artisan migrate


ブラウザで確認する

あなたの Elastic IP を使ってブラウザでアクセスします。

http://**Your Elastic IP**/home

このようにログイン画面が表示されたらOKです。

Laravel.png

以上です!