1. はじめに
私は2023年10月より、内定直結型エンジニア学習プログラム「アプレンティス」に2期生として参加しています。
AWS について学んだので、Laravel API を AWS でデプロイする方法についてまとめました。
AWS に初めて触れる方の参考になれば幸いです。
シリーズ一覧
長編になっているので、複数の記事に分けて公開しています。
本記事はその第 5 弾です。
目次
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
コマンドで、リポジトリがクローンされていることを確認します。
cd <プロジェクト名>
で、プロジェクトルートに移動します。
composer インストール
パッケージ管理ツールの composer をインストールします。
curl -sS https://getcomposer.org/installer | php
composer の実行ファイルを移動します。
sudo mv composer.phar /usr/local/bin/composer
プロジェクトディレクトリに存在する package.json に記載されたライブラリをインストールします。
composer install
たくさんインストールされました。
ディレクトリのコピー
Apache が参照しに行くディレクトリは/var/www/html/
なので、クローンしてきたプロジェクトディレクトリを丸ごと/var/www/html/
にコピーします。
sudo cp -r * /var/www/html/
コピーできたか確認します。
ls -la /var/www/html
コピーできてることが確認できました。
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
は、上位ディレクトリで設定した設定値を、下位ディレクトリで変更する許可を与えるかどうかの設定です。
マイグレーション実行
マイグレーションが実行できれば、データベースへの接続は成功です!
php artisan migrate
接続できるか確認
ドメイン名で Laravel API にアクセスできるか確認します。
無事、API の画面が表示されました!
17. APIへリクエスト送信
データベースにダミーデータを挿入して、Postman から Laravel API にリクエストを送信し、正しくレスポンスが返ってくるか確認します。
ダミーデータ挿入
ダミーデータ挿入用の Factory, Seeder ファイルは既に作成済みです。
以下のコマンドでダミーデータを挿入します。
php artisan migrate:refresh --seed
Postman で GET リクエストを送信
私の Laravel API は、/api/articles
に対して GET リクエストを送信すると、掲示板サイトの投稿記事一覧を取得する仕様になっています。
正しくレスポンスが返ってくるか、Postman で確認してみます。
成功です!!
本記事はここまでです。
次の記事はこちら↓
初めての AWS で Laravel API をデプロイしてみた! - 第 6 弾:Webレイヤ冗長化編