Laravel11をEC2で動かしてみます。
なるべくお金をかけずに、かつ、高速なLaravel環境を構築したいので、CPUはArm、WEBサーバはNginxを使っていきます
まずは具体的な構成を記載していきます!
構成
- EC2を使用
- インスタンスはt4g.mediumを使用
- t4gは、Arm ベースの AWS Graviton2 のインスタンスです
- T3 インスタンスよりも価格パフォーマンスが最大で 40% 高いようです
- インスタンスはt4g.mediumを使用
Amazon EC2 T4g インスタンス – Amazon Web Services
AWS Graviton2 プロセッサを搭載した T4g インスタンスは、Amazon EC2 のバースト可能な汎用ワークロードとしては最高のコストパフォーマンスを提供します。
- OS
- Amazon Linux 2023
- Webサーバ
- Nginxを使用
- Apacheより高速
- PHP
- バージョン:8.2.15
- Laravelを動かすのに必要なもの
- Webサーバで動かすもの
- Laravel
では実際にEC2起動からLaravelインストールまでやっていきます!
EC2起動
- 以下の設定でEC2を起動します
- Amazon マシンイメージ (AMI)でAmazon Linux 2023を指定する
- アーキテクチャで64ビット(Arm)を指定する
- インスタンスタイプでt4g.mediumを指定する
- ネットワーク設定で「からの SSH トラフィックを許可」「インターネットからの HTTP トラフィックを許可」を指定する
- セキュリティを考慮して、アクセス元は絞った方がいい
- EC2へはEC2 Instance Connectで接続するため、キーペアはなしでOK
EC2の中に入る
- 諸々設定するため、以下の流れで起動したEC2の中に入ります
- AWSコンソールのEC2の一覧で、該当のEC2を選択して、接続を押下
- EC2 Instance Connectタブの接続を押下
- AWSコンソールのEC2の一覧で、該当のEC2を選択して、接続を押下
もろもろインストール
パッケージ最新化
- パッケージ最新化
sudo dnf update -y
Nginxインストール〜設定
- Nginxインストール
sudo dnf -y install nginx
- Nginx設定変更
sudo vi /etc/nginx/nginx.conf
server
の箇所を以下通り修正
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html/public;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
}
- Nginx起動
sudo systemctl start nginx
- Nginx自動起動をON
sudo systemctl enable nginx
- ブラウザでNginxが正常に動作していることを確認
- EC2に割り当てられているパブリックIPにhttpでアクセスする
- 「Welcome to nginx!」が出れば、Nginxが起動できているので問題なし
- EC2に割り当てられているパブリックIPにhttpでアクセスする
PHPインストール
- PHPをインストールする
sudo dnf install -y php-fpm php-mysqli php-json php php-devel
php-fpm起動
- php-fpmを起動します
sudo systemctl start php-fpm.service
composerをインストールする
- composerインストールします
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer
Laravel11をインストール
- Laravel11をインストールします。
composer create-project --prefer-dist laravel/laravel laravel-project "11.*"
- 出来上がったファイルをNginxのルートディレクトリにコピー
sudo cp -r laravel-project/* /usr/share/nginx/html/
- storageディレクトリの権限設定
cd /usr/share/nginx/html/
chmod -R 777 storage
- .envファイルの作成
vi .env
<ファイルの中身>
APP_KEY={APIキー}
DB_CONNECTION=sqlite
APIキーは
php artisan key:generate
で発行可能
- 以下のコマンドでsqlite用ファイルを作成し権限を付与します。
touch database/database.sqlite
chmod 777 database/database.sqlite
動作確認
- 動作確認
- 「http://{EC2のIPアドレス}」にアクセスして、以下の画面表示されればOK〜〜