1
1

【AWS】LaravelアプリをEC2へデプロイ

Posted at

こんにちは、Reikaです。
私は現在、アプレンティスの5期生として日々勉強に励んでいます。



最近、Laravelで作成したオリジナルプロダクトのインフラを構築しました。
今回はこの経験を通じて学んだことについて、記述していきます!

簡単に自己紹介

  • 2023年12月〜独学でプログラミングの勉強を始める
  • 2024年4月〜内定直結型エンジニア学習プログラム「アプレンティス」に参加
  • 地方在住27歳社会人4年目。マインドミニマリスト。植物、テレビドラマ、コーヒーが好きです
  • 趣味でYouTube投稿をしています。現職やなぜエンジニアを目指すようになったのか?は以下の動画をぜひご覧ください!^^

目次

  1. 今回のゴール
  2. 事前準備
  3. 方法
    3-1. yumのアップデート
    3-2. Apacheのインストール
    3-3. PHPのインストール
    3-4. Gitのインストール
    3-5. MySQLのインストール
    3-6. .envファイルの編集

1. 今回のゴール

EC2上でLaravelとMySQLを動かし、作成したドメインにアクセスしたらページが開かれること。

2. 事前準備

  • AWSアカウント作成済み(IAMユーザーでログイン)
  • リージョンはアジアパシフィック(東京)ap-northeast-1
  • 事前に下記のものを作成済み
    • VPC
    • パブリックサブネット/プライベートサブネット
    • EC2インスタンス
    • RDSインスタンス
    • DBサブネットグループ
    • ルートテーブル
    • インターネットゲートウェイ
    • セキュリティグループ(パブリックサブネット/プライベートサブネット)
    • ElasticIP
    • ドメインの購入、Route53でDNSの設定

こちらの事前準備は、以下の山浦さんのUdemy講座を参考にしながら行いました↓
AWS初心者さんにはすっごくおすすめです!

3. 方法

3-1. yumのアップデート

sudo yum update -y

yumは、Amazon LinuxなどのLinuxディストリビューションでパッケージを管理するためのツール。
update は、インストールされているパッケージの更新を確認し、必要に応じてアップデートします。
-y は、確認を求められた際に自動的に「はい」と答えるオプションです。

3-2. Apacheのインストール

sudo yum install -y httpd

Apache サーバーの起動。

sudo systemctl start httpd

サーバーが起動されたら Apache も自動起動するように設定します。

sudo systemctl enable httpd

3-3. PHPのインストール

EC2にPHPをインストールします。

sudo amazon-linux-extras install -y php8.2

パッケージもインストール
php-mysqlnd: MySQLデータベースとPHPの連携を提供します。
php-xml: XMLデータの処理を可能にします。
php-mbstring: マルチバイト文字列の処理をサポートします

sudo yum install php-mysqlnd php-xml php-mbstring -y

composerのインストール

curl -sS https://getcomposer.org/installer | php

PHP-FPM の起動

sudo systemctl start php-fpm

3-4. Gitのインストール

sudo yum install git -y
git --version

権限の変更。

sudo chmod 777 /var/www/html

リポジトリのクローン

cd /var/www/html
sudo git clone https://github.com/your-username/your-laravel-project.git

権限を変更。

sudo chmod 777 storage -R
sudo chmod 777 bootstrap/cache -R

3-5. MySQLのインストール

一度EC2インスタンスから出て、。
もしMariaDBがインストールされていたら(私はされていたので)アンインストール。

sudo yum remove -y mariadb mariadb-server

MySQLのインストール

sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023

DBサーバーに接続

mysql -h <RDSのエンドポイント> -u <ユーザー名> -p

データベースの作成とユーザー権限の付与

CREATE DATABASE <データベース名> DEFAULT CHARACTER SET utf8 COLLATE utf8_general_cil;
SHOW DATABASES;
CREATE USER '<ユーザー名>'@'%' IDENTIFIED BY 'パスワード';
GRANT ALL ON <データベース名>.* TO 'ユーザー名'@'%';
FLUSH PRIVILEGES;
SELECT user , host FROM mysql.user;

3-6. EC2側の.envファイルの編集

vi .env

以下の箇所を編集する。(事前に設定している箇所も含む)

APP_NAME=プロジェクト名
APP_URL=ドメイン名
DB_CONNECTION=mysql
DB_PORT=3306
DB_HOST=RDB インスタンスのエンドポイント
DB_DATABASE=作成した MySQL データベース名
DB_USERNAME=作成した MySQL ユーザー名
DB_PASSWORD=作成した MySQL ユーザーのパスワード

3-7. Apacheドキュメントルート変更

sudo vim /etc/httpd/conf/httpd.conf
  • DocumentRootをコメントアウトして、/var/www/html/publicに変更

  • < Directory "/var/www/html" > 以下の、AllowOverride Noneをコメントアウトして、AllowOverride Allに変更

3-9. 最終確認

マイグレーションの実行

php artisan migrate

ドメインでアクセスし、ページが開かれる!

4. 最後に

ロードバランサーの作成やSSL化などの設定も無事に完了し、作成したドメインにアクセスしてページが正常に表示されました。
作業中には、いくつかエラーが発生しましたが、原因は主に.envファイルの設定ミス、Apacheの起動忘れ、権限設定の不足などでした。これらのポイントを1つでも見落とすとページにアクセスできなくなるため、細かい確認が以下に必要かを学びました!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1