1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初めての AWS で Laravel API をデプロイしてみた! - 第 5 弾:アプリケーション起動編

Last updated at Posted at 2024-02-15

1. はじめに

私は2023年10月より、内定直結型エンジニア学習プログラム「アプレンティス」に2期生として参加しています。

AWS について学んだので、Laravel API を AWS でデプロイする方法についてまとめました。
AWS に初めて触れる方の参考になれば幸いです。

シリーズ一覧

長編になっているので、複数の記事に分けて公開しています。
本記事はその第 5 弾です。

  1. サーバー設置編
  2. サーバー接続編
  3. IP アドレス編
  4. データベース編
  5. アプリケーション起動編 ★本記事!!
  6. Webレイヤ冗長化編
  7. SSL 化編

目次

1.はじめに
2.Laravel プロジェクトのクローン
3.API へリクエスト送信

16. Laravelプロジェクトのクローン

まずは、PHP 実行環境を整えます。
EC2 インスタンスにログインしましょう。

PHP のインストール

Amazon Linux2 には extras ライブラリというパッケージ群が存在していて、今回はそのコマンドを使って PHP 8.2 をインストールします。
sudo amazon-linux-extras install -y php8.2

PHP 関連の必要なライブラリをインストール

sudo yum -y install php-devel php-pdo php-mbstring php-mcrypt php-mysqlnd php-xml php-gd php-opcache php-pecl-zip

Laravel プロジェクトのクローン

GitHub リポジトリからイメージをクローンしてくるためには、まず Git をインストールする必要があります。
sudo yum -y install git

クローンして来られるように、ディレクトリの権限を変更しておきます。
sudo chmod 777 /var/www/html

ここでようやく、作成済みの Laravel プロジェクトを GitHub からクローンしてきます。
git clone <リポジトリ URL>

ls コマンドで、リポジトリがクローンされていることを確認します。
スクリーンショット 2024-02-15 3.39.31.png
cd <プロジェクト名> で、プロジェクトルートに移動します。

composer インストール

パッケージ管理ツールの composer をインストールします。
curl -sS https://getcomposer.org/installer | php

composer の実行ファイルを移動します。
sudo mv composer.phar /usr/local/bin/composer

プロジェクトディレクトリに存在する package.json に記載されたライブラリをインストールします。
composer install
スクリーンショット 2024-02-15 3.52.39.png
たくさんインストールされました。

ディレクトリのコピー

Apache が参照しに行くディレクトリは/var/www/html/なので、クローンしてきたプロジェクトディレクトリを丸ごと/var/www/html/にコピーします。
sudo cp -r * /var/www/html/

コピーできたか確認します。
ls -la /var/www/html
スクリーンショット 2024-02-15 4.35.15.png
コピーできてることが確認できました。

storage, bootstrap ディレクトリの権限変更

cd /var/www/html/ で移動する。

以下コマンドで、権限を変更する。
sudo chmod 777 storage -R
sudo chmod 777 bootstrap/cache -R

.env ファイルの作成

vi .env.envファイルを新規作成する。
内容は、ローカルの Laravel プロジェクトの.envファイルをコピペし、一部修正する。

修正箇所

  • APP_URL:<ドメイン名>:<ポート番号>
  • DB_HOST:RDB インスタンスのエンドポイント
  • DB_DATABASE:作成した MySQL データベース名
  • DB_USERNAME:作成した MySQL ユーザー名
  • DB_PASSWORD:作成した MySQL ユーザーのパスワード

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

この状態では、まだ パブリック IP アドレスにアクセスした時に、最初に見た Apache のページが表示されるだけです。
Laravel API に直接アクセスできるようにするには、ドキュメントルートを変更する必要があります。
Laravel はドキュメントルートを public ディレクトリにする必要があるので、そのように変更します。

vim を起動して、設定ファイルを編集します。
sudo vim /etc/httpd/conf/httpd.conf

  • DocumentRootをコメントアウトして、/var/www/html/publicに変更
  • < Directory "/var/www/html" > 以下の、AllowOverride Noneをコメントアウトして、AllowOverride Allに変更
    AllowOverrideは、上位ディレクトリで設定した設定値を、下位ディレクトリで変更する許可を与えるかどうかの設定です。

スクリーンショット 2024-02-15 4.09.07.png
スクリーンショット 2024-02-15 4.09.47.png
保存して終了。

マイグレーション実行

マイグレーションが実行できれば、データベースへの接続は成功です!
php artisan migrate

接続できるか確認

ドメイン名で Laravel API にアクセスできるか確認します。
スクリーンショット 2024-02-15 5.20.29.png
無事、API の画面が表示されました!

17. APIへリクエスト送信

データベースにダミーデータを挿入して、Postman から Laravel API にリクエストを送信し、正しくレスポンスが返ってくるか確認します。

ダミーデータ挿入

ダミーデータ挿入用の Factory, Seeder ファイルは既に作成済みです。

以下のコマンドでダミーデータを挿入します。
php artisan migrate:refresh --seed

Postman で GET リクエストを送信

私の Laravel API は、/api/articlesに対して GET リクエストを送信すると、掲示板サイトの投稿記事一覧を取得する仕様になっています。
正しくレスポンスが返ってくるか、Postman で確認してみます。
スクリーンショット 2024-02-15 5.35.46.png
成功です!!

本記事はここまでです。
次の記事はこちら↓
初めての AWS で Laravel API をデプロイしてみた! - 第 6 弾:Webレイヤ冗長化編

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?