こんにちは、Reikaです。
私は現在、アプレンティスの5期生として日々勉強に励んでいます。
最近、Laravelで作成したオリジナルプロダクトのインフラを構築しました。
今回はこの経験を通じて学んだことについて、記述していきます!
簡単に自己紹介
- 2023年12月〜独学でプログラミングの勉強を始める
- 2024年4月〜内定直結型エンジニア学習プログラム「アプレンティス」に参加
- 地方在住27歳社会人4年目。マインドミニマリスト。植物、テレビドラマ、コーヒーが好きです
目次
- 今回のゴール
- 事前準備
- 方法
3-1. yumのアップデート
3-2. Apacheのインストール
3-3. PHPのインストール
3-4. Gitのインストール
3-5. MySQLのインストール
3-6. .envファイルの編集
1. 今回のゴール
EC2上でLaravelとMySQLを動かし、作成したドメインにアクセスしたらページが開かれること。
2. 事前準備
- AWSアカウント作成済み(IAMユーザーでログイン)
- リージョンはアジアパシフィック(東京)ap-northeast-1
- 事前に下記のものを作成済み
- VPC
- パブリックサブネット/プライベートサブネット
- EC2インスタンス
- RDSインスタンス
- DBサブネットグループ
- ルートテーブル
- インターネットゲートウェイ
- セキュリティグループ(パブリックサブネット/プライベートサブネット)
- ElasticIP
- ドメインの購入、Route53でDNSの設定
こちらの事前準備は、以下の山浦さんのUdemy講座を参考にしながら行いました↓
AWS初心者さんにはすっごくおすすめです!
3. 方法
3-1. yumのアップデート
sudo yum update -y
yumは、Amazon LinuxなどのLinuxディストリビューションでパッケージを管理するためのツール。
update は、インストールされているパッケージの更新を確認し、必要に応じてアップデートします。
-y は、確認を求められた際に自動的に「はい」と答えるオプションです。
3-2. Apacheのインストール
sudo yum install -y httpd
Apache サーバーの起動。
sudo systemctl start httpd
サーバーが起動されたら Apache も自動起動するように設定します。
sudo systemctl enable httpd
3-3. PHPのインストール
EC2にPHPをインストールします。
sudo amazon-linux-extras install -y php8.2
パッケージもインストール
php-mysqlnd: MySQLデータベースとPHPの連携を提供します。
php-xml: XMLデータの処理を可能にします。
php-mbstring: マルチバイト文字列の処理をサポートします
sudo yum install php-mysqlnd php-xml php-mbstring -y
composerのインストール
curl -sS https://getcomposer.org/installer | php
PHP-FPM の起動
sudo systemctl start php-fpm
3-4. Gitのインストール
sudo yum install git -y
git --version
権限の変更。
sudo chmod 777 /var/www/html
リポジトリのクローン
cd /var/www/html
sudo git clone https://github.com/your-username/your-laravel-project.git
権限を変更。
sudo chmod 777 storage -R
sudo chmod 777 bootstrap/cache -R
3-5. MySQLのインストール
一度EC2インスタンスから出て、。
もしMariaDBがインストールされていたら(私はされていたので)アンインストール。
sudo yum remove -y mariadb mariadb-server
MySQLのインストール
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
DBサーバーに接続
mysql -h <RDSのエンドポイント> -u <ユーザー名> -p
データベースの作成とユーザー権限の付与
CREATE DATABASE <データベース名> DEFAULT CHARACTER SET utf8 COLLATE utf8_general_cil;
SHOW DATABASES;
CREATE USER '<ユーザー名>'@'%' IDENTIFIED BY 'パスワード';
GRANT ALL ON <データベース名>.* TO 'ユーザー名'@'%';
FLUSH PRIVILEGES;
SELECT user , host FROM mysql.user;
3-6. EC2側の.envファイルの編集
vi .env
以下の箇所を編集する。(事前に設定している箇所も含む)
APP_NAME=プロジェクト名
APP_URL=ドメイン名
DB_CONNECTION=mysql
DB_PORT=3306
DB_HOST=RDB インスタンスのエンドポイント
DB_DATABASE=作成した MySQL データベース名
DB_USERNAME=作成した MySQL ユーザー名
DB_PASSWORD=作成した MySQL ユーザーのパスワード
3-7. Apacheドキュメントルート変更
sudo vim /etc/httpd/conf/httpd.conf
-
DocumentRootをコメントアウトして、/var/www/html/publicに変更
-
< Directory "/var/www/html" > 以下の、AllowOverride Noneをコメントアウトして、AllowOverride Allに変更
3-9. 最終確認
マイグレーションの実行
php artisan migrate
ドメインでアクセスし、ページが開かれる!
4. 最後に
ロードバランサーの作成やSSL化などの設定も無事に完了し、作成したドメインにアクセスしてページが正常に表示されました。
作業中には、いくつかエラーが発生しましたが、原因は主に.envファイルの設定ミス、Apacheの起動忘れ、権限設定の不足などでした。これらのポイントを1つでも見落とすとページにアクセスできなくなるため、細かい確認が以下に必要かを学びました!