ネットワークエンジニアが学ぶAWS

ネットワーク構築のインフラSEがAWSについて学んでいく過程を記事にしていきます!

【サクサク動作】WordPressをS3で静的webホスティング

約 13 分
【サクサク動作】WordPressをS3で静的webホスティング

こんにちは、カワタンです。

「自分のメディアを持ちたい」
こう思ってWordPressでwebサイトを作っている方は最近凄く増えたなあと思います。ただ、WordPressは記事数が増えるごとにサイトが重くなっていくところが難点ですよね(^^;
これはサーバで処理する量が増えていることが主な原因ですが、AWSを使用することでwebサイトの表示速度を飛躍的に上げる方法があります。そこで今回は、「AWSを使ってより快適に見れるWordPressのサイト作成」をテーマにして話をしていきます。

AWSの中でも。ストレージサービスのAmazon S3を使用します。S3は、保存しているデータをインターネット上に公開することができる特徴を持っています。中でも、「webサイトホスティング」機能を使うことでwebサイトをインターネット上に公開することができます(webサイトホスティングについて詳しく知りたい方はこちらを参照してください)。それでは実際にS3を使ってWordPressのwebサイトを公開する手順を説明していきます。
※WordPressのwebサイトをすでに持っていることを前提にしています。

使用するものは、「Amazon S3」とWordPressのプラグインである「static press」を使用します。完成時のイメージ図を下記に出しています。

WorePressのS3ウェブサイトホスティング(イメージ図)

webサイトの更新自体は元々使っていたwebサイト運用サーバを使って行いますが、インターネットに公開する時にAmazon S3を使用します。これにより、webサイトの維持コストを大きく下げることができる上に、アクセス急増時にもwebサイトがダウンすることなく表示し続けることができます

① S3バケットの作成
② S3バケット操作用のIAMユーザ作成
③ StaticPress/StaticPress S3インストール
④ WordPressのwebサイトを静的変換
⑤ 元々のWordPress運用サーバへの認証設定

S3バケットの作成

まずは、webサイト公開用のバケットを作成します。こちらの記事で詳細な手順を説明していますので、参考にS3バケットを作成してください。

作成したバケットのパブリックアクセス許可を変更します。[編集]をクリックして、下記の通りにアクセス許可を変更してから[保存]をクリックしてください。

入力項目
・このバケットのパブリックアクセスコントロールリスト(ACL)を管理する
  新規のパブリックACLと ~ :□
  パブリックACLを通じて ~ :☑ 
・このバケットのパブリックバケットポリシーを管理する
  新規のパブリックバケットポリシーを ~ :☑
  バケットにパブリックポリシーがある ~ :□

S3バケットポリシー(パブリックアクセス変更)S3バケットポリシー(オブジェクトアップ許可)『編集の確認』画面に移るので、「確認」と入力してから[確認]をクリックしてください。
S3バケットポリシー(変更許可)下記の通りにパブリックアクセス設定が変更されていることを確認します。
S3バケットポリシー(変更確認)

S3バケット操作用のIAMユーザ作成

先ほど作成したS3バケットにEC2からファイルをアップロードするために、AWSのIAMユーザを利用します。(IAMユーザって何?という方はこちらを参照してください。)

IAMユーザを介したS3バケットへのファイルアップロード

S3バケットは、バケットを作成したIAMユーザ以外はファイルをアップロードすることができない設定になっています。
そのため、アップロードする権限を持っているIAMユーザを作成してWordPressを管理しているサーバからファイルをアップロードできる状態にします。
まずは、IAMマネジメントコンソールにアクセスします。

AWSマネジメントコンソール(IAMメニューの選択)

『IAMマネジメントコンソール』に移動するので、左側に表示されるメニューの中から、[ユーザ]タブに移動して[ユーザを追加] をクリックします。IAMダッシュボード画面からIAMユーザ管理画面へ移動IAMユーザの追加操作『ユーザー詳細の設定』ページに移動するので、下記の通りに入力して[次のステップ:アクセス権限]をクリックします。

入力項目
・ユーザ名:(自分で決めたユーザ名を入力してください)
・AWS マネジメントコンソールへのアクセス: ☑
・カスタムパスワード: (自分で決めたパスワードを入力してください)
・パスワードのリセットが必要:□(デフォルトはチェックが入っているのでオフに)

IAMユーザ作成(S3バケット操作ユーザ作成画面)

『アクセス許可の設定』画面に移るので、[既存のポリシーを直接アタッチ]をクリックして表示される[ポリシーの作成]をクリックします。IAMユーザ作成(S3バケット操作ユーザ:アクセス許可の設定)
『ポリシーの作成』画面に移るので、[JSON]タブをクリックして表示される入力画面に下記の通りに入力して[ポリシーの確認]をクリックします。
※「myBucketName」の部分を設定したバケット名に変換してください。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": ["s3:ListBucket"],
            "Resource": ["arn:aws:s3:::<span style="font-size: 12pt;"><span class="b"><span class="red">myBucketName</span></span></span>"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject"
            ],
            "Resource": ["arn:aws:s3:::<span style="font-size: 12pt;"><span class="b"><span class="red">myBucketName</span></span></span>/*"]
        }
    ]
}

IAMユーザ作成(S3バケット操作ユーザ:ポリシー作成)

『ポリシーの確認』画面に移るので、下記の通りに入力して[ポリシーの作成]をクリックします。

入力項目
・名前:(自分で決めたポリシー名を入力してください)
・概要:(設定したポリシーがJSON形式で表示されることを確認)
IAMポリシー作成(S3バケット操作用:確認画面)『ユーザーを追加』画面に戻って、自分が作成したポリシーを検索して☑を付け、[次のステップ:タグ]をクリックします。
IAMユーザ作成(S3バケット操作ユーザ:ポリシーの選択)
『タグの追加(オプション)』画面に移るので、何も入力せずに[次のステップ:確認] をクリックします。

IAMユーザ作成画面(タグ設定画面)

『確認』画面に移るので、内容を再度確認して[ユーザの作成] をクリックします。

IAMユーザ作成(確認画面)

ユーザの作成に成功すると、『成功』と表示される画面に移ります。[.csvのダウンロード] をクリックして、自分自身のPCなど安全な場所にファイルを保存しておきます。
※作成したユーザに関する認証情報は、この画面でしか確認することができません。必ずcsvファイルはダウンロードして保存しておきましょう。IAMユーザ作成(認証情報確認)

次に作成したIAMユーザのアクセスキーを作成します。作成したユーザを選択して『認証情報』タブから[アクセスキーの作成]をクリックします。

IAMユーザ一覧IAMユーザ選択(アクセスキー作成)『アクセスキーの作成』画面に移るので、[.csvファイルのダウンロード]をクリックして自分のPCに保存しておきます。
アクセスキー確認画面
続いて、WordPressを静的webサイトに変換してS3にサイトの情報をアップロードするための設定を行います。まずはWordPressにログインします。Wordpressログイン画面

StaticPress/StaticPress S3インストール

以下のプラグインをそれぞれインストールしてます。

StaticPress      …WordPressを静的webサイトに変更するため。
StaticPress S3 …静的webサイトに変換したWordPressのファイルをS3にアップロードするため。

まずは、StaticPressからインストールしていきます。『プラグイン』タブを選択して「新規追加」をクリックします。wordpressプラグイン新規追加画面

検索窓に「StaticPress」と入力して下記のプラグインをインストールします。

static pressプラグイン検索 static pressインストール

続いてStaticPress S3をインストールします。こちらはプラグインの一覧に表示されないので、下記のサイトからZIPファイルをダウンロードしてください。

https://github.com/megumiteam/staticpress-s3

static press S3のZIPファイルダウンロード続けてダウンロードしたZIPファイルをWordPressにアップロードします。『プラグインの新規追加』画面から[プラグインのアップロード]をクリックしてダウンロードしたZIPファイルをインストールします。プラグインの新規アップロード

追加した2つのプラグインを有効にします。[インストール済みプラグイン]のタブをクリックして、2つのプラグイン部分にある[有効化]をクリックします、
statci preesの有効化有効化が完了すると、タブに『static press』が追加されることを確認します。

static pressタブ追加

WordPressのwebサイトを静的変換

StatiicPressではファイルを保存するS3バケットのURLを指定する必要があります。作成したバケットのwebホスティング用URLを確認します。
S3マネジメントコンソールから[作成したバケット]をクリックします。

『概要』画面に移るので、[プロパティ]タブをクリックして[バケットホスティング]をクリックします。
S3バケット:webホスティング有効化画面『Static website hosting』画面に移るので、「エンドポイント」に表示されるURLをコピーします。
S3バケット:webホスティング詳細設定画面
『WordPressのダッシュボード』画面に戻り、[StaticPress]タブをクリックして下記の通りに入力後に一番下の[変更を保存]をクリックします。

StaticPress 設定
・静的サイトURL:(先ほどコピーしたURLを貼り付け)
・出力先ディレクトリ(ドキュメントルート): (WordPressサーバ内で、作成する静的ファイルを保存する場所を指定)

StaticPress S3 Option
・AWS Access Key: (IAMユーザのアクセスキー作成時にダウンロードした「accessKeys .csv」を参照して入力)

・AWS Secret Key: (IAMユーザのアクセスキー作成時にダウンロードした「accessKeys .csv」を参照して入力)

static press初期設定
『Done!』と表示された後に、一番下に「S3 Bucket」が追加されるので、作成したバケットを選択して[変更を保存]をクリックします。

static press S3バケット指定

続けて、静的変換したwebサイトが正しく表示されるようにパーリンク設定を行います。パーマリンクとは、投稿されたそれぞれの記事のURLのことです。この設定を行わないと、ホスティングした後のサイトが正しく表示されません。
[設定]-[パーマリンク設定]タブをクリックします。パーマリンクの設定へ移動『パーマリンク設定』画面に移るので、[カスタム構造]を選択して下記の通りに入力します。

共通設定
カスタム構造 http://(独自のURL)/%postname%.html

続けてwordpressのサーバ側でも、上記のパーマリンク設定に応じた変更を行います。wordpressが動作しているサーバにsshでアクセスして、下記のファイルに関して設定変更を行います。

/<サーバ毎のルート>/apache2/conf/httpd.conf
/<サーバ毎のルート>/ wordpress/htdocs/.htaccess

・httpd.conf
下記の部分の先頭に「#」がついていないことを確認します。

LoadModule rewrite_module modules/mod_rewrite.so

ファイルの最後に下記を追記します。
※[wordpressフォルダの場所]は、自分のサーバでwordpressフォルダがある場所を入力してください。
例:/var/www/html/wordpress

&lt;Directory "<strong><span class="red">wordpressフォルダの場所</span></strong>"&gt;
    AllowOverride All
&lt;/Directory&gt;

・.htaccess
内容の先頭に下記があることを確認します。

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

 
# END WordPress

以上でパーマリンク設定は終了です。続けていよいよwordpressを静的webサイトにしてS3にアップロードしていきます。
[StaticPress]のタブをクリックして[再構築]をクリックします。
Static Press画面へ移動Static Pressで再構築を実行

変換がスタートすると、下記のようにhtmlファイルが生成されてwordpressのサーバとS3バケットの両方に保存されます。
Static Press再構築の成功時

「完了」と表示され後に、S3バケットのエンドポイントURLにアクセスします。
静的webサイト表示画面
従来通りのweb画面が表示されたら変換完了です。

元々のWordPress運用サーバへの認証設定

wordpressを静的webサイトにして、S3バケットで公開することはできました。しかし、今のままだと「S3バケットで公開している静的webサイト」と「元々あったwordpressのwebサイト」が同じ内容でインターネット上に存在してしまいます。これだと、googleが同じwebサイトが2つあるように認識してしまいます。それを防ぐために、元々のwordpressのwebサイトは特定のユーザしか見れないようにパスワードロックをかけます。
『プラグイン』タブを選択して「新規追加」をクリックします。
wordpressプラグイン新規追加画面検索窓に「WP basic auth」と入力して下記のプラグインの[今すぐインストール]をクリックします。
WP BASIC Authプラグインインストール続いて、[インストール済みプラグイン]をクリックして下記の通りに設定を変更します。
変更項目
StaticPress        :停止
StaticPress S3   :停止
WP BASIC Auth:有効化

プラグインの停止&有効化&続いて、[プラグイン編集]タブをクリックします。
『編集するプラグインを選択』のプルダウンから「StaticPress」を選んで[選択]をクリックします。表示された画面の『プラグインファイル』の[includes – class-static_press_admin.php]をクリックします。そこで、下記のように変更します。
変更後
※ 「XXXXXXXXXXXXXXXX」にはwordpressのログインで利用していたuser名とパスワードをエンコードしたものを入力します。
下記のwebサイトで「wordpressのログインID」:「wordpressのパスワード」を入力して表示されるコードに置き換えてください。
  https://www.tools4noobs.com/online_php_functions/base64_encode/

変更前

	static public function basic_auth(){
		return get_option(self::OPTION_STATIC_BASIC, false);
	}

変更後

	static public function basic_auth(){
		//return get_option(self::OPTION_STATIC_BASIC, false);
		 return "<strong><span class="red">XXXXXXXXXXXXXXXX</span></strong>";
	}

StaticPressのプラグイン編集

編集後に「StaticPress」「StaticPress S3」を再度有効化して[再構築]を行います。
statci preesの有効化Static Press画面へ移動Static Pressで再構築を実行
元々のWordPressのwebサイトを確認すると、下記の通り認証を求められるようになるので一般公開されていない状態になっています。同じwebサイトが2つインターネットに公開されている状態を防ぐことができます
WP BASIC Authで認証されたwebサイトへのアクセスURL

まとめ

WordPressを静的webサイトとして公開する方法をご紹介しました。Amazon S3を使ってwebサイトを公開することで、webサイトの維持コストを大きく下げることができる上に、アクセス急増の場面でも素早く対応してくれます。一度試してみてください。

エンジニア向けの資産形成情報を発信中!

将来にお金を残していくための情報発信をしています。友だち登録をしてくださった方には、資産形成の記事を閲覧するためのパスワードもお教えてしてますので、気になる方は下記から登録お願いします(^^)
AWSの資格を取りたい方向けに僕が合格した過去問レポートもプレゼントしています!

友だち追加

About The Author

カワタン
3年半インフラエンジニアとしてネットワーク運用/構築に携わってきましたカワタンです^_^AWSのことを知ってから、このサービスが大好きになって現在猛勉強中です(*^^*)
AWS専門家になって月収150万目指してます!!!
Follow :

Leave A Reply

*
*
* (公開されません)