AWSではEC2インスタンスに対して自動でグローバルIPとドメインが割り当てられます。
そしてその値はEC2のダッシュボードで確認できます。
ここで割り当てられるドメインとIPは定期的に変更されるため、 せっかくユーザーがWebサイトをお気に入りに登録してくれても、そのうちリンク切れになってしまいます。
ドメインが変わらないようにするには グローバルIPを固定して独自ドメインと紐付ける、DNSの設定を行う必要があります。
そしてAWSではDNSの設定をRoute 53というサービスで行います。
今回はRoute 53を利用し、DNSとヴァーチャルホストの設定を進めましょう。
DNSはインターネット上の「アドレス帳」のことです。
「avinton.com」などのドメイン名を通して私たちはオンラインの情報にアクセスすることができます。
ブラウザにURLが打ち込まれると、DNSはWebブラウザが情報を読み込めるように、ドメインに紐づいたインターネットプロトコル(IP)アドレスに変換してくれます。
インターネットに接続されているPCには次のようなユニークなIPアドレスが割り当てられますが、
172.16.1.1 (IPv4)
2400:cb00:2048:1::c629:d7a2 (IPv6)
このような複雑な英数字を覚えるのは少し大変です。
DNSがあれば、このような複雑な英数字をドメイン名という形で分かりやすく認識できるようになり
ます。
Route 53はAmazonの提供するDNSサービスです。
前項でお話しした「アドレス帳」に当たる部分をRoute 53ではホストゾーンと呼んでおり、AレコードやCNAMEなどのリソースレコードを管理できます。
ホストゾーンは2種類存在し、インターネット上に公開されたドメインの情報を管理する パブリックゾーン と、インターネットと通信させたくないプライベートサブネットの中でドメイン情報を管理する プライベートゾーン があります。
インターネット上に公開するWebサイトのドメインについてはパブリックゾーンで管理する必要があるため、ここではそのように設定を進めていきます。
それではDNSの設定を進めていきましょう。
DNSの設定を行うにあたり、まずグローバルIPを固定する必要があります。
IPを固定するには Elastic IP というコンポーネントを使い、EC2インスタンスへアタッチします。
EC2ダッシュボードから作成ボタンをクリックし、
画面の指示通り作業を進めるとElastic IPが一つ手に入ります。
EC2への割り当てはアクションボタンから行います。
IPを割り当てたいEC2インスタンスを選んで次へ進むと
Elastic IPとEC2インスタンスが紐づけられます。
次はドメインを取得しましょう。
ドメインはRoute53から入手できますが、月100円程度の費用がかかります。
試験目的であれば無料で取得できるサービスを利用するのが良いです。
ここではFreenomというサービスを使ってドメインを取得しましょう。
トップ画面の入力フォームに好きなドメイン名を入力し、取得作業を進めてください。
次はホストゾーンを作成し、Elastic IPとドメイン名の紐付けを行いましょう。
*ホストゾーン1つにつき毎月0.5ドルの料金が発生するため、継続して利用しない場合はこの演習の最後に設定を削除してください。
AWSのコンソール画面からDNSのダッシュボードを開きます。
作成ボタンをクリックし、 先ほど取得したドメイン名でホストゾーンを作成 します。今回はインターネットへ公開することを想定し、Typeは Public Hostes Zone を選択してください。
ホストゾーンが作成されるとダッシュボードにリストアップされるので、 ドメイン名をクリック します。
ホストゾーンにAレコードを追加します。前項で EC2インスタンスにアタッチしたElastic IPをValueに設定 しましょう。
Freenomで取得したドメインのNSを、Route53で作成したホストゾーンのNSに変更します。
Freenomのトップページを開いて My Domains をクリックし、
ドメインの設定画面へ進んでください。
Management toolsのドロップダウンリストから Nameservers をクリックします。
Route53で作成したホストゾーンのNSレコードをフォームに入力します。
これでドメインとElastic IPの紐付けが完了しました。
DNSが正しく設定されているか確認しましょう。
ドメインとElastic IPが紐づいているかを確認するには dig または nslookup コマンドを使います。
1 |
dig YOUR_DOMAIN_NAME |
設定が正しければ、Route53で設定したAレコードの値が表示されます。
NSレコードを確認する場合も同様、 dig または nslookup コマンドで行います。
1 |
dig YOUR_DOMAIN_NAME NS @8.8.8.8 |
設定したNSがANSER SECTIONに表示されていればOKです。
DNSの設定だけでは、ブラウザでドメインを入力しても何も表示されません。
ブラウザでWebページを表示できるようにするには、ApacheにVirtualHostの設定を追加する必要があります。
EC2インスタンスへSSHし、設定作業を行いましょう。
1 2 3 |
ssh -i ~/.ssh/HOGEHOGE -p xxxxx YOUR_ELASTIC_IP sudo su - docker exec -it YOUR_CONTAINER_ID |
~
Apacheのデフォルトの設定ファイルは /etc/httpd/conf/httpd.conf ですが、これとは別に conf.d と modules.d ディレクトリのファイルが自動で読み込まれるようになっています。
新たに設定を追加する場合はhttpd.confには書かず、 /etc/httpd/conf.d ディレクトリにコンフィグファイルを作成すると管理しやすいためおすすめです。
設定ファイルを作成し、
1 |
vi /etc/httpd/conf.d/vhost.conf |
↓次の設定を記述し保存してください。
1 2 3 4 |
NameVirtualHost *:80 DocumentRoot "/var/www/html/" ServerName i-like-your-shoes.tk |
設定ファイルを作成し終えたらサービスを再起動します。
1 |
systemctl restart httpd |
正しく設定されていれば、ブラウザでドメインを入力した時にApacheのテスト画面が表示されます。
http://YOUR_DOMAIN_NAME
うまく表示されたでしょうか。
VirtualHostの設定方法には大きく次の2種類があります。
(A) 名前ベースのVirtualHost
(B) IPベースのVirtualHost
この記事では(A)名前ベースのVirtualHost で設定を行いました。
名前ベースのVirtualHost では一つのIPに対して複数のドメインを割り当てることができます。
VirtualHostの設定に加え、次のようにWordPressのデータベースの情報を修正する必要があります。
1 2 3 4 |
mysql -u root -p UPDATE wp_options SET option_value='正しいURL' WHERE option_name IN ('siteurl','home'); |
Route53を利用したDNSの設定方法をご紹介しました。
1.Elastic IPでグローバルIPを固定
2.ドメインの取得
3.ドメインとElastic IPを結ぶAレコードの追加
4.ドメインのNS設定変更
5.そしてVirtualHostの設定
今回は試験目的だったため無料ドメインを利用しましたが、本番はSEOやドメインハックを考慮しながら、提供先の地域に合わせて最適なドメインを購入すると良いでしょう。
次回
>>Certbotを使ってSSL証明書を発行し、HTTP通信を暗号化しよう
社員の成長を導きながら、AIやビッグデータなどの最先端技術をプロジェクトに活用していくことが私たちのビジョンです。Avintonの充実した技術研修でスキルアップを図り、あなたのキャリア目標を一緒に達成しませんか?