ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントに例の値を使用します。演習を終える際は、これらの値をクラウド環境に固有の値に置き換えてください。
Oracle Cloud Infrastructureを使用した、IPv6を使用したインターネットからアクセス可能なWebサーバーの公開
イントロダクション
このチュートリアルでは、Oracle Cloud Infrastructure (OCI)内でWebサーバー(OCIインスタンス)を作成する方法について説明し、このWebサーバーをインターネットからアクセス可能にします。パブリックIPv4アドレスからこのWebサーバーにアクセスできるようにするだけでなく、DNSレコード(FQDN)が完全に構成されたパブリックIPv6アドレスからもアクセスできるようにします。
ノート: このチュートリアルで使用したドメインは、テスト目的でのみ作成および構成されています。
目的
-
IPv6を介してアクセス可能なOCIインスタンスを使用してWebサイトを作成します。また、Webサイトを最終的に利用できるようにするための他のすべての前提条件を作成および構成する方法についても説明しました。ボーナスとして、NGINX Webサーバーのインストール方法とPHPの統合方法についても説明しました。最後に、WebサーバーへのIPv4またはIPv6接続を検証するために使用できるカスタムPHP Webサイトまたはスクリプトを提供し、HTTPまたはHTTPSで接続している場合。
- タスク1: IPv6を有効にして新しいVCNを作成します。
- タスク2: IPv6を有効にして新しいサブネットを作成します。
- タスク3: IPv6を有効にして新しいインスタンスを作成します。
- タスク4: 新しいインターネット・ゲートウェイを作成し、ルーティングを構成します。
- タスク5: デフォルトのセキュリティ・リストでHTTPおよびHTTPSを開きます。
- タスク6: このインスタンスへのWebサーバーのインストール
- タスク7: DNSレコードの構成
- タスク8: NGINXおよびPHPを使用したカスタムWebサイトの作成
- タスク9: インターネットからのWebサーバーのテスト
タスク1: IPv6を有効にした新規VCNの作成
-
ハンバーガー・メニューを開き、「Virtual Cloud Networking」をクリックします。
- メニューで「Virtual Cloud Networks」を選択します。
- 作業するコンパートメントを選択します。コンパートメントを設定していない場合は、ルート・コンパートメントを使用します。
- 「VCNの作成」をクリックします。
-
「Create a Virtual Cloud Networks」に、次の情報を入力します。
- VCN名を入力します。
- まだ事前移入されていない場合は、コンパートメントを再度選択します。
- このVCN内で使用するIPv4 CIDRを選択します。このチュートリアルでは、IPv4サブネット(通常は/24)がこのCIDRクロックから切り離されるため、/16 CIDRを使用しています。
- 下へスクロール
- IPv6の場合は、Oracleによって割り当てられた接頭辞を割り当てます。「Oracle割当て/56接頭辞の割当て」を選択します。
- 「VCNの作成」をクリックします。
これで、IPv4およびIPv6サブネットのカーブに使用できる新しいIPv4およびIPv6ネットワーク・スペースを持つ新しいVCNが作成されました。
タスク2: IPv6を有効にした新規サブネットの作成
-
「サブネットの作成」をクリックします。
-
「サブネット」に、次の情報を入力します。
- サブネットの「名前」を入力します。
- このサブネットがまだ事前移入されていない場合は、そのサブネットが存在する必要があるコンパートメントを選択します。
- 「サブネット・タイプ」では、ここで「リージョナル」を選択します。
- VCNで割り当てたCIDRブロックからカーブ・アウトするIPv4サブネットを入力します。新しい/24 CIDRブロックが、VCNで決定された/16内にあることを確認します。
- 下へスクロール
- IPv6の場合は、Oracleによって割り当てられた接頭辞を割り当てます。「Oracle割当て/64接頭辞の割当て」を選択します。
- 新しい16進数を選択して、Oracle割当ての接頭辞を完成させます。
- VCNのデフォルト・ルート表を選択します。
- インターネットからWebサーバーにアクセスできるように、必要なときにパブリックIPアドレスを取得できるように、サブネットをパブリックにします。
- 下へスクロール
- VCNのデフォルトのDHCPを選択します。
- VCNのデフォルト・セキュリティ・リストを選択します。
- 「サブネットの作成」をクリックします。
-
新しく作成されたサブネットの状態が「プロビジョニング中」であることを確認します。
数分後、新しいサブネットの状態は「使用可能」になります。
これで、サブネットでIPv4およびIPv6アドレスを使用する準備ができました。
タスク3: IPv6を有効にした新規インスタンスの作成
-
OCIコンソールを開きます。
- 左上隅のハンバーガ・メニューをクリックします。
- 「固定」セクションから「インスタンス」をクリックします。
-
「インスタンスの作成」をクリックします。
-
「コンピュート・インスタンスの作成」に、次の情報を入力します。
- インスタンスの「名前」を入力します。
- インスタンスが存在する必要があるコンパートメントを選択します。
- このインスタンスを配置する可用性ドメインを選択します。このチュートリアルでは、オランダの北西部リージョンとして、可用性ドメインは1つのみです。
- 下へスクロール
すべてをデフォルトのままにして、下にスクロールします。
- 「プライマリ・ネットワーク」で、「既存の仮想クラウド・ネットワークを選択」を選択します。
- タスク1で作成したVCNを選択しました。
- サブネットについて、「既存のサブネットを選択」を選択します。
- タスク2で作成したサブネットを選択します。
- 下へスクロール
- プライベートIPv4アドレス: 「自動的にプライベートIPv4アドレスを割り当てます」を選択します。
- IPv6アドレス:タスク2でのサブネットの作成中に構成された「サブネット接頭辞からIPv6アドレスの割当て」を選択します。
- IPv6アドレス割当て: 「接頭辞からプライベートIPv6アドレスを自動的に割り当てる」を選択します。
- 下へスクロール
- このLinuxインスタンスにアクセスして管理するには、SSHキーを操作する必要があります。このチュートリアルでは、OCIで新しいSSHキー・ペアを生成します。
- ローカル・コンピュータに秘密キーと公開キーをダウンロードして、作成後にこのLinuxインスタンスにアクセスして管理できるようにします。
-
「作成」をクリックして、インスタンスを作成します。
- 作成中、インスタンスの状態はプロビジョニング中になります。
- 使用可能なIPアドレスの詳細はまだありません。
- インスタンスが完全に作成され、準備が完了すると、状態はRUNNINGに設定されます。
- これで、IPアドレスの詳細が使用可能になります。
次の論理タスクは、SSHを使用してインスタンスにアクセスするため、Webサーバーのインストールおよび構成を開始できます。パブリックIPv4アドレスと秘密キーを使用してWebサーバーに接続しようとすると、タスク1で作成されたVCNにインターネット・ゲートウェイがなくなり、そのインターネット・ゲートウェイを最初にVCNに作成し、ルーティングも構成する必要があるため、接続できません。
タスク4: 新しいインターネット・ゲートウェイの作成とルーティングの構成
インターネットから新しいインスタンス(Webサーバー)へのアクセスを有効にするには、最初はSSHを使用し、最終的にHTTPに移行します。インターネット・ゲートウェイを確立する必要があります。
-
OCIコンソールを開きます。
- Virtual Cloud Networksにアクセスします。
- タスク1で作成したVCNを選択します。
-
VCNの詳細ページで、「インターネット・ゲートウェイ」をクリックします。
-
「インターネット・ゲートウェイの作成」をクリックします。
-
「インターネット・ゲートウェイの作成」に、次の情報を入力します。
- 名前を入力します。
- コンパートメントの選択
- 「インターネット・ゲートウェイの作成」をクリックします。
-
ルート・ルールを追加します。
- インターネット・ゲートウェイが「使用可能」であることを確認します。
- 「ルート表」をクリックします。
- 「デフォルト・ルート表」には、ルール数の
0
があります。 - 「デフォルト・ルート表」をクリックします。
- プロトコル・バージョン: IPv4を選択します。
- ターゲット・タイプ: 「インターネット・ゲートウェイ」を選択します。
- 宛先CIDRブロック:このチュートリアルでは、すべてのデフォルトのIPv4ネットワーク・トラフィックがインターネット・ゲートウェイに送信されるように、
0.0.0.0/0
を選択します。 - このタスクで前に作成した「ターゲット・インターネット・ゲートウェイ」を選択します。
- 「ルート・ルールの追加」をクリックします。
- 新しいIPv4デフォルト・ルート・ルールが作成されていることを確認します。
- IPv6インターネット・トラフィックをルーティングするには、新しいIPv6デフォルト・インターネット・ルールも作成する必要があります。「ルート・ルールの追加」を再度クリックします。
- プロトコル・バージョン: IPv6を選択します。
- ターゲット・タイプ: 「インターネット・ゲートウェイ」を選択します。
- 宛先CIDRブロック:このチュートリアルでは、すべてのデフォルトのIPv6ネットワーク・トラフィックがインターネット・ゲートウェイに送信されるように、
:/0
を選択します。 - このタスクで前に作成した「ターゲット・インターネット・ゲートウェイ」を選択します。
- 「ルート・ルールの追加」をクリックします。
-
新しいIPv6デフォルト・ルート・ルールが作成されていることを確認します。
- 秘密キーを使用して、SSHを介して新しく作成されたインスタンスに接続します。
- 接続が正常に確立されたら、
IP a
コマンドを実行してIPアドレスを確認します。 - プライベートIPv4アドレスは、インスタンスの詳細に指定されたものと同じであることに注意してください。
- また、macOS CLI端末を使用して接続をテストし、
ssh -i ssh-key-2024-02-05.key opc@xxx.xxx.xxx.48
コマンドを実行します。 - 接続が正常に確立されたら、
IP a
コマンドを実行してIPアドレスを確認します。 - プライベートIPv4アドレスは、OCIコンソールでインスタンスの詳細に指定されたものと同じであることに注意してください。
インスタンスには、OCIコンソールでインスタンスの詳細に指定されたIPv6アドレスがないことに注意してください。
-
この問題は、インスタンスを再起動することで修正できます。
- インスタンスに移動します。
- 「再起動」をクリックします。
- 秘密キーを使用してSSHを介してインスタンスに再度接続します。
- 接続が正常に確立されたら、
IP a
コマンドを実行してIPアドレスを確認します。 - プライベートIPv4アドレスは、インスタンスの詳細で指定されているものと同じであることに注意してください。
- プライベートIPv6アドレスは、インスタンスの詳細で指定されているものと同じであることに注意してください。
- インターネットへの接続をテストするために、GoogleのDNSサーバーの1つのIPv6 IPアドレスにもpingを実行します。
- クイック・テストを実行して、IPv6アドレスを使用してインスタンスに接続できるかどうかを確認します。
ssh -i ssh-key-2024-02-05.key opc@2603:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
コマンドを実行してテストします。 - 接続が正常に確立されたら、
IP a
コマンドを実行してIPアドレスを確認します。 - プライベートIPv4アドレスは、インスタンスの詳細で指定されているものと同じであることに注意してください。
- プライベートIPv6アドレスは、インスタンスの詳細で指定されているものと同じであることに注意してください。
タスク5: デフォルト・セキュリティ・リストでのHTTPおよびHTTPSのオープン
新しいVCNが作成されると、そのVCN内のサブネットにデフォルトのセキュリティ・リストが適用されます。デフォルトでは、ICMPおよびSSHはインバウンド(イングレス)が許可されます。Webサーバーの受信トラフィックを許可するには、そのリストにHTTPおよびHTTPSを追加する必要があります。
-
ハンバーガー・メニューをクリックし、「Virtual Cloud Networks」を選択します。
-
タスク1で作成したVCNをクリックします。
-
下へスクロール
-
「セキュリティ・リスト」をクリックします。
-
「デフォルト・セキュリティ・リスト」をクリックします。
-
「イングレス・ルールの追加」をクリックします。
-
IPv4ネットワーク・トラフィックの新しいセキュリティ・ルールを追加します。
- ソース・タイプ: 「CIDR」を選択します。
- ソースCIDR:
0.0.0.0/0
と入力します。 - IPプロトコル: 「TCP」を選択します。
- ソース・ポート範囲:デフォルト(すべて)のままにします。
- 宛先ポート範囲:
80,443
(HTTPおよびHTTPS)を選択します。 - 「説明」を入力します。
- 「イングレス・ルールの追加」をクリックします。
-
HTTPおよびHTTPSトラフィック・インバウンドを許可するには、IPv4セキュリティ・ルールを確認します。
-
IPv6ネットワーク・トラフィックの新しいセキュリティ・ルールを追加するには、新しいイングレス・ルールを作成します。「イングレス・ルールの追加」を再度クリックします。
- ソース・タイプ: 「CIDR」を選択します。
- ソースCIDR:
::/0
と入力します。 - IPプロトコル: 「TCP」を選択します。
- ソース・ポート範囲:デフォルト(すべて)のままにします。
- 宛先ポート範囲:
80,443
(HTTPおよびHTTPS)を選択します。 - 「説明」を入力します。
- 「イングレス・ルールの追加」をクリックします。
-
HTTPおよびHTTPSトラフィック・インバウンドを許可するには、IPv6セキュリティ・ルールを確認します。
セキュリティ・ルールが設定されており、VCNサブネットでIPv4およびIPv6トラフィックが許可されているため、Webサーバー・アプリケーションをインスタンスにインストールします。
タスク6: インスタンスへのWebサーバーのインストール
Webサーバー・アプリケーションをインストールする前に、ファイアウォール・ポートが正しく構成されているかどうかを迅速に検証します。次のWebサイトIPV6 Online Port Scannerを使用します。このWebサイトにはIPv6ポート・スキャナがありますが、IPv4アドレスを入力することもできます。
-
IPv4アドレスと詳細を入力し、TCPポート
80
でスキャンを実行します。Webサーバー・アプリケーションがまだインストールされておらず、状態がFILTEREDではないため、この状態はCLOSEDです。これは、ルールをデフォルトのセキュリティ・リストに追加したためです。 -
IPv6アドレスの場合は、次の詳細を入力します。同じ理由で、出力はIPv4と同じです。
-
Webサーバー・インスタンスの端末コンソールまたはSSH。次のコマンドを入力して、DNFソフトウェア・パッケージ・マネージャを更新し、DNFユーティリティをインストールします。
[opc@ih-webserver-01 ~]$ sudo dnf update -y [opc@ih-webserver-01 ~]$ sudo dnf install dnf-utils -y
-
nginx.repo
ファイルを更新して、NGINX Webサーバー・アプリケーションをダウンロードおよびインストールする詳細を指定します。[opc@ih-webserver-01 ~]$ sudo nano /etc/yum.repos.d/nginx.repo
次の内容をコピーして、
nginx.repo
ファイルに貼り付けます。[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
nginx.repo
ファイルの内容を確認します。[opc@ih-webserver-01 ~]$ sudo more /etc/yum.repos.d/nginx.repo [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [opc@ih-webserver-01 ~]$
-
デフォルトでは、安定した Nginxパッケージのリポジトリが使用されます。メインラインNginxパッケージを使用するには、次のコマンドを実行します。
[opc@ih-webserver-01 ~]$ sudo yum-config-manager --enable nginx-mainline
-
次のコマンドを使用して、NGINX Webサーバー・アプリケーションをインストールします。
[opc@ih-webserver-01 ~]$ sudo dnf install nginx
-
NGINX Webサーバー・アプリケーションを起動するには、次のコマンドを実行します。
[opc@ih-webserver-01 ~]$ sudo systemctl start nginx
-
インストールが完了したら、システムの起動時にNGINXが自動的に起動し、Webサーバーを起動できるようにします。
[opc@ih-webserver-01 ~]$ sudo systemctl enable nginx Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.
-
次のコマンドを使用して、NGINX Webサーバー・アプリケーションの実行ステータスを確認します。
[opc@ih-webserver-01 ~]$ systemctl status nginx ● nginx.service - nginx - high performance web server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2024-02-06 08:58:43 GMT; 2min 47s ago Docs: http://nginx.org/en/docs/ Main PID: 43323 (nginx) Tasks: 3 (limit: 99901) Memory: 2.8M CGroup: /system.slice/nginx.service ├─43323 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf ├─43324 nginx: worker process └─43325 nginx: worker process Feb 06 08:58:43 ih-webserver-01 systemd[1]: Starting nginx - high performance web server... Feb 06 08:58:43 ih-webserver-01 systemd[1]: Started nginx - high performance web server. [opc@ih-webserver-01 ~]$
-
次のコマンドを使用して、NGINX Webサーバー・アプリケーションのバージョンを確認します。
[opc@ih-webserver-01 ~]$ nginx -v nginx version: nginx/1.25.3 [opc@ih-webserver-01 ~]$
-
firewalld
は、OCI上のOracle Linuxデプロイメントにインストールされるゾーンベースの個人ファイアウォールです。すでに、VCNサブネット上のデフォルト・セキュリティ・リストを介してファイアウォールが構成されています。内部firewalld
サービスを無効にします。次のコマンドを実行します[opc@ih-webserver-01 nginx]$ sudo systemctl stop firewalld [opc@ih-webserver-01 nginx]$ sudo systemctl disable firewalld Removed /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [opc@ih-webserver-01 nginx]$ sudo setenforce 0 [opc@ih-webserver-01 nginx]$
-
Webサーバー・サービスが実行されているかどうかを確認するには、リスナーが実行されているかどうかを確認します。次のコマンドを実行します3つのNGINXサービスで、IPv4およびポート
80
のすべてのリスニングが実行されていることに注意してください。ここで注目すべき点は、IPv6リスナーがないことです。[opc@ih-webserver-01 ~]$ sudo lsof -i -P -n | grep LISTEN systemd 1 root 71u IPv4 19039 0t0 TCP *:111 (LISTEN) systemd 1 root 82u IPv6 19041 0t0 TCP *:111 (LISTEN) rpcbind 1421 rpc 4u IPv4 19039 0t0 TCP *:111 (LISTEN) rpcbind 1421 rpc 6u IPv6 19041 0t0 TCP *:111 (LISTEN) osms-agen 2429 root 7u IPv6 41713 0t0 TCP 127.0.0.1:32768 (LISTEN) osms-agen 2429 root 10u IPv4 41722 0t0 TCP 127.0.0.1:9003 (LISTEN) pmcd 2469 pcp 0u IPv4 35603 0t0 TCP 127.0.0.1:44321 (LISTEN) pmcd 2469 pcp 3u IPv6 35604 0t0 TCP [::1]:44321 (LISTEN) pmlogger 3188 pcp 7u IPv4 42005 0t0 TCP 127.0.0.1:4330 (LISTEN) pmlogger 3188 pcp 8u IPv6 42006 0t0 TCP [::1]:4330 (LISTEN) sshd 6745 root 3u IPv4 54797 0t0 TCP *:22 (LISTEN) sshd 6745 root 4u IPv6 54799 0t0 TCP *:22 (LISTEN) nginx 43323 root 6u IPv4 98324 0t0 TCP *:80 (LISTEN) nginx 43324 nginx 6u IPv4 98324 0t0 TCP *:80 (LISTEN) nginx 43325 nginx 6u IPv4 98324 0t0 TCP *:80 (LISTEN)
-
もう1つのクイック・チェックでは、IPv4を使用してデフォルトのNGINX Webサーバーに到達できるかどうかを確認するために、ローカルWebサーバーにカールを実行します。
[opc@ih-webserver-01 ~]$ curl http://localhost <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html> [opc@ih-webserver-01 ~]$
-
同じIPv6オンライン・ポート・スキャナのWebサイトを使用してインターネットから同じテストを行い、ポートがIPv4に対してOPENになりました。
-
最後のテストは、WebサイトまたはWebサーバーがIPv4を使用してリモート・ブラウザを使用して到達可能かどうかをテストすることです。使用されるURLは
http://144.xxx.xxx.xxx
です。 -
NGINX Webサーバー・アプリケーションをインストールした場合でも、IPv6アドレスの次の結果が得られます。
これを修正するには、WebサーバーがIPv6アドレスをリスニングするように構成されていることを確認する必要があります。これを行うには、
default.conf
nginxファイルを編集します。[opc@ih-webserver-01 conf.d]$ sudo nano /etc/nginx/conf.d/default.conf
構成ファイルの serverセクションは、次のようになります。
server { listen 80; server_name localhost; #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; }
サーバーセクションに次の行を追加します。
**listen [::]:80;**
serverセクションは次のようになります。
server { listen 80; **listen [::]:80;** server_name localhost; #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; }
更新後は、
default.conf
ファイルは次のようになります。[opc@ih-webserver-01 conf.d]$ sudo more /etc/nginx/conf.d/default.conf server { listen 80; **listen [::]:80;** server_name localhost; #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } [opc@ih-webserver-01 conf.d]$
-
次のコマンドを使用して、NGINX Webサーバーを再起動します。
[opc@ih-webserver-01 ~]$ sudo systemctl restart nginx
-
次のコマンドを使用して、リスナーを再度確認します。NGINXは、IPv4の横のIPv6にもリストされています。
[opc@ih-webserver-01 conf.d]$ sudo lsof -i -P -n | grep LISTEN systemd 1 root 46u IPv4 19039 0t0 TCP *:111 (LISTEN) systemd 1 root 48u IPv6 19041 0t0 TCP *:111 (LISTEN) rpcbind 1421 rpc 4u IPv4 19039 0t0 TCP *:111 (LISTEN) rpcbind 1421 rpc 6u IPv6 19041 0t0 TCP *:111 (LISTEN) osms-agen 2429 root 7u IPv6 41713 0t0 TCP 127.0.0.1:32768 (LISTEN) osms-agen 2429 root 10u IPv4 41722 0t0 TCP 127.0.0.1:9003 (LISTEN) pmcd 2469 pcp 0u IPv4 35603 0t0 TCP 127.0.0.1:44321 (LISTEN) pmcd 2469 pcp 3u IPv6 35604 0t0 TCP [::1]:44321 (LISTEN) pmlogger 3188 pcp 7u IPv4 42005 0t0 TCP 127.0.0.1:4330 (LISTEN) pmlogger 3188 pcp 8u IPv6 42006 0t0 TCP [::1]:4330 (LISTEN) sshd 6745 root 3u IPv4 54797 0t0 TCP *:22 (LISTEN) sshd 6745 root 4u IPv6 54799 0t0 TCP *:22 (LISTEN) nginx 54944 root 6u IPv4 219674 0t0 TCP *:80 (LISTEN) nginx 54944 root 7u IPv6 219675 0t0 TCP *:80 (LISTEN) nginx 54945 nginx 6u IPv4 219674 0t0 TCP *:80 (LISTEN) nginx 54945 nginx 7u IPv6 219675 0t0 TCP *:80 (LISTEN) nginx 54946 nginx 6u IPv4 219674 0t0 TCP *:80 (LISTEN) nginx 54946 nginx 7u IPv6 219675 0t0 TCP *:80 (LISTEN) [opc@ih-webserver-01 conf.d]$
同じIPv6オンライン・ポート・スキャナのWebサイトを使用してインターネットから同じテストを実行し、IPv6のポートがOPENになりました。
もう1つのクイック・チェックでは、IPv6を使用してデフォルトのNGINX Webサーバーに到達できるかどうかを確認するために、ローカルWebサーバーにカールを実行します。
[opc@ih-webserver-01 conf.d]$ curl -6 "http://[::1]:80" <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html> [opc@ih-webserver-01 conf.d]$
-
最後のテストは、WebサイトまたはWebサーバーがIPv6を使用してリモート・ブラウザを使用して到達可能かどうかをテストすることです。使用されるURLは
http://[2603:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]
ですノート:ブラウザでIPv6アドレスを使用する場合は、大カッコで囲む必要があります。
タスク7: DNSレコードの構成
ノート:このチュートリアルで使用したドメインは、テスト目的でのみ作成および構成されています。
現在、WebサイトまたはWebサーバーはインターネットからアクセスできます。IPv4アドレスやIPv6アドレスよりも簡単に記憶できるFQDNを構成することで、さらに一歩進みます。このチュートリアルでは、新しいWebサーバーの oci.iwanhoogendoorn.nlのサブドメインを例として使用します。
-
ドメイン
iwanhoogendoorn.nl
のレジストラのドメイン管理パネルにログインします。- 構成する正しいドメインが選択されていることを確認します。
- 「DNS管理」を選択します。
-
次の図に示すように、ドメイン iwanhoogendoorn.nlのすべての DNSレコードが一覧表示されます。
oci
サブドメインをIPv4のドメインに追加し、インスタンスのパブリックIPv4アドレスを選択します。- 「追加」をクリックします。
- 次に、
oci
サブドメインをIPv6のドメインに追加し、インスタンスのIPv6アドレスを選択します。 - 「追加」をクリックします。
- DNSの概要ページで、IPv4のoci.iwanhoogendoorn.nl DNSレコードを確認します。
- DNSの概要ページで、IPv6のoci.iwanhoogendoorn.nl DNSレコードを確認します。
-
nslookup
コマンドを使用して、oci.iwanhoogendoorn.nlが正しいIPv4アドレスに解決されるかどうかをテストします。iwanhoogendoorn@Iwans-MacBook-Pro ~ % nslookup oci.iwanhoogendoorn.nl
-
nslookup
コマンドを使用して、oci.iwanhoogendoorn.nlが正しいIPv6アドレスに解決されるかどうかをテストします。iwanhoogendoorn@Iwans-MacBook-Pro ~ % nslookup -q=AAAA oci.iwanhoogendoorn.nl
タスク8: NGINXおよびPHPを使用したカスタムWebサイトの作成
NGINXを使用して、ネットワークおよびIPアドレスに関するもう少し詳しい情報を提供するカスタムPHP Webサイトまたはスクリプトを作成します。
-
PHP FastCGI Process Manager (PHP-FPM)をインストールします。PHP-FPMは、Webサイトが高負荷を処理できるようにする、PHPの代替のFastCGIデーモンです。
sudo dnf install php-fpm
-
インストールされているPHPバージョンを確認します。
[opc@ih-webserver-01 /]$ php -v PHP 7.2.24 (cli) (built: Oct 22 2019 08:28:36) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies [opc@ih-webserver-01 /]$
-
NGINXを PHPと連携させるためには、いくつかの設定を行う必要があります。PHP側とNGNIX側の1つの構成ファイル。
Linuxディストリビューション、NGINXおよびPHP-FPMのバージョンによっては、構成ファイル名とパス名が異なる場合があり、これにより、NGINXとPHPの統合部分がはるかに困難になります。
PHP-FPMおよびNGINXの重要なファイルおよびディレクトリ。
説明 Oracle Linux 8 その他のインストール/ディストリビューション NGINX Webルート・パス /usr/share/nginx/html /usr/share/nginx/www PHP FPM構成ファイル /etc/php-fpm.d/www.conf php-fpm.conf NGINX構成ファイル /etc/nginx/conf.d/default.conf nginx.conf PHP FPMソケットファイル /run/php-fpm/www.sock php-fpm.sock、phpx.x-fpm.sock (x.x = version) FastCGI設定ファイル /etc/nginx/fastcgi_params fastcgi.conf PHP構成ファイル /etc/php.ini
NGINXをPHPと統合するには、次のステップを実行します。
-
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**
-
-
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; }**
-
-
php.ini
構成ファイルを編集します。-
/etc/php.ini
ファイルを編集します。[opc@ih-webserver-01 /]$ sudo nano /etc/php.ini
-
次の行が存在するか、変更されるか、コメント解除されていることを確認してください。
cgi.fix_pathinfo = 0;
-
-
PHP-FPMおよびNGINXサービスを再起動します。
-
PHP-FPMサービスを再起動します。
sudo systemctl start php-fpm
-
NGINXサービスを再起動します。
sudo systemctl restart nginx
-
-
適切な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の準備はできていますか?
- FQDN oci.iwanhoogendoorn.nlを使用してテストします。
- IPv4 DNSレコードが正しく構成されていることを確認します。
- IPv6 DNSレコードが正しく構成されていることを確認します。
- WebサイトがIPv4でアクセス可能であることを確認します。
- WebサイトがIPv6でアクセス可能であることを確認します。
承認
- 著者 - Iwan Hoogendoorn (OCIネットワーク・スペシャリスト)
その他の学習リソース
docs.oracle.com/learnの他のラボをご覧いただくか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。
製品ドキュメントは、Oracle Help Centerを参照してください。
Use Oracle Cloud Infrastructure to Publish a Webserver Accessible from the Internet with IPv6
F93542-01
February 2024
Copyright © 2024, Oracle and/or its affiliates.