7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWS(EC2 + RDS) でLaravel環境構築

Last updated at Posted at 2021-08-22

スクリーンショット 2021-08-21 11.04.33.png
AWS EC2のインスタンス作成〜Laravelのマイグレーション実行までの備忘録です。

実行環境
MACOS

#EC2インスタンスの作成

##リージョン選択
画面右上のリージョンを選択します。

今回は「東京リージョン」を選択します。
詳しい違いは以下のサイトが参考になりました。
https://www.t3a.jp/blog/infrastructure/aws-best-region/

簡単にいうと、
スピード重視:東京、大阪
金額重視:バージニアなど
を選ぶとよいです。

スクリーンショット 2021-08-21 10.04.49.png

##マシンイメージ(AMI)選択
AMIとは、インスタンスを作成するのに必要なOSやサーバー情報のテンプレートのことです。
Linux,Windows,macOSなどを選択できます。

今回は、無料枠で使える「Amazon Linux」を選択します。
スクリーンショット 2021-08-21 10.20.26.png

##インスタンスタイプ選択
ここではCPUやメモリを選択します。
無料枠で使える「t2.micro」を選択します。

スクリーンショット 2021-08-21 10.21.02.png

##インスタンスの詳細の設定
ここは特に変更不要です。

スクリーンショット 2021-08-21 10.21.02.png

##ストレージの追加
ここは特に変更不要です。
スクリーンショット 2021-08-21 10.25.25.png

##タグの追加
管理しやすいようにインスタンスにタグをつけます。

スクリーンショット 2021-08-21 10.26.02.png

##セキュリティグループの設定
ここではファイアウォールの設定を行います。
「ルールの追加」をクリックし、HTTP、HTTPSを追加します。
セキュリティグループ名を任意の名前に変更します。

スクリーンショット 2021-08-21 10.28.46.png

##インスタンス作成の確認
設定を確認してください。
渓谷メッセージが出ますが、今回はブラウザで表示確認をしたいため、無視してよいです。
「起動」をクリックします。

スクリーンショット 2021-08-21 10.35.20.png

##キーペアの作成
「起動」をクリック後、SSH接続を行うためのキーペアの作成ができます。
「新しいキーペアの作成」を選択し、
暗号化方法として、RSAとED25519が選択できます。ED25519の方が強固で速いそうです。
キーペア名を入力したら、「キーペアのダウンロード」をクリックします。
ダウンロードしたら大事に保管してください。

##ステータス確認
作成ステータスが確認できます。
少し時間が経ったら画面を更新すると、ステータスが「running」になります。

##インスタンスに接続

実行中のインスタンスにチェックを入れ、右上の「接続」をクリックします。

スクリーンショット 2021-08-21 10.54.54.png

「SSHクライアント」タブを選択します。

スクリーンショット 2021-08-22 16.01.25.png

MAC環境であればターミナル、WindowsならTelaTermなどから、
pemファイルがあるディレクトリに移動し、以下を実行します。
(編集されるのを防ぐため)

chmod 400 <なんとか.pem>

次に以下のコマンドでインスタンスに接続します。

ssh -i ""<なんとか.pem> <インスタンス名>

以下が聞かれたらyes

Are you sure you want to continue connecting (yes/no)? yes

これでSSH接続完了です。

スクリーンショット 2021-08-21 11.01.55.png

#RDSデータベースの作成

mysqlのデータベースを作成していきます。
「データベースを作成」をクリック

スクリーンショット 2021-08-21 11.04.33.png

無料枠で作成します。
*ここで設定したパスワードを忘れないように

スクリーンショット 2021-08-21 11.05.09.png

・標準作成
・mysqlを選択

スクリーンショット 2021-08-21 11.04.47.png

・データベース名(後からでも作れる)
・他はデフォルト

スクリーンショット 2021-08-21 11.08.21.png

VPNも一緒に作成
(初めて作る場合はVPCセキュリティグループは新規作成)

スクリーンショット 2021-08-21 11.07.47.png

最後に「データベースの作成」をクリックします。
しばらくしたら、利用可能になります。

##セキュリティグループを設定
作成したRDSインスタンスのセキュリティグループをEC2作成時に設定したセキュリティグループと同じにします。スクリーンショット 2021-08-22 17.20.05.png

以上でRDSの設定は完了です。
EC2に接続し、以下コマンド実行で確認

mysql -h <DBインスタンス> -P 3306 -u admin -p

#EC2の準備

次に以下のコマンドでインスタンスに接続します。

ssh -i ""<なんとか.pem> <インスタンス名>

パッケージのアップデートをします。

sudo yum update -y

MySQL、Git、Apache、cURLをインストールします。

sudo yum -y install mysql git httpd curl

Apacheを起動してみます。
*エラーが出たらservice httpd configtestでどこがおかしいか確認してください。

sudo systemctl start httpd

#Laravelの起動

GitHubにソースを上げておいてください。
EC2に接続し、Gitのユーザー名とメールアドレスを設定

git config --global user.name "hoge"
git config --global user.email hoge@hoge.co.jp

PHPをインストールします。
(バージョンは任意)

sudo amazon-linux-extras install -y php7.3

コンポーザーをインストールし、パスを通します。

curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

プロジェクトのディレクトリを作成します。
今回は/var/www

権限を変更します。

sudo chown ec2-user:ec2-user /var/www

プロジェクトのディレクトリに移動し、git cloneします。

git clone なんとか.git

Composerのパッケージをインストールするために必要なライブラリをインストールします。

sudo yum install -y php-xml

composerをインストールします。

composer install

php-mbstringがないエラーが出た場合はインストール
yum -y install php-mbstring

他のエラーが出たら取り合えず以下のコマンドを試す。
composer update

それ以外はちゃんと調べる。

Apacheにプロジェクトのパスを通します。

sudo vi /etc/httpd/conf/httpd.conf

以下の部分を修正します。

DocumentRoot "/var/www/<プロジェクトディレクトリ>/public"

以下コードを追加

<Directory /var/www/<プロジェクトディレクトリ>/public>
 AllowOverride All
</Directory>

以下のコマンドで再起動します

sudo service httpd restart

.envファイルを作成します。

cp .env.example .env

(設定例)

APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=false  ←trueだと設定情報漏れるので注意
APP_URL=http://localhost

APP_KEYを生成します。

php artisan key:generate

Application key set successfully.が表示されれば成功

権限の付与

chmod -R 777 storage
chmod -R 777 bootstrap/cache

EC2のパブリック IPv4 DNSで画面が表示されるか確認してください。
表示されない場合は以下確認
・https,http
config:chacheconfig:clearroute:clearコマンド

デフォルトのルートが残っているとroute:clearでエラーが出ます。

Route::get('/', function () {
    return view('welcome');
});

は次のように変えるとよいです。

Route::view('/', 'welcome');

最後にDB設定をします。
.envを編集します。

DB_CONNECTION=mysql
DB_HOST=<RDSインスタンス>
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=admin
DB_PASSWORD=password

マイグレーションを実行

php artisan migrate

以上、で環境構築終了です。
お疲れ様でした。

#参考文献
https://noumenon-th.net/programming/2020/04/10/ec2-rds-laravel/

7
8
1

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?