へっぽこインフラエンジニアのブログ

IT業界の最底辺からこんにちは

EC2上にLaravel環境を構築してみた(2/2)

f:id:fujison-xyz:20200807101450p:plain

前回の記事でプロジェクト作成直前までの構築を行った。

本記事では「プロジェクト作成→ユーザ認証導入」を実施して動作確認を行う

バージョンはこちら

Amazon Linux 2
Apache 2.4
MySQL 5.5
PHP 7.3
Laravel 7.23.2

1. メモリ不足について

EC2インスタンスが「t2.micro」だと、プロジェクト作成時やログイン機能インストール時に
必ずメモリ不足を起こす(cannot allocate memory みたいな)。

そのため、プロジェクト作成時のみ「t2.medium」に変更することをお勧めします。
※t2.mediumの利用料金は一時間で7円程度です(最新の料金は調べてください)
※プロジェクト作成後に戻すのをお忘れなく!

↓ここから変更できる(インスタンスは停止/Stopしておく)
f:id:fujison-xyz:20200807103548p:plain

↓インスタンスタイプを変更せず、スワップ領域を作成する方法もあります
Laravel で Cannot allocate memory がでたときの対策 - Qiita

2. Laravel プロジェクトを作成する

Composerでプロジェクト作成
sudo chown ec2-user:ec2-user /var/www/html
cd /var/www/html
composer create-project laravel/laravel プロジェクト名 --prefer-dist
プロジェクトフォルダの権限変更

「プロジェクト名」は作成したものに変更する

sudo groupadd laravel
sudo usermod -aG laravel ec2-user
sudo usermod -aG laravel apache
cd /var/www/html
sudo chown -R ec2-user:laravel プロジェクト名
sudo find プロジェクト名 -type d -exec chmod 750 {} \;
sudo find プロジェクト名 -type f -exec chmod 640 {} \;
sudo chmod -R 770 プロジェクト名/storage/ プロジェクト名/bootstrap/cache/

出典:Laravelのパーミッションを適切に設定 - Qiita

ドキュメントルートを変更する(任意)

php artisan serve でテストするにはこのままでいいのだが、常時アクセスできるようにする場合は以下を実施する。

sudo vi /etc/httpd/conf.d/vhost.conf

以下をコピペする(サーバ名・プロジェクト名は各自の環境に変更する)

<VirtualHost *:80>
  ServerName hoge.example.com
  DocumentRoot "/var/www/html/プロジェクト名/public"
  <Directory "/var/www/html/プロジェクト名/public">
    AllowOverride all
  </Directory>
</VirtualHost>

以下を実行してサーバを再起動する

sudo shutdown -r now
アクセスしてみる

ひとつ前の「ドキュメントルートを変更する」を実施した人は「http://サーバ名」にアクセス。
※実施してない人はphp artisan serveを実行して(以下略

3. ユーザログインを実装する

無事にLaravelホーム画面が表示されたら、ログイン機能をインストールする。

データベース作成

最後の「laravel」はデータベース名。好きなものに変更してもよいです。

mysql -u root -p
create database laravel;
exit;
Laravel 側のDB用設定

以下のファイルを編集する

/var/www/html/プロジェクト名/.env

変更箇所は以下の通り

DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=設定したパスワード

さらに以下のファイルを編集する

/var/www/html/プロジェクト名/config/app.php

変更箇所は以下の通り

'timezone' => 'Asia/Tokyo',
'locale' => 'ja',
ログイン機能のインストール

以下のファイルを編集します。

/var/www/html/プロジェクト名/app/Providers/AppServiceProvider.php

2行、追加する

use Illuminate\Support\Facades\Schema; ←追加
・・・
public function boot()
{
    Schema::defaultStringLength(191); ←追加
}

以下でログイン機能が実装される

php artisan migrate
curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash -
sudo yum install -y nodejs
npm -v
composer require laravel/ui
php artisan ui vue --auth
npm install
npm run dev

Laravelのページをリロードすると、LoginとRegisterボタンが追加されている。
ユーザを登録したり、ログインして正常に動くか確かめる
f:id:fujison-xyz:20200807122252p:plain

以上!

おつかれっしたー
インスタンスタイプを変更してる人は、戻すのを忘れずに!