Open8
Laravel + AWS 段階を踏んで構築する
- VPCを作成
- Internet gatewayを作成
- VPCにInternet gatewayをアタッチ
- 作成したvpcにpublicのルートテーブルを作成
- publicのroute tableの設定値
- Destination -> 0.0.0.0/0
- Target -> 作成したInternet gateway
- publicのsubnetを作成
- Subnet name -> {service_name}-dev-public-subnet-a (publicを明示したnameを指定)
- Availability Zone -> ap-northeast-1a
- route tableとpublicのsubnetを紐づける
- VPC > Route tables の指定のroute tableの「subnet associations」の「Edit subnet associations」で設定する
- EC2用のSecurity Groupを作成
- Inbound rules
- Type - HTTP
- Protocol - TCP
- Port range - 80
- Source - 0.0.0.0/0
- Inbound rules
- EC2を作成
- AMI - Amazon Linux 2023 AMI
- instans type - t2.micro
- Network settings > Edit
- VPC
- Subnet
- Auto-assign public IP - Enable
- ここがDisbleになっているとpublic IPが割り振られない
- Firewall > Select existing security groupを選択し、作成したsecurity groupを設定
EC2へssh接続
EC2を作成するときにキーペアを作成していなかったのでインスタンスを再度作成しました。
キーペアについて参考にした記事です。
ダウンロードしたキーペアを~/.ssh/に移動
$ mv ~/Downloads/xxx.pem ~/.ssh/
キーペアの権限を600に設定する
$ chmod 600 ~/.ssh/xxx.pem
EC2起動後にコピーしたpublic IPv4アドレスをIPアドレスに入れコマンドを実行する。
ssh -i ~/.ssh/xxx.pem ec2-user@{IPアドレス}
しかし、ここで接続することができませんでした。
原因は、インターネットからEC2へのポート22がオープンになっていなかったためでした。
EC2に適用させているSecurity Groupに設定を加えます
- EC2 > Security Groups > 該当のSecurity GroupのInbound rolesを編集します。
- Type - ssh
- Protocol - TCP
- Post - 22
- CIDR Block - 0.0.0.0/0
- 全てのパブリックIPv4アドレス(インターネット)
ポートを開くことでssh接続ができました。
EC2にツールをインストールなど
こちらの記事を参考に、
- 必要なツールをインストールの「パッケージをupdateする」から
- DBの設定と作成
を実行しました。
MySQLのインストール時にエラーが発生した。
Error: GPG check FAILED
ので記事に従って、mysql-community-serverをインストールすることが解消されました。
$ sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
インスタンスへの接続をssh接続からSession Managerへ変更
ターミナルからのEC2へのssh接続は、pem keyを使用します。keyが漏洩するなどのセキュリティのリスクを考慮しAWSのコンソールのSession Managerから接続する方法に変えます。
- まず、対象のEC2に適応していたkey pairを削除します。
- EC2 > Network & Security > Key pairsにある該当のkey pairを削除。これで漏洩のリスクは無くなりました。
- EC2にsession managerの利用をを許可するPolicyを適用させます。
- roleを作成
- Type - AWS Service
- Service or use case - EC2を選択し、EC2 Role for AWS Systems Managerをチェック
- session managerの利用に必要な、AmazonSSMManagedInstanceCoreが適応されることを確認
- ec2にroleをアタッチ
- EC2 > Instancesで該当のインスタンスを選択
- ボタン「Action」> 「Security」> 「Modify IAM role」こちらで作成した roleを設定します。
- roleを作成
- Session Managerからインスタンスへ接続
- EC2 > Instancesで該当のインスタンスをチェック(起動していること)
- 「Connect」> Connect to instance > Session Manager > Connect
- ターミナルのような画面が表示され接続成功
TODO 構成図を書く
- 今の所までの構成図
- 次に追加したいサービスを含めた構成図
今の所までの構成図
次に追加したいサービスを含めた構成図
- ドメイン取得
- 独自ドメインで公開できるようにする
-
HTTPSに対応させる-> EC2はHTTPに対応していない (HTTPSの対応は次回に) - EIPでIPアドレスを固定する
- Laravelのウェルカムページの表示(Githubから持ってくる)
- EC2インスタンス内のDBにLaravelからデータを登録できるようにする