XServer のスタンダートプランで契約していますが、契約後、数年間放置していたため、ブログに関する知識はほぼ揮発してしまいました。
時間に余裕ができたため、1から勉強し直し、セットアップした内容を備忘録として残すことにします。
当初考えていた構成は、
・検証環境:自分のパソコン
・本番環境:レンタルサーバ
でしたが、サブドメインを作成し、そこに WordPress をインストールすることで検証環境として使えるとの情報が 「同一サーバー上に構築するWordPressのテスト環境の作り方」 に記載されていましたので、その記事を参考に環境を整備することにしました。
つまり、本番環境も検証環境も同じレンタルサーバ上に構築します。
例えば、本番環境のドメインが「xxxx.com」であれば、検証環境用にサブドメイン「subdomain.xxxx.com」を追加し、それぞれのサイトに WordPress をインストールします。(XServer の場合、サブドメインの追加と WordPress のインストールはサーバパネル(管理画面)から操作できます。)
本格的なサイトでは物理的に、
・テスト環境(設定変更や開発の動作を確認する環境)
・ステージング環境(本番と同等の環境)
・本番環境
などに分けるようですが、本サイトは個人のブログなので同一レンタルサーバ上に検証環境と本番環境を構築することにしました。検証環境はテストとステージングの環境を兼ねることとします。
同一サーバ上のため、サーバがクラッシュしたら全滅ですが、バックアップ/リカバリの仕組みは XServer から提供されているようなので、最悪の事態でもリカバリ可能と判断しました。
セットアップした内容を以降に示します。
本番/検証環境に WordPress がインストールされた状態からの作業内容です。
備忘録的に作業項目と補足事項を記載しているだけですので、細かな設定手順については触れていません。
基本設定
基本的な設定については、「初心者のためのブログ始め方講座」 を参考にさせていただきました。
テーマの変更について
当初、Luxeritas を採用していましたが、しばらく更新が停止されているようなので XServer も押している Cocoon に変更しました。Cocoon のダウンロード/インストールに関する情報はネット上にたくさんあるので、そちらをご参照ください。
Cocoon の設定については 「WordPressテーマCocoonの使い方とおすすめ初期設定」 を参考にさせていただきました。
コメント機能の設定
スパムコメント対策のため本番環境ではコメント機能を無効にしていますが、将来利用する可能性を考慮し、検証環境ではコメント機能を有効にしています。スパムコメント対策は 「初心者でも簡単!WordPressコメント機能の設定とスパム対策」 を参考にさせていただきました。
スパム対策のため「reCaptcha by BestWebSoft (*1)」をインストールしましたが、後からインストールした「XO Security (*2)」でもスパムコメントに対応できるためこちらを利用することにしました。機能がバッティングした場合の影響が不明のため、reCaptcha by BestWebSoft による コメントフォームの reCaptcha は無効化しました。
ただし、reCaptcha by BestWebSoft 自体はコメント以外のフォームでのスパム対策のために有効化しています。
*1 reCaptcha でフォームへのスパム登録を防ぐためのプラグイン。コメント以外にもログインやお問い合わせ等のフォームにも対応しています。
*2 セキュリティ対策用のプラグイン。
お問い合わせ機能の設定
お問い合わせフォームの作成はプラグイン「Contact Form 7」を使用しました。
設定については 「20分でできる!【WordPressブログ】お問い合わせフォームの作り方」 を参考にさせていただきました。
スパム登録への対応は、前述の reCaptcha by BestWebSoft で行っています。
セキュリティ対策
セキュリティ対策は XServer で利用可能な WAF (*1) と、前述の XO Security で行っています。
*1 Web Application Firewall : Webサイトへの攻撃を防ぐ仕組みです。
セキュリティ対策全般については 「ホームページのセキュリティ対策方法を初心者向けに解説」 を参考にさせていただきました。
XO Security の設定については 「【XO Security】WordPressのセキュリティを強化!設定方法を徹底解説」 を参考にさせていただきました。
XServer の WAF はサーバパネル(XServer の管理画面)の「WAFの設定」から設定できます。詳細につきましては、XServer のマニュアルをご参照ください。
XO Security ですが、「コメント機能の設定」でも記載しましたが、reCaptcha by BestWebSoft と機能が部分的に重複しているように思います。本環境では、重複している機能については XO Security を優先としました。そのため reCaptcha by BestWebSoft の以下の機能については無効化(チェックオフ)しています。
reCaptcha を有効化
□ ログインフォーム
□ コメントフォーム
※上記は念のための設定です。実際に機能がバッティングしているかどうかは確認していません。
ログインの設定について
設定作業に慎重さを欠いたため、危うくログインできなくなりかけましたので、自戒を込めて作業ログを記載しておきます。
XO Security の 「ログイン」タブでの設定でログインを制限できます。
設定項目に”CAPTCHA”があり、ここで”ひらがな”を選択すると、ログインフォームに表示されるランダムなひらがな文字をログイン時に入力することが必須となります。
ご想像どおりですが、この設定後、確認のためログインを試したところ、入力したひらがながはじかれログインできなくなりました。
その後、”試行回数制限”に指定した回数、ログインに失敗し、ログインがブロックされました。(*2)(*3)
しばらくしてから再度ログインを試したところ、なぜかログインできるようになりました。原因は不明ですが、設定からシステムに反映されるまでに時間がかかったのかもしれません。
*2 試したことはありませんが、契約サーバのホームディレクトリにFTPで接続し、wp-content/plugins の下にある、プラグイン名をリネームすることでプラグインを強制停止できるらしいです。
*3 XServer の場合、サーバーパネル(Xserver の管理画面)の「WordPress – WordPressリカバリ」メニューからブロック解除が可能です。
ログインの設定変更時には手順に配慮が必要です。
- WordPress の管理画面はログインしたままの状態にしておき、ブラウザの別タブからログインを試行する。
- 最初のログインが成功するまでは、”試行回数制限”は多めに、”ブロック時の応答遅延”は短めにしておく。
バックアップ/リカバリの方針
XServer では 14日分のフルバックアップが自動的に取得されています。(おそらく夜間バックアップ)
バックアップデータは、契約サーバのホームディレクトリ配下のデータと、MySQLのデータベースに分かれています。
データベースのバックアップは WordPress のインストール単位ですが、ホームディレクトリ配下のデータについてはまとめて取得されています。
例えば本環境では、ドメイン(本番環境用)とサブドメイン(検証環境用)を設定し、それぞれのサイト用の WordPress を同じホームディレクトリ配下にインストールしていますが、1日分のバックアップデータは、ホームディレクトリ配下のデータが1つと、MySQLのデータベースが2つになります。
XServer による自動バックアップデータは 14日分ですが、マルウェアが長期間潜伏している可能性を考慮し、バックアップデータをより長期に保存したい場合があるかと思います。
長期保存したい場合は、自動バックアップデータを、各自で別環境(個人のパソコン等)に複製する必要がありますが、XServer の自動バックアップデータは、そのままでは利用者からは直接参照できません。(*1)
*1 自動バックアップからのリカバリはサーバパネル(XServer の管理画面)を操作し、14日以内の日付を選択することで実施可能です。後に述べる別環境にダウンロードしたバックアップデータを使用してのリカバリはサーバパネルからは行えないようです。(FTP等で個別にファイルをアップロードする必要があるようです。)
バックアップを複製するには以下のような手続きが必要となります。
- サーバパネル(XServer の管理画面)の操作で、自動バックアップから指定日(過去 14日分からの任意の日付。複数日付の指定は不可)のデータを契約サーバのホームディレクトリ配下に複製する。
- FTP等でホームディレクトリに接続し、複製されたバックアップデータを別環境(個人のパソコン等)にダウンロードする。
本環境では現時点(2025/4)でバックアップサイズが計600MB程ですが、ホームディレクトリ配下へのバックアップデータの複製に、なんだかんだで1時間程度かかります。これを毎日はしんどいので、バックアップ用のプラグイン「UpdraftPlus(*2)」をインストールし、バックアップポリシーを以下のとおりとしました。
- XServer の自動バックアップデータからのダウンロードは週次で
- UpdraftPlus でのバックアップは都度手動で
*2 バックアップ対象はコンテンツ等一部のデータのみ(WordPress のコンフィグ等は対象外)らしいですが、バックアップ時間が短く(数分以内)、手軽にバックアップ/リストア、バックアップデータのダウンロード/アップロードを行えます。ただしプラグインなので WordPress 毎(本環境では本番と検証)にインストールし、それぞれでバックアップを取得する必要があります。定期バックアップのスケジュール設定も可能なようですが、無料版ではスケジュールの日時を自由に指定できないようです。
投稿
投稿の作成にはブロックエディタを使用される方が多いと思いますが、使い方についてはインターネットでいくらでも検索できるのでそちらをご参照ください。
検証環境で作成した投稿を本番環境に反映する方法について
インターネットではプラグインを使用した方法がいろいろ紹介されているようですが、なるべく余計なプラグインは入れたくないため、本環境ではHTML文を直接コピペしています。
具体的には、投稿編集時のエディタをビジュアルエディタからコードエディタ(*1)に変更し、検証環境から本番環境へHTML文を丸ごとコピペしています。
コピペの際は注意が必要で、HTML文に検証環境用のリンクが含まれている場合は、コピー後、本番環境用に書き換える必要があります。
*1 エディタの変更(ビジュアルエディタ⇔コードエディタ)は右上のメニューアイコン(3つの点が縦に並ぶアイコン。三点リーダー、ケバブメニューなどと呼ばれているようです)から、もしくは Ctrl+Shift+Alt+M で行えます。
アップロードファイルタイプの制限解除
デフォルトでは「メディアライブラリ」にアップロード可能なファイルはセキュリティ上の観点から .jpg 等の画像形式に制限されています。その他のタイプのファイルアップロードは、コンフィグの書き換えやプラグインで可能となるようです。
本環境では、wp-config.php (*2)の書き換えで一時的に制限を解除し、必要なファイルをアップロードしています。アップロード後は安全のため制限を元に戻しています。
1. wp-config.php に制限を解除するコードを追加
/* カスタム値は、この行と「編集が必要なのはここまでです」の行の間に追加してください。 */
/* すべてのファイルをアップロード可能にする */
define('ALLOW_UNFILTERED_UPLOADS', true); <<追加コード
/* 編集が必要なのはここまでです ! WordPress でのパブリッシングをお楽しみください。 */
2. WordPress の管理画面で「メディアライブラリ」に必要なファイルをアップロード
3. 制限を解除するコードをコメント化する
/* カスタム値は、この行と「編集が必要なのはここまでです」の行の間に追加してください。 */
/* すべてのファイルをアップロード可能にする */
/* define('ALLOW_UNFILTERED_UPLOADS', true); */ <<コメント化
/* 編集が必要なのはここまでです ! WordPress でのパブリッシングをお楽しみください。 */
*2 wp-config.php は WordPress インストール先のフォルダ直下に存在します。設定方法等については、「WordPressでJavascript(.js)、CSS(.css)、HTMLをアップロード可能にする方法」 を参考にさせていただきました。
アップロードファイルのフォルダ分け
デフォルトでは「メディアライブラリ」にアップロードしたファイルは日付のフォルダに格納されます。
例えば、2025年3月にファイルをアップロードすると、以下のようなフォルダ構成になります。
wp-content
└ uploads
└ 2025
└ 03
├ <アップロードしたファイル>
: :
このままだと何れファイルの管理に支障がでそうなので、カテゴリと同じフォルダ構成を作成し、投稿別にファイルを整理することにしました。例えば以下のような構成です。
wp-content
└ uploads
└ Cyber <<カテゴリ
└ linux <<カテゴリ
└ udp-receive-errors <<投稿のスラッグ
├ <アップロードしたファイル>
: :
このようなフォルダ管理を行うことができるプラグイン「Media Library Folders」をインストールしました。
先に「FileBird」というプラグインについても検討しました。このプラグインで設定したフォルダ構成は WordPress のメディアライブラリで確認すると、見た目は設定したとおりの構成ですが、FTPで確認するとアップロードファイルは日付フォルダに格納されていました。これはファイルやフォルダーを移動しても、リンク切れにならないように仮想フォルダを作成しているため、とのことです。(このプラグインでファイルやフォルダーを移動してもパーマリンクは変更されません)
好みによりますが、本環境はなるべくシンプルにしたいので、Media Library Folders を使用することにしました。Media Library Folders ではファイルやフォルダーの移動は物理的に移動されます。
設定および使用方法については 「WordPressのファイルをメディアライブラリフォルダに整理する方法」 を参考にさせていただきました。