🦁

AWS EC2上に、Laravel Sailで動作環境を構築する

2024/08/08に公開

ながらく何も動いていませんでしたが、せっかく作ったのでWEBに公開できるよう準備しようと思い立ちましたので、AWS上に環境を構築しました。

しかしsailが便利すぎて「あんなたくさんのコンテナに該当する環境、いちいち作っとられるかい!」と率直に思い、「もうええわEC2上に同じようにsailで環境作ったらそれでいったんよし」という死ぬほど雑な思考で「とりあえず動くもの」ということで環境構築しました。

まじで恥ずかしい。

概要

パブリックサブネット内に立ってるEC2上での作業内容になります。

実作業記録

プロジェクトのクローン

Gitのインストール

# システムのパッケージを更新
sudo yum update -y
# Gitをインストール
sudo yum install git -y

SSHキーの作成

# RSA 4096ビットのSSHキーを作成
ssh-keygen -t rsa -b 4096 -C "sample@hogehoge.jp"

SSHの公開鍵を取得

# ホームディレクトリに移動
cd
# .sshディレクトリに移動
cd .ssh
# ディレクトリの内容を表示
ls
# id_rsa.pubファイルを表示
less id_rsa.pub
# → 取得した公開鍵はGitLabに設定

プロジェクトのクローン

# /homeディレクトリに移動
cd /home
# ssm-userディレクトリに移動
cd ssm-user
# プロジェクトをクローン
git clone <プロジェクト指定>

Dockerのインストール

# システムのパッケージを更新
sudo yum update -y
# Dockerをインストール
sudo dnf install -y docker
# Dockerサービスを開始
sudo systemctl start docker
# Dockerサービスを自動起動に設定
sudo systemctl enable docker
# Dockerグループに現在のユーザーを追加
sudo usermod -aG docker $USER
# Dockerグループにssm-userを追加
sudo usermod -aG docker ssm-user
# シェルを再起動してグループ変更を反映
exec $SHELL -l
# Docker Composeをインストール
sudo curl -L "https://github.com/docker/compose/releases/download/v2.5.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# Docker Composeの実行権限を設定
sudo chmod +x /usr/local/bin/docker-compose

Node.jsのインストール

# Node.js 20.xのセットアップスクリプトを実行
curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -

プロジェクトディレクトリに移動

# プロジェクトディレクトリに移動
cd (プロジェクトディレクトリパス)
# ディレクトリの内容を表示
ls

PHPとComposerのインストール

# PHPと関連パッケージのインストール
sudo dnf install -y php-cli php-json php-zip wget unzip
# Composerのインストールスクリプトをダウンロード
curl -sS https://getcomposer.org/installer | php
# Composerをグローバルにインストール
sudo mv composer.phar /usr/local/bin/composer
# Composerの実行権限を設定
sudo chmod +x /usr/local/bin/composer

Composerでパッケージをインストール

# PHPのXMLとDOMパッケージをインストール
sudo dnf install -y php-xml php-dom
# Laravel Sailをプロジェクトに追加
composer require laravel/sail --dev
# sailコマンドのエイリアスを設定
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'

.envファイルの作成

# .env.exampleをコピーして.envを作成
cp .env.example .env
# .envファイルを編集
sudo vi .env

コンテナ立ち上げ

# コンテナ立ち上げ(なぜかssmで入り直したらできた)
exec $SHELL -l
sudo systemctl status docker
sudo systemctl restart docker
cd (プロジェクトディレクトリパス)
./vendor/bin/sail up -d

artisanで準備

./vendor/bin/sail php artisan key:generate
./vendor/bin/sail php artisan migrate

vite.config.jsを編集

以下追加

  server: {
    host: '0.0.0.0',  // 外部からのアクセスを許可するため
    port: 5173,  // Viteサーバーのポート番号
    hmr: {
      host: '18.182.107.191',  // EC2のパブリックIPアドレス
      port: 5173,
    },
  },

viteの再起動

./vendor/bin/sail npm run dev

AWSのセキュリティグループ設定

  • vite用にセキュリティグループで5173を解放
  • phpmyadmin用にセキュリティグループで8080を解放

終わり

さすがにできないことないだろと思いつつ、やってみてできるとやっぱりなるほどとなる場面が多数。でもさすがに恥ずかしすぎる環境構成なので、やってみた後から「ちゃんと作るか。。。」となったのは開発者のサガだと信じています。

マテ次回。

Discussion