OCXハンズオン 〜マルチクラウドと閉域接続を取り入れた口コミ投稿サイトを作ろう!〜

はじめに

こんにちは!BBSakura NetworksでOCXのバックエンド開発をしている秋山です。
OCXとはBBSakura Networksが提供している、オンデマンドで閉域網を構築できるネットワークサービスです。
OCXの詳細や仕組みなどは以下の記事にて解説しています。

blog.bbsakura.net

OCXはより使いやすく、より多様なネットワークの構築ができるように日々アップデートを重ねており、先日新たなクラウドの接続先としてOracleの提供を開始しました。
本記事ではOCXの使い方の一例として、Amazon Web Services (AWS)と新たに追加されたOracle Cloud infrastructure(OCI)を閉域接続する手順について解説します。記事の終盤では各インスタンスを実際に動かし、クラウド間閉域接続を取り入れた簡単な口コミ投稿サイトの作り方についても解説します。

構成

本記事では最終的に以下のような構成を作ります。AWSのインスタンスとOCIのインスタンスを閉域網で疎通できるようにします。 今回の構成はあくまで一例であるため、環境によって適宜入力項目を書き換えて下さい。

AWS、OCI、OCX間のネットワーク構成。AWSのVPCにはInternetGatewayとVGWがあり、パブリックサブネット内にインスタンスが存在している。OCIのVCNにはDRGがあり、パブリックサブネット内にインスタンスが存在している。OCXにはCloudConnectionとOCXRouterがあり、AWSとOCIを繋いでいる。

目次

本記事は以下の順番で説明をします。
本記事ではAWS、OCI、OCXそれぞれのアカウント設定(IAMやコンパートメントなど)は完了していることを前提としています。

  • 0. 下準備(AWSとOCIの内部ネットワーク構築)
    • このセクションではAWSとOCIの内部ネットワークの構成手順について解説します。OCXとの接続は次のセクションで行うため、OCXとの接続方法だけを知りたい方、既に内部ネットワークを構築済みの方は読み飛ばして下さい。
  • 1. OCXの活用(CloudConnectionとOCXRouterを用いた閉域網構築)
    • このセクションではOCXポータルを用いてOCX内で閉域網を構築する手順や各クラウドとOCXを繋ぐ手順について解説します。
  • 2. webサーバ及びDBサーバの構築
    • 各クラウドに作ったインスタンスを実際にwebサーバ、DBサーバとして動かしてみます。OCXでの操作等はなく、できるものもおまけ程度なので読み飛ばしても大丈夫です。

0. 下準備(AWSとOCIの内部ネットワーク構築)

AWSの構築手順

AWSコンソールを操作し、以下のようなネットワークを作ることを目指します。

AWSの最終的に目指すべきネットワーク構成図。VPCにInternetGatewayとVGWがあり、VPC内のパブリックサブネット内にインスタンスがある。

VPCの作成

まずAWSコンソールからVPCを作成します。

AWSのVPC構成図。InternetGatewayがアタッチされたVPCを作成する。

  1. AWSコンソールで「VPC」と検索し、VPCの作成を押します。 AWSコンソールでVPCを作成を押す
  2. 以下の情報を参考に、VPCを作成します 。 VPCの詳細入力をする

      作成するリソース:VPCなど
      名前タグの自動生成:自動生成有効、ocx-techblog
      IPv4CIDRブロック:10.30.0.0/16
      IPv6CIDRブロック:IPv6 CIDR ブロックなし
      テナンシー:デフォルト
      アベイラビリティゾーン (AZ) の数 :1
      パブリックサブネットの数:1
      プライベートサブネットの数:0
      ap-northeast-1a のパブリックサブネット CIDR ブロック:10.30.0.0/24
      NAT ゲートウェイ:なし
      VPC エンドポイント:なし
      DNSオプション:両方有効
    

インスタンスの作成

先ほど作成したVPC内にインスタンスを作成します。

AWSのEC2構成図

  1. AWSコンソールで「EC2」と検索し、インスタンスを起動を押します。

    AWSコンソールでインスタンスを起動を押す

  2. 以下の情報を参考に、インスタンスを起動します。 インスタンスの詳細入力をする

     名前とタグ:ocx-techblog-webserver
     アプリケーションおよび OS イメージ (Amazon マシンイメージ):
     クイックスタート→Amazon Linux→Amazon Linux 2 AMI (HVM), Kernel 5.10 x86_64
     インスタンスタイプ:t2.micro
     キーペア:新しいキーペアの作成
     ネットワーク設定:編集ボタンを押す
       VPC :(ocx-techblog-vpc)を選択
       サブネット: ocx-techblog-subnet-public
       パブリック IP の自動割り当て:有効化
       ファイアウォール (セキュリティグループ):セキュリティグループを作成する
       セキュリティグループ名:ocx-teckblog-sg
     それ以下の項目:デフォルトのまま
    

    なお、インスタンスのキーペアは以下のように作成し、ダウンロードしておきます。 インスタンスのキーペアを作成する。名前はocx-techblog、キーペアのタイプはRSA、ファイル形式にpemを指定する。

  3. インスタンスを作成したら、インスタンスの詳細から「セキュリティ」→「セキュリティグループ」と移動します。 インスタンスのセキュリティグループにアクセスする

  4. セキュリティグループの詳細からインバウンドルールのインバウンドルールを編集を押し、全てのソースからのSSH、ICMP、HTTPアクセスを有効にします。 セキュリティグループのインバウンドルールを編集を押す インバウンドルールを設定

仮想プライベートゲートウェイの作成

VPC内にさらに仮想プライベートゲートウェイを作成します。

AWSのVGW構成図。作ったVPCにVGWをアタッチすることを目指す。

  1. AWSコンソールで「Direct Connect」と検索して「仮想プライベートゲートウェイを作成する」を押し、以下を参考に作成します。この時、リージョンが作りたい場所を指しているかに注意します。 AWSコンソールで仮想プライベートゲートウェイを作成を押す

     名前タグ:ocx-techblog-vgw
     自律システム番号 (ASN):Amazon デフォルト ASN
     タグ:デフォルトのまま
    
  2. 作成した仮想プライベートゲートウェイを選択し、「アクション」から「VPCへアタッチ」を選択します。アタッチ先には自分のVPCを指定します。
    作成後は仮想プライベートゲートウェイの詳細からASNを確認します。 仮想プライベートゲートウェイをVPCにアタッチ

OCIの構築手順

OCIコンソールを操作し、以下のようなネットワークを作ることを目指します。

OCIで作る予定のネットワーク構成図。VCNにInternetGatewayとDRGがアタッチされ、VCN内のパブリックサブネットにインスタンスが置かれている。

VCNの作成

まずOCIコンソールからVCNを作成します。

OCIのVCN構成図。InternetGatewayがアタッチされたVCNを作成する。

  1. OCIコンソールで「VCN」と検索し、「Start VCN Wizard」を押し、Create VCN with Internet Connectivityを選択します。 AWSコンソールでStart VCN Wizardを押す

  2. 以下の情報を参考に、VCNを作成します。

     名前タグ:ocx-techblog-vgw
     自律システム番号 (ASN):Amazon デフォルト ASN
     タグ:デフォルトのまま
    
  3. VCNの詳細からパブリックサブネットの詳細を選択します。 パブリックサブネットの詳細を見る

  4. セキュリティリストの詳細からイングレスルールの追加を押し、全てのソースからのSSH、ICMP、作成したAWSVPCのアドレスからのMySQLアクセスを有効にします。 セキュリティリストの詳細を見る イングレスルールの編集を押す

インスタンスの作成

先ほど作成したVCN内にインスタンスを作成します。

OCIのVM構成図。作成したVCNのパブリックサブネット内にインスタンスを設置する。

  1. OCIコンソールで「インスタンス」と検索し、インスタンスの作成を押します。 OCIコンソールでインスタンスの作成を押す

  2. 以下の情報を参考に、インスタンスを起動します。 インスタンスの詳細入力をする

      Name: instance-20231005-ocx-techblog
      Create in compartment: 自分のCompartment
      Placement: AD1(Tokyo-1)
      Shielded instance: Disabled
      Image: Oracle Linux 8
      Shape: VM.Standard.E4.Flex(デフォルト)
      VNIC name: なし
      Primary network: Select existing virtual cloud network
      VCN in 自分の :ocx-techblog
      Subnet: Select existing subnet
      Subnet in 自分の: ocx-techblog-public
      Private IPv4 address: Automatically assign private IPv4 address
      Public IPv4 address: Automatically assign public IPv4 address
      Add SSH keys: Generate a key pair for me→Save private keyからダウンロード
      その他項目:デフォルトのまま
    

DRGの作成

VCN内にさらにDynamic Routing Gateway(DRG)を作成します。

OCIのDRG構成図

  1. OCIコンソールで「DRG」と検索して「ダイナミックルーティングゲートウェイの作成」を押し、作成します。 AWSコンソールでダイナミックルーティングゲートウェイを作成を押す
  2. 作成したDRGの詳細を選択し、作成したVCNへのアタッチメントの作成を行います。 AWSコンソールでVCNアタッチメントの作成をする

1. OCXの活用(CloudConnectionとOCXRouterを用いた閉域網構築)

AWSとOCI内にそれぞれ、以下のような基本的な構成を持っているとします。

これまでの手順で作成したAWS、OCIリソースの各種Gatewayとインスタンスがある。
それぞれのネットワークはインターネットへの疎通性があるため、サーバ間をインターネット経由で接続することが可能です。 しかし、ビジネスやシステムの要件が高まるにつれ、BGP経路ジャックやDDoS攻撃など、インターネット経由の接続がリスクを伴う可能性が増してきます。 このような背景を考慮して、OCXはインターネットを介さない閉域網をオンデマンドで構築・提供するサービスを提供しています。このセクションではOCXポータルから実際に閉域網を構築し、その閉域網とクラウド間を接続する手順について説明します。

AWSとの接続

OCX及びAWSのコンソールを操作し、以下のようなネットワークを構築することを目指します。

AWS接続後のOCXネットワーク。AWSで作成した環境をOCXネットワーク内に引き込む。DirectConnectで物理的につながっているので、CloudConnectionを用いて論理的に制御する。

Cloud Connectionの作成

OCXポータルからCloud Connectionを作成し、AWSとの接続を行います。

OCXのCloud Connection作成

  1. OCXポータルのメニューから「Cloud Connection」→「Create」→「AWS」を選択します。 OCXのCloud ConnectionからAWSを選択

  2. ロケーション、名前、速度を入力して次へを押します。 AWS Cloud Connectionの詳細入力をする

  3. AWS Account IDを入力します。 AWS Cloud ConnectionにAWS Account IDを入力する

  4. 各項目を確認したら作成します。 AWS Cloud Connection作成前に各項目を確認

  5. AWSコンソールからDirect Connectの「接続」を確認し、先ほど作成したCloud Connectionと同じdxconのIDを持つ回線の詳細へ移動します。 AWSコンソールからAWS Direct Connectの接続回線を承認する

  6. 接続を承認します。 Direct Connectで接続の承認を行う

  7. 承認完了後、その回線の仮想インターフェース(VIF)を作成します。 AWSの回線にVIFを作成する

  8. 以下を参考にVIFの各項目を入力します。

     仮想インターフェイスのタイプ:プライベート
     仮想インターフェイス名: ocx-techblog-vif
     接続:デフォルト(CC指定のsiteと一致しているか確認)
     仮想インターフェイスの所有者:自分の AWS アカウント
     ゲートウェイタイプ:仮想プライベートゲートウェイ
     仮想プライベートゲートウェイ:ocx-techblog-vgw
     Virtual Local Area Network (VLAN):2
     BGP ASN:65000
     追加設定
     アドレスファミリー:IPv4
     ルーターのピア IP:10.128.30.1/24
     Amazon ルーターのピア IP:10.128.30.2/24
     BGP 認証キー:helloocx
     その他項目:デフォルトのまま
    
  9. ピアリング設定が作られていることを確認します。 AWSVIFのピアリング設定を確認する

OCX Routerの作成

OCX内にOCX Routerを作成し、BGPセッションの準備をします。

OCX Router構成図。OCX内にOCX Routerを作成する。この時、OCX RouterはRouterインスタンスなので、別途CLoudConnectionとの疎通は行わなくてはならない。
1. OCXポータルのメニューから「OCX Router(v1)」→ +マークを選択し、以下を参考にOCX Routerのインスタンスを作成します。 OCXポータルからOCX Routerを作成する 2. 各項目を確認して作成します。 OCX Routerの入力項目を確認して作成する 3. OCX Routerのインスタンスを選択し、「Create Interface」を選択し、Local IPv4 Addressに10.128.30.1/24を指定してOCX RouterのInterfaceを作成します。 OCX RouterのInterfaceを作成する 4. 各項目を確認して作成します。 OCX Router Interfaceの各項目を確認して作成する 5. 作成したOCX RouterのInterfaceを選択し、「BGP Parametersタブ」からBGP Parameterの作成をします。 OCX RouterのBGP Parameterを作成する 6. 以下を参考にOCX RouterのBGP Parameterを作成します。 OCX Router BGP Parameterの各項目を確認して作成する

Virtual Circuit(VC)の作成

OCX内に作ったOCX RouterとCloud Connection間をVCを使って接続し、BGPセッションを確立します。

OCX、AWS間のBGPセッション構成図。OCXRouterとCloudConnectionを繋ぎ、OCXRouter-AWSVGW間の疎通を作る。
1. OCXポータルのメニューから「Virtual Circuits(VCs)」→「Create」を選択し、名前を入力し作成します。 OCXポータルでVCを作成する 2. 作成したVCのアタッチアイコンを選択します。 VCのアタッチアイコンを選択する 3. VCのアタッチ先としてCloud Connectionを選択します。 VCのアタッチ先にCloud Connectionを選択する 4. 表示されるCloud Connection一覧から先ほど作ったAWSのCloud Connectionを選択し、VCにアタッチします。 Cloud Connection一覧から先ほど作ったAWSのCloud Connectionを選択 5. 同じようにして「VCのアタッチアイコン」→「OCX Router(v1)」→「先ほど作ったOCX RouterのInterface」を選択し、OCX Router InterfaceをVCにアタッチします。 VCのアタッチ先にOCX RouterのInterfaceを指定 6. しばらく待ってから。AWSコンソールからDirect Connectの「仮想インターフェース」を確認し、ピアリングのステータスがupになっていることを確認します。 AWSのピアリングステータスを確認する

OCIとの接続

OCX及びOCIのコンソールを操作し、以下のようなネットワークを構築することを目指します。
AWSとの接続は先にOCXでCloud Connectionを作り、AWSコンソールでそれを承認し、VIFを作る方式でした。
OCIとの接続は先にOCIコンソールでFastConnectを作り、Cloud Connectionを作った際に接続するという方式になります。 OCXとクラウドとの接続方法はクラウド事業者によって方式が変わるため、注意が必要です。

AWS、OCI、OCX間のネットワーク構成。OCIからOCXまでも疎通させ、最終的なOCXを通じてAWSとOCIがつながっている構成を作る。

FastConnectの作成

OCIコンソールからFastConnectを作成し、OCXネットワークとの接続準備を行います。

OCX、OCI間のFast Connect構成図。FastConnectを作成し、OCI側に接続口を作成する。

  1. OCIコンソールから「FastConnect」と検索し、作成を押します。 OCIコンソールでFast Connectの作成を押す

  2. ConnectionタイプにFastConnectPartner、PartnerにBBIX Multi-Cloud Serviceを選択して、次へを押します。 FastConnect作成画面でパートナーを指定する

  3. 以下を参考に情報を入力し、FastConnectを作成します。 FastConnectの詳細入力をする

      Name: ocx-techblog
      Compartment: 自分の
      Virtual circuit type: Private virtual circuit
      Traffic: All traffic
      Dynamic routing gateway in 自分の: ocx-techblog-drg
      Provisioned bandwidth: 1Gbps
      Customer BGP IPv4 address: 10.128.40.1/30
      Oracle BGP IPv4 address: 10.128.40.2/30
      Customer BGP ASN: 65000
      Use a BGP MD5 authentication key: 有効
      BGP MD5 authentication key: worldocx
      その他項目: デフォルトのまま
    
  4. 作成したFastConnectの詳細から、OCIDとASNを確認します。 FastConnect詳細からOCIDとASNを確認する

Cloud Connectionの作成

OCXポータルからCloud Connectionを作成し、OCIとの接続を行います。 OCX、OCI間のCloudConnection構成図。OCX内にCloudConnectionを作成し、OCXとOCIを論理的に繋げる。

  1. OCXポータルのメニューから「Cloud Connection」→「Create」→「Oracle」を選択します。 OCXのCloud ConnectionからOracleを選択
  2. ロケーション、名前、速度を入力して次へを押します。 Oracle Cloud Connectionの詳細入力をする

  3. 先ほど作成したFastConnectのOCIDを入力し、各項目を確認したら作成します。 OCIDを入力する

  4. OCIコンソールに移動し、作成したFastConnectのStatusが「Provisioning」もしくは「Provisioned」になっていることを確認します。

OCX RouterのInterfaceを作成し、BGPセッションを確立

AWSとの接続に用いたOCX Routerのインスタンスに、新たに作成したInterfaceとVCと組み合わせることでBGPセッションを確立します。

AWS、OCI、OCX間のネットワーク構成。AWSのVPCにはInternetGatewayとVGWがあり、パブリックサブネット内にインスタンスが存在している。OCIのVCNにはDRGがあり、パブリックサブネット内にインスタンスが存在している。OCXにはCloudConnectionとOCXRouterがあり、AWSとOCIを繋いでいる。

  1. AWSと接続するのに利用したOCX Routerのインスタンスの「+マーク」→「Primary Interface作成」を選択し、以下の情報を参考にOCX Router Interfaceを作成します。 OCI接続用のOCX Router Interfaceを作成する。Nameは任意、LocalIPv4Addressは10.128.40.1/30を指定する。
  2. 作ったOCX Router Interfaceから「BGP Parametersタブ」→「BGP Parameter作成」を選択し、以下の情報を参考にBGP Parameterを作成します。 OCX RouterのBGP Parameterを作成する。Local Addressは10.128.40.1、Remote Addressは10.128.40.2、Remote ASNは31898、MD5 Auth Keyはworldocx、その他項目はデフォルトのままで入力
  3. OCIとの接続に使うVCはAWSとの接続に使ったVCとは違う回線に当たるため、VCを新たに作成します。OCXポータルのメニューから「Virtual Circuits(VCs)」→「Create」を選択し、名前を入力し作成します。 OCXポータルでVCを作成する
  4. VCに先ほど作成したOracle Cloud ConnectionとOCX Router Interfaceをアタッチします。 VCにOracle Cloud Connectionをアタッチ VCにOracle用OCX Router Interfaceをアタッチ
  5. しばらく待ってからOCIコンソールに移動し、接続したFastConnectのピアリングステータスがupになっていることを確認します。 FastConnectのピアリングステータスを確認する

ルートテーブルの編集と疎通確認

ここまででOCXを用いてAWSとOCIを閉域網で接続する方法を確認しました。最後に特定の通信が構築した閉域網を通るようにルートテーブルを編集し、疎通確認をします。

AWSでの設定

  1. AWSコンソールに移動し、作成したAWSインスタンスの詳細からパブリック、プライベートIPを確認します。 AWSインスタンスのパブリック、プライベートIPを確認する

  2. 同じくAWSコンソールから作成したVPCの詳細へ移動し、パブリックサブネットに紐づいているルートテーブルを選択します。 AWSVPCのルートテーブルを選択

  3. ルートの編集を選択し、OCI向けの通信はVGWを通るようにルートを追加します。 VGWへのルートを追加する

OCIでの設定

  1. OCIコンソールに移動し、作成したOCIインスタンスの詳細からパブリック、プライベートIPを確認します。 OCIインスタンスのパブリック、プライベートIPを確認する

  2. 同じくOCIコンソールから作成したVCNの詳細へ移動し、ルートテーブルを選択します。 OCIVCNのルートテーブルを選択

  3. ルートの編集を選択し、AWS向けの通信はDRGを通るようにルートを追加します。 DRGへのルートを追加する

ログインと疎通確認

  1. AWSとOCIのインスタンスを作った際にダウンロードした秘密鍵を~/.sshへコピーします。ターミナルを開き、以下のコマンドを順番に入力します。yyyy-mm-ddは鍵の名称に合わせて入力して下さい。

     cd Downloads/
     cp ocx-techblog.pem ~/.ssh
     cp ssh-key-yyyy-mm-dd.key ~/.ssh
     cd ~/.ssh
    
  2. 以下のコマンドを入力し、AWSインスタンスにログインして疎通確認を行います。各IPアドレスは各自で前セクションで確認したものを使用します。

     sudo ssh ec2-user@X.X.X.X -i ocx-techblog.pem
     sudo su
     yum update –y
     ping 10.40.0.185
    

    以下の画像のように疎通していることが確認できると思います。

    AWSからOCIへの疎通確認

  3. OCIのインスタンスでも同様に行います。

まとめ

今回はOCXを用いて2つのクラウドサービス間をつなぐ閉域網の構築を行いました。OCXは物理的な工事の手配や発注からのリードタイムが短いことが特徴として挙げられており、ここまでの実際の作業も1時間以内に終わらせることができます。
Cloud Connection、OCX Router、VCを始めとした様々なリソースを組み合わせて自由に構築を行えることも特徴で、本例ではOCX Routerを1インスタンスしか使っていませんが、2インスタンス使った冗長構成を作ることも可能なので是非お試しください。

2. webサーバ及びDBサーバの構築

ここでは、実際に口コミサイトを作るという体でAWSのインスタンスをwebサーバ、OCIのインスタンスをDBサーバとして利用します。
インターネットを通じたユーザからのhttpアクセスに対しwebページを表示し、webページに入力された口コミはOCXで構築した閉域網を通じてDBへ登録されるという仕組みになります。このようにアプリケーションレイヤとデータベースレイヤを分け、その間にインターネット経由でないプライベートな接続を用意してあげることで、セキュリティリスクの軽減や帯域確保による動作の向上が期待できます。 AWS、OCI、OCX間のネットワーク構成。AWSのVPCにはInternetGatewayとVGWがあり、パブリックサブネット内にインスタンス(webサーバ)が存在している。OCIのVCNにはDRGがあり、パブリックサブネット内にインスタンス(DBサーバ)が存在している。OCXにはCloudConnectionとOCXRouterがあり、AWSとOCIを繋いでいる。

OCIインスタンスでの設定

まず最初にOCIインスタンスをMySQLサーバとして利用できるように設定を行います。

MySQLのインストールと設定

  1. 以下のコマンドを実行してMySQLのインストールを行います。sudo suのsuperuser権限はこれ以降の手順でも適用します。

     sudo su
     yum module install mysql:8.0/server –y
    
  2. 以下のコマンドを実行してMySQLのコンフィグファイルを開きます。

     cd /etc/my.cnf.d
     nano mysql-server.cnf
    
  3. [mysqld]の項目に以下を追加して保存します。

     character-set-server=utf8
     collation-server=utf8_unicode_ci
     bind-address = 0.0.0.0
    
  4. ファイアウォールの設定をします。

     firewall-cmd --add-port=3306/tcp –permanent
     firewall-cmd --reload
    
  5. MySQLを実行し、ログインします。

     systemctl start mysqld
     systemctl enable mysqld
     mysql -u root
    
  6. 以下のSQLコマンドを実行し、データベースとユーザの設定をします。awsuserとAwsuser00$$はユーザとパスワードに当たるので、好きなものを設定して下さい。

     create database sampledb;
     use sampledb;
     CREATE TABLE userdata (
          id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
          username VARCHAR(50),
          message TEXT
     );
     CREATE USER 'awsuser'@'10.30.0.66' IDENTIFIED BY 'Awsuser00$$';
     GRANT ALL PRIVILEGES ON sampledb.* TO 'awsuser'@'10.30.0.66’;
     FLUSH PRIVILEGES;
    
  7. OCI側の設定は完了したため、ルートテーブルを以下のように設定し、インターネットとの疎通性をなくします。こうすることで、MySQLサーバを擬似的にプライベートサブネット内に置きます。 OCIのルートテーブルを編集してインターネット疎通性をなくす

AWSインスタンスでの設定

次にAWSインスタンスをwebサーバとして利用できるように設定を行います。

MySQLのインストールと疎通確認

  1. 以下のコマンドを実行してMySQLのインストールを行います。sudo suのsuperuser権限はこれ以降の手順でも使います。

     sudo su
     yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm -y
     yum install mysql-community-server –y
    
  2. 以下のコマンドを実行して、OCXで構築した閉域網を通じて、OCI側のMySQLサーバにアクセスできるか確認します。パスワードを聞かれるので、設定したものを入力します。MySQLにログインできることを確認したらquitコマンドから切断します。

     mysql -u awsuser -h 10.40.0.185 –p
    
  3. 以下のコマンドを実行してapacheのインストールを行います。

     yum install httpd –y
     yum install php php-mysql -y
    
  4. 以下のコマンドからapacheを実行します。

     systemctl start httpd
     systemctl enable httpd
    
  5. AWSインスタンスから確認できるパブリックIPにhttpでアクセスします。http://X.X.X.Xにアクセスしてapacheの初期画面が表示されたら成功です。httpsではアクセスできないので注意して下さい。 AWSインスタンスのパブリックIPを確認

  6. 以下のコマンドを実行し、index.phpを作成、編集します。

     cd /var/www/html
     nano index.php
    
  7. index.phpに以下をペーストして保存します。$host, $user, $passにはそれぞれOCIインスタンスのプライベートIP、設定したユーザとパスワードを入力します。

     <?php
     $host = '10.40.0.185';
     $db   = 'sampledb';
     $user = 'awsuser';
     $pass = 'Awsuser00$$';
     $charset = 'utf8mb4';
    
     $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
     $options = [
         PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
         PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
         PDO::ATTR_EMULATE_PREPARES   => false,
     ];
    
     if ($_SERVER["REQUEST_METHOD"] == "POST") {
         $username = $_POST["username"];
         $message = $_POST["message"];
    
         try {
             $pdo = new PDO($dsn, $user, $pass, $options);
             $stmt = $pdo->prepare("INSERT INTO userdata (username, message) VALUES (?, ?)");
             $stmt->execute([$username, $message]);
             echo "Data saved successfully!";
         } catch (\PDOException $e) {
             throw new \PDOException($e->getMessage(), (int)$e->getCode());
         }
     }
     ?>
    
     <form action="index.php" method="post">
         Username: <input type="text" name="username"><br>
         Message: <textarea name="message"></textarea><br>
         <input type="submit" value="Submit">
     </form>
    
  8. 以下のコマンドを実行して、apacheを更新します。

     systemctl restart httpd
    
  9. AWSインスタンスから確認できるパブリックIPにhttpでアクセスします。http://X.X.X.Xにアクセスして以下の画面が出てきたら成功です。 apacheで設定したwebページ

  10. usernameとmessageを入力してsubmitボタンを押すと、以下のようにデータベースに情報が登録されることを確認します。 DBに口コミが投稿されていることを確認する