ノート:

Oracle Cloud Infrastructureを使用した、IPv6を使用したインターネットからアクセス可能なWebサーバーの公開

イントロダクション

このチュートリアルでは、Oracle Cloud Infrastructure (OCI)内でWebサーバー(OCIインスタンス)を作成する方法について説明し、このWebサーバーをインターネットからアクセス可能にします。パブリックIPv4アドレスからこのWebサーバーにアクセスできるようにするだけでなく、DNSレコード(FQDN)が完全に構成されたパブリックIPv6アドレスからもアクセスできるようにします。

イメージ

ノート: このチュートリアルで使用したドメインは、テスト目的でのみ作成および構成されています。

イメージ

目的

タスク1: IPv6を有効にした新規VCNの作成

これで、IPv4およびIPv6サブネットのカーブに使用できる新しいIPv4およびIPv6ネットワーク・スペースを持つ新しいVCNが作成されました。

タスク2: IPv6を有効にした新規サブネットの作成

これで、サブネットでIPv4およびIPv6アドレスを使用する準備ができました。

タスク3: IPv6を有効にした新規インスタンスの作成

イメージ

次の論理タスクは、SSHを使用してインスタンスにアクセスするため、Webサーバーのインストールおよび構成を開始できます。パブリックIPv4アドレスと秘密キーを使用してWebサーバーに接続しようとすると、タスク1で作成されたVCNにインターネット・ゲートウェイがなくなり、そのインターネット・ゲートウェイを最初にVCNに作成し、ルーティングも構成する必要があるため、接続できません。

イメージ

タスク4: 新しいインターネット・ゲートウェイの作成とルーティングの構成

インターネットから新しいインスタンス(Webサーバー)へのアクセスを有効にするには、最初はSSHを使用し、最終的にHTTPに移行します。インターネット・ゲートウェイを確立する必要があります。

タスク5: デフォルト・セキュリティ・リストでのHTTPおよびHTTPSのオープン

新しいVCNが作成されると、そのVCN内のサブネットにデフォルトのセキュリティ・リストが適用されます。デフォルトでは、ICMPおよびSSHはインバウンド(イングレス)が許可されます。Webサーバーの受信トラフィックを許可するには、そのリストにHTTPおよびHTTPSを追加する必要があります。

セキュリティ・ルールが設定されており、VCNサブネットでIPv4およびIPv6トラフィックが許可されているため、Webサーバー・アプリケーションをインスタンスにインストールします。

タスク6: インスタンスへのWebサーバーのインストール

Webサーバー・アプリケーションをインストールする前に、ファイアウォール・ポートが正しく構成されているかどうかを迅速に検証します。次のWebサイトIPV6 Online Port Scannerを使用します。このWebサイトにはIPv6ポート・スキャナがありますが、IPv4アドレスを入力することもできます。

タスク7: DNSレコードの構成

ノート:このチュートリアルで使用したドメインは、テスト目的でのみ作成および構成されています。

現在、WebサイトまたはWebサーバーはインターネットからアクセスできます。IPv4アドレスやIPv6アドレスよりも簡単に記憶できるFQDNを構成することで、さらに一歩進みます。このチュートリアルでは、新しいWebサーバーの oci.iwanhoogendoorn.nlのサブドメインを例として使用します。

タスク8: NGINXおよびPHPを使用したカスタムWebサイトの作成

NGINXを使用して、ネットワークおよびIPアドレスに関するもう少し詳しい情報を提供するカスタムPHP Webサイトまたはスクリプトを作成します。

NGINXをPHPと統合するには、次のステップを実行します。

  1. PHP-FPM構成ファイルを編集してNGINXを統合します

    /etc/php-fpm.d/www.confファイルを編集します。

    sudo nano /etc/php-fpm.d/www.conf
    
    • 変更前の/etc/php-fpm.d/www.confファイルの内容。

      ; Unix user/group of processes
      ; Note: The user is mandatory. If the group is not set, the default user's group
      ;	will be used.
      ; RPM: apache user chosen to provide access to the same directories as httpd
      **user =** apache
      ; RPM: Keep a group allowed to write in log dir.
      **group =** apache
      
    • 変更後の/etc/php-fpm.d/www.confファイルの内容。

      ; Unix user/group of processes
      ; Note: The user is mandatory. If the group is not set, the default user's group
      ;	will be used.
      ; RPM: apache user chosen to provide access to the same directories as httpd
      **user = nginx**
      ; RPM: Keep a group allowed to write in log dir.
      **group = nginx**
      
  2. NGINX構成ファイルを編集してPHP-FPMを統合します

    • /etc/nginx/conf.d/default.confファイルを編集します。

      [opc@ih-webserver-01 html]$ sudo nano /etc/nginx/conf.d/default.conf
      
    • 次の構成を追加します。

      location / {
      **# where is the NGINX root www folder?**
          root   /usr/share/nginx/html;
      # what are the default index files to look for in the directory?
          index **index.php** index.html index.htm;
      }
      
      # tell NGINX what to do when it sees PHP-FPM giving a 404 HTTP status in the response
      **location = /404.php {
      # where is the NGINX root www folder?
        root   /usr/share/nginx/html;
      # not return error responses with relevant status codes
        fastcgi_intercept_errors off;
      # where is PHP-FPM listening? the socket
        fastcgi_pass unix:/var/run/php-fpm/www.sock;
      # everytime we're in this location, tell PHP-FPM the complete script filename to be executed
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      # and don't forget to tell PHP-FPM stuff like SERVER_NAME:
        include fastcgi_params;
      }**
      
      # tell NGINX what to do when it sees PHP-FPM a .php file
      **location ~ \.php$ {
      # where is the NGINX root www folder?
        root   /usr/share/nginx/html;
      # define custom error pages
        error_page 404 /404.php;
      # return error responses with relevant status codes
        fastcgi_intercept_errors on;
      # where is PHP-FPM listening? the socket
        fastcgi_pass unix:/var/run/php-fpm/www.sock;
      # everytime we're in this location, tell PHP-FPM the complete script filename to be executed
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      # and don't forget to tell PHP-FPM stuff like SERVER_NAME:
        include fastcgi_params;
      }**
      
  3. php.ini構成ファイルを編集します

    • /etc/php.iniファイルを編集します。

      [opc@ih-webserver-01 /]$ sudo nano /etc/php.ini
      
    • 次の行が存在するか、変更されるか、コメント解除されていることを確認してください。

      cgi.fix_pathinfo = 0;
      
  4. PHP-FPMおよびNGINXサービスを再起動します

    • PHP-FPMサービスを再起動します。

      sudo systemctl start php-fpm
      
    • NGINXサービスを再起動します。

      sudo systemctl restart nginx
      
  5. 適切なWebページを処理およびテストするためのカスタム・ページを作成します

    • カスタムの404.phpページを作成します。これは、ページが存在せず、アクセスを試みる場合に、カスタム404ページへのリダイレクトを適切に処理するために必要です。

      [opc@ih-webserver-01 html]$ sudo nano 404.php
      

      カスタム404.phpページのコード。

      <?php
        header("HTTP/1.0 404 Not Found");
      ?>
      <html>
        <head>
          <title>404 Error - Page Not Found</title>
        </head>
        <body>404 Error - Page Not Found!</body>
      </html>
      
    • カスタムのinfo.phpページを作成します。

      [opc@ih-webserver-01 html]$ sudo nano info.php
      

      info.phpページのコード。

      <?php
      
      phpinfo();
      
    • PHPがNGNIXと連携していることの証明を提供するinfo.PHP Webサイトをテストします。

      イメージ

      Webサイトが正しくインストールおよび構成されると、次のWebページが表示されます。このページには、接続に使用するIPバージョンに応じて、ローカルおよびリモートのIPv4またはIPv6アドレスに関する情報が表示されます。このページでは、使用しているプロトコル(HTTPまたはHTTPS)についても説明します。

      イメージ

タスク9: インターネットからのWebサーバーのテスト

ノート:このチュートリアルで使用したドメインは、テスト目的でのみ作成および構成されています。

すでに複数の方法を使用してWebサイトまたはWebサーバーの到達可能性をテストしています。次のWebサイトを使用して、到達可能性とDNSレコード構成を1回でテストする最終テストを実行します。サイトIPv6の準備はできていますか?

  1. FQDN oci.iwanhoogendoorn.nlを使用してテストします。
  2. IPv4 DNSレコードが正しく構成されていることを確認します。
  3. IPv6 DNSレコードが正しく構成されていることを確認します。
  4. WebサイトがIPv4でアクセス可能であることを確認します。
  5. WebサイトがIPv6でアクセス可能であることを確認します。

イメージ

承認

その他の学習リソース

docs.oracle.com/learnの他のラボをご覧いただくか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。

製品ドキュメントは、Oracle Help Centerを参照してください。