0
0

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 EC2インスタンスにLaravelアプリケーションをデプロイしよう

Last updated at Posted at 2024-11-20

前回ではNodeアプリケーションをEC2インスタンスへデプロイしましたが、今回はlaravelで作成したアプリケーションをデプロイしていきます。

はじめに

▼環境

  • Windows PC
  • Vs code
  • AWSアカウント
  • composer version 2.6.5

ステップ1: Laravelプロジェクトをローカル環境に作成

コマンドプロンプトで任意のディレクトリを指定し、Laravelプロジェクト作成コマンドを入力する。プロジェクト作成まで数分時間がかかることがあります。

※composerをインストールしていない人は、こちらからダウンロードしてください

composer create-project --prefer-dist laravel/laravel プロジェクト名

しばらくするとプロジェクト作成が完了するので、下記と同じように表示されます。
その後、作成したプロジェクトをvs codeで開きます。

スクリーンショット 2024-11-16 202953.png

ステップ2: Laravelを起動させるための準備

1.必要なパッケージをインストール

composer installを実行し、vendorフォルダを作成

composer install

2. アプリケーションキーの生成

php artisan key:generate

3. 簡単なルーティングの設定

routes/web.phpを開き、以下を追加します。

web.php
<?php

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    return "<h1>Hello Wolrd!</h1>";
});

3. .envファイル設定

ローカル開発環境では、.envファイルにデータベースの設定を行っていなくても動作することができますが、本番環境でLaravelアプリケーションを動作させるには、データベースの設定が必要になります。
作成したデータベースの情報を.envファイルに書き込んでください。

※ここではデータベースの作成は行いません。また次の機会で解説していこうと思います。

スクリーンショット 2024-11-20 223542.png

4. ローカルサーバーを起動

アプリケーションをテストするためにサーバーを起動

php artisan serve

起動をし、http://127.0.0.1:8000にアクセスし、'Hello World!'が表示されます。

ステップ3: 環境設定とデプロイ

ローカル環境に作成したアプリケーションをデプロイするためにEC2インスタンスを準備します。

1. EC2インスタンスを作成する

インスタンスの作成はこちらで説明をしているので、わからない人はご覧ください。
インスタンスの作成後、SSHでログインを行なってください。詳しくはこちら

2. 必要なパッケージのインストール

①apacheのインストール

apacheはnginx同様、Webサーバーを構築するためのソフトウェアです。
apacheをインストール後、起動をします。

sudo dnf install httpd
sudo systemctl start httpd

apacheを起動後、作成したインスタンスのパブリックIPにアクセスします。

スクリーンショット 2024-11-20 211821.png

②PHPとcomposerをインストールする

composerはLaravelアプリケーションの依存パッケージをインストールするのに使用します。

# PHPと必要なパッケージをインストール
sudo dnf install php php-cli php-json php-common php-mbstring php-zip php-xml php-curl unzip -y
# Composerのインストーラーをダウンロード
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

# インストーラーの実行
php composer-setup.php

# インストーラーの削除
php -r "unlink('composer-setup.php');"

# Composerをグローバルに移動
sudo mv composer.phar /usr/local/bin/composer

③データベース接続用のクライアントをインストール

#PHPアプリケーションからMariaDBに接続できるようになる
# MySQLクライアントとPHPのMySQLドライバーをインストール
sudo dnf install mariadb105 php-mysqlnd -y

# PHPを再起動
sudo systemctl restart php-fpm

3. ファイル転送ソフトを準備する

今回は、FileZillaを使用してデプロイしていきます。FileZillaとはサーバー内にファイルをアップロードするためのファイル転送ソフト(FTPソフト)です。
FileZillaのダウンロードはこちらから行なってください。

インストール後、FileZillaを起動させてください。
起動後、赤く囲っている箇所をクリックします。

スクリーンショット 2024-11-20 150655.png

クリックすると、下記の画像のように表示されます

  • プロトコル: SFTPを選択
  • ホスト: 作成したインスタンスのパブリックIPv4アドレス
  • ログオンタイプ: 鍵ファイル
  • 鍵ファイル: 鍵ファイルのパス

下記画像のようにすべて選択できたら、接続ボタンをクリックします

スクリーンショット 2024-11-20 150743 (1).png

接続が完了すると、下記画像のように表示されます。

スクリーンショット 2024-11-20 210859.png

今回は/var/www/html/プロジェクトにアプリケーションをアップロードしていきます。
EC2インスタンスのデフォルトの権限設定は root ユーザーになっているので権限を変更していきます。

4. 権限の変更

FilezillaのログインをEC2インスタンスのec2-userユーザーで行っているため、そのユーザーに適切な権限を与える必要があります。

/var/www/htmlの権限を確認してみましょう。
EC2インスタンスにログインをし、コマンドを実行します。

ls -ld /var/www/html 

コマンドを実行すると下記のように表示されるかと思います。

drwxr-xr-x. 2 root root 6 Jul 30 14:58 /var/www/html

こちらは、/var/www/htmlはrootユーザーが所有していて所有者には読み書きの権限があるが、グループやその他のユーザーには読み取りと実行の権限しかないという意味になります。

  • d: ディレクトリ (directory) を表す
  • rwx: 所有者 (root ユーザー) に対する読み取り、書き込み、実行の権限を示す
  • r-x: グループに対する読み取りと実行の権限を示す
  • r-x: その他のユーザーに対する読み取りと実行の権限を示す
  • root: このディレクトリの所有者が root ユーザーであることを示す
  • root: このディレクトリの所有グループが root グループであることを示す

FilezillaでのログインをEC2インスタンスのec2-userユーザーでおこなっているので、ec2-userに権限を与えます。一般的なWebサーバの構成では、Webコンテンツを管理するユーザーをapacheグループに所属させることが一般的なので、apacheグループにec2-userを追加します。

#ec2-userをapacheグループに追加
sudo usermod -a -G apache ec2-user

#/varディレクトリとその下にあるすべてのファイルとディレクトリ(-R オプション)の所有者をec2-userに、所有グループをapacheに変更
sudo chown -R ec2-user:apache /var/www/html

もう一度/var/www/htmlの権限を確認すると、ec2-userユーザーが所有者にapacheが所有グループに変更されていることが確認できます。

ls -ld /var/www/html 
drwxr-xr-x. 2 ec2-user apache 6 Jul 30 14:58 /var/www/html

5. アプリケーションをデプロイする

権限をec2-userに変更できたので、FillZillaを使用してインスタンスにアプリケーションをデプロイしていきます。

/var/www/htmlディレクトリに移動し、laravel-practiceというフォルダを作成します。

スクリーンショット 2024-11-20 215453.png

作成できたら、ローカル環境で作成したアプリケーションをアップロードしていきます。
vendorフォルダ以外すべてアップロードしてください。

スクリーンショット 2024-11-20 220148.png

アップロードしたいフォルダを選択し右クリックをするとuploadボタンが表示されるのでそちらをクリックします。
すべてのアップロードできたら、FileZillaは閉じてしまって大丈夫です。

スクリーンショット 2024-11-20 220331.png

5. Apacheの設定ファイルを編集する

最後に、Apacheの設定ファイルを編集します。
インスタンスにログインをし、以下コマンドを実行します。

sudo nano /etc/httpd/conf.d/laravel.conf

コマンドを事項するとテキストエディタが起動するので、下記を貼り付けます。

  • serverName: インスタンスのIPアドレス
  • DocumentRoot: Laravel アプリケーションのドキュメントルートは/publicになる
<VirtualHost *:80>
    ServerName 3.112.203.23
    DocumentRoot /var/www/html/laravel-practice/public
    
    <Directory /var/www/html/laravel-practice/public>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

設定ファイルを編集し、保存をしたらapacheを再起動させます。

sudo systemctl restart httpd

最後に、composer installを実行し、vendorフォルダを作成を行います。

[ec2-user@ip-172-31-47-86 laravel-practice]$ composer install

6.動作確認

デプロイが完了したらしっかりと動作しているか確認を行います。
パブリックIPアドレスにアクセスを行い、下記画像と同じように表示されていれば正常にlaravelアプリケーションが起動できています。

スクリーンショット 2024-11-20 222306.png

おわりに

最後までご覧いただきありがとうございました!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?