AWS EC2のインスタンス作成〜Laravelのマイグレーション実行までの備忘録です。
実行環境
MACOS
#EC2インスタンスの作成
##リージョン選択
画面右上のリージョンを選択します。
今回は「東京リージョン」を選択します。
詳しい違いは以下のサイトが参考になりました。
https://www.t3a.jp/blog/infrastructure/aws-best-region/
簡単にいうと、
スピード重視:東京、大阪
金額重視:バージニアなど
を選ぶとよいです。
##マシンイメージ(AMI)選択
AMIとは、インスタンスを作成するのに必要なOSやサーバー情報のテンプレートのことです。
Linux,Windows,macOSなどを選択できます。
今回は、無料枠で使える「Amazon Linux」を選択します。
##インスタンスタイプ選択
ここではCPUやメモリを選択します。
無料枠で使える「t2.micro」を選択します。
##インスタンスの詳細の設定
ここは特に変更不要です。
##タグの追加
管理しやすいようにインスタンスにタグをつけます。
##セキュリティグループの設定
ここではファイアウォールの設定を行います。
「ルールの追加」をクリックし、HTTP、HTTPSを追加します。
セキュリティグループ名を任意の名前に変更します。
##インスタンス作成の確認
設定を確認してください。
渓谷メッセージが出ますが、今回はブラウザで表示確認をしたいため、無視してよいです。
「起動」をクリックします。
##キーペアの作成
「起動」をクリック後、SSH接続を行うためのキーペアの作成ができます。
「新しいキーペアの作成」を選択し、
暗号化方法として、RSAとED25519が選択できます。ED25519の方が強固で速いそうです。
キーペア名を入力したら、「キーペアのダウンロード」をクリックします。
ダウンロードしたら大事に保管してください。
##ステータス確認
作成ステータスが確認できます。
少し時間が経ったら画面を更新すると、ステータスが「running」になります。
##インスタンスに接続
実行中のインスタンスにチェックを入れ、右上の「接続」をクリックします。
「SSHクライアント」タブを選択します。
MAC環境であればターミナル、WindowsならTelaTermなどから、
pemファイルがあるディレクトリに移動し、以下を実行します。
(編集されるのを防ぐため)
chmod 400 <なんとか.pem>
次に以下のコマンドでインスタンスに接続します。
ssh -i ""<なんとか.pem> <インスタンス名>
以下が聞かれたらyes
Are you sure you want to continue connecting (yes/no)? yes
これでSSH接続完了です。
#RDSデータベースの作成
mysqlのデータベースを作成していきます。
「データベースを作成」をクリック
無料枠で作成します。
*ここで設定したパスワードを忘れないように
・標準作成
・mysqlを選択
・データベース名(後からでも作れる)
・他はデフォルト
VPNも一緒に作成
(初めて作る場合はVPCセキュリティグループは新規作成)
最後に「データベースの作成」をクリックします。
しばらくしたら、利用可能になります。
##セキュリティグループを設定
作成したRDSインスタンスのセキュリティグループをEC2作成時に設定したセキュリティグループと同じにします。
以上で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:chache
、config:clear
、route: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/