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
以上、で環境構築終了です。
お疲れ様でした。
参考文献