LightsailでWordPressのSSL証明書の自動更新とCDN構築を行う

当ページのリンクには広告が含まれています。
  • URLをコピーしました!
生徒

WordPressの運用に使えるLightsailの機能を知りたいです

先生

LightsailのCDN機能やSSL証明書の自動更新を行う方法を説明します

目次

LightsailではSSL証明書の自動更新やCDNの作成を行うことができる

Lightsailではディストリビューションを作成することで、CDN(コンテンツ配信ネットワーク)を構築したりSSL証明書の自動更新を行うことができます。

ディストリビューションはLightsail内で利用できるAWSのCloudFrontです。

SSL証明書を作成するには独自ドメインを持っている必要があります。

この記事で分かること
  • LightsailだけでCDNを作成してSSL証明書の自動更新を行う方法

この記事の手順でSSL証明書の自動更新を設定すると、Lightsailのディストリビューションの料金(2022年7月時点では50GB未満の転送で2.50USD/月)が掛かります(最初の1年間は無料)。料金を抑えたい場合は、AWSの機能を使用しない以下の方法もあります。

Lightsailのインスタンスを作成

既にインスタンスを作成済みの場合は、読み飛ばしてください。

Lightsailのメインメニューで「インスタンス」を選択してインスタンスの作成をクリックします。

Lightsailのインスタンスを作成してサーバーを構築する手順は以下の記事で詳しく説明しています。

上の記事の中でも書いていますが、作成したインスタンスには必ず静的IPアドレスを割り当てる必要があります。

Lightsailでディストリビューションを作成

Lightsailのメインメニューで「ネットワーキング」を選択してディストリビューションを作成するをクリックします。

ディストリビューションの作成画面で、オリジンとしてコンテンツをキャッシュするインスタンスを選択します。

「利用可能なオリジンがありません」と表示される場合

オリジンのリストに「利用可能なオリジンがありません」と表示されて何も選択できない場合は、以下の手順でリージョンを変更します。

リストをクリックして「バージニア」からLightsainのインスタンスのあるリージョンに変更します。

WordPress用に用意されているプリセットを使用する

選択したインスタンスが、WordPressのインスタンスの場合、WordPress用に用意されているプリセットを使用するか聞かれるのではい、選択しますをクリックします。

プリセットを使用せずに、自分ですべての設定を行うこともできますが、ほとんどの場合予めWordPress向けに作成されているプリセットを利用するので問題ありません。

WordPress用のプリセットを使用しない場合

WordPress用のプリセットを使用したくない場合は、他のプリセットを使用するか「カスタム設定」を選択して自身で設定していくことになりますが、その場合の説明はここでは省略します。

ディストリビューションの設定は、CloudFrontの設定の簡易版のような内容になっています。

作成するディストリビューションの名前を入力してディストリビューションを作成するをクリックします。

ディストリビューションが作成されます。作成直後はステータス進行中...となっていてまだ使用できないので、しばらく待ちます。(数分で完了することが多いです。)

「ステータス」が有効になったら、作成完了で使用できます。

ディストリビューションでSSL証明書を作成する

次にSSLの証明書を作成します。ディストリビューションのカスタムドメインを選択して「+証明書を作成」をクリックします。

証明書作成画面に以下の内容を入力して「作成」をクリックします。

項目説明
プライマリドメイン所有している独自ドメイン。
証明書の名前分かりやすい名前を付けておきます。
代替ドメインおよびサブドメインwww.付きのドメインやSSL通信にしたいサブドメインを列記します。

証明書は検証状態で作成されて、ドメインを所有していることを検証するためのDNSレコードが表示されます。

SSL証明書の検証用DNSレコードをDNSに登録

作成した証明書のDNSレコードドメインのDNS設定に登録します。

以下はLightsailでDNS管理を行う場合の手順です。

DNSゾーンの作成

Lightsailのメインメニューで「ネットワーキング」を選択してDNSゾーンの作成をクリックします。

「登録済みドメインの入力」に所有している独自ドメインを入力してDNSゾーンの作成をクリックします。

作成したDNSレコードのネームサーバーの内容をメモしておきます。

DNSレコードを登録

DNSゾーンの「詳細」画面でレコードの追加をクリックします。

CNAMEのレコードを選択して、「サブドメイン」「マップ先」欄に証明書検証用のDNSレコードの内容を入力して、レコードを作成します。

項目説明
レコードの種類CNAMEのレコードを選択します。
サブドメイン検証用レコードの名前のサブドメイン部分を入力します。
マップ先検証用レコードの値を末尾のピリオドは除いて入力します。
完了ボタンクリックすると入力内容を確定します。

検証が完了するまでしばらく待つ必要があります。証明書が検証されると証明書の「ステータス」有効になります。

カスタムドメインを「有効」に切り替えます。

切り替えが反映されるまで、しばらく間進行中...の状態になります。

カスタムドメインが有効になっていますがONになったことを確認します。

ディストリビューションのリンクをクリックしてオリジンに設定したサイトが表示されることを確認します。

ブラウザのURL欄が鍵マークになっていて証明書が有効になっていることを確認します。

ディストリビューションのドメインをDNSレコードに登録する

独自ドメインのDNSレコードにディストリビューションを設定します。

この記事では、LightsailのDNSゾーンに登録する手順で説明します。

DNSレコードの解決先にディストリビューションを設定

DNSレコードの解決先に、作成したディストリビューションをリストから選択します。

ディストリビューションのドメインのDNSへの登録はCNAMEレコードを登録しますが、CNAMEレコードはルートドメインは指定できない仕様のため、お名前.comなどでは独自ドメインのルート直下をディストリビューションに割り当てることはできません。AWSのRoute53やLightsailでは独自の拡張機能で、Aレコード(通常はIPアドレスを割り当て)にディストリビューションを割り当てることで、独自ドメインのルートを割り当てることができます。

これで独自ドメインでブラウザからhttpsで接続できます。

今の状態だとまだ、URLにwp-adminを追加して管理ページを表示した時に、CSSが適用されずに表示されてしまうので修正します。

WordPress 設定ファイル (wp-config.php) を編集

LightsailにSSHで接続します。

以下のコマンドを入力して、wp-config.phpを開きます。

sudo vi /opt/bitnami/wordpress/wp-config.php

開いたファイル内を下に移動して以下の場所を探します。

ディストリビューションからの接続では常にhttps接続となるように修正します。

define( 'WP_HOME', 'http://' . $_SERVER['HTTP_HOST'] . '/' );
define( 'WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST'] . '/' );
define( 'WP_AUTO_UPDATE_CORE', 'minor' );

の箇所を以下の内容に書き換えます。

define( 'WP_HOME', 'https://' . $_SERVER['HTTP_HOST'] . '/' );
define( 'WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST'] . '/' );
define( 'WP_AUTO_UPDATE_CORE', 'minor' );
if (isset($_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO'])
&& $_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
}

wp-config.phpファイルの内容を反映するため、以下のコマンドを入力してApacheのサービスを再起動します。

sudo /opt/bitnami/ctlscript.sh restart apache

ブラウザで管理画面を再度表示すると、CSSが適用されて正しく表示されます。

以上で手順はすべて完了です。

よかったらシェアしてね!
  • URLをコピーしました!
目次