ふとしたきっかけで、Laravel Sailを用いて作ったプロジェクトを、せっかく作ったので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を解放
終わり
さすがにできないことないだろと思いつつ、やってみてできるとやっぱりなるほどとなる場面が多数。でもさすがに恥ずかしすぎる環境構成なので、やってみた後から「ちゃんと作るか。。。」となったのは開発者のサガだと信じています。
マテ次回。