目次
個人で利用しているブログであれば、バックアップをとった後、管理画面からポチポチとクリックしてアップデートすればよいと思います。共用サーバーで動かしていて特殊なカスタマイズなどしていなければエラーになることは無いでしょう。
しかし、それなりにアクセスがあって、アップデート作業中にトラブルが生じてアクセスできなくなると困るという状況もあります。そういう場合のために、共用サーバーでも出来るアップデート方法を紹介します。
ただし、アップデート中、管理画面での記事の作成やコメントの投稿などのコンテンツの更新が行われないという前提です。
概要を図にすると次のようになります。
アップデートの作業中は下位層に置いたバックアップのファイル+データベースが公開されます。そして本番の環境をそのままアップデートしていきます。
作業の流れは次のようになります。
管理画面へのアクセスを制限
作業者以外が管理画面にアクセスするかもしれないならIPによるアクセス制限をしておきます。メンテナンス中のページ maintenance.html を用意し、次の .htaccess と一緒に wp-admin にアップロードします。.htaccessはwp-adminには無いはずですが、もしあれば編集してください。 AAA.AAA.AAA.AAA にはもちろん自分の接続元IPを入れます。
ErrorDocument 503 /wp-admin/maintenance.html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# 指定IP以外は メンテナンス画面
RewriteCond %{REMOTE_ADDR} !^AAA\.AAA\.AAA\.AAA$
RewriteCond %{REQUEST_URI} !=/wp-admin/maintenance.html
RewriteRule ^(.*)$ - [R=503,L]
</IfModule>
コメントが結構あるようなサイトなら、サイト上にメッセージを掲載しておくなりテンプレートを弄って投稿出来なくしておくなどしてもよいと思います。まあそれ位のサイトなら検証環境やより慎重な手順があるでしょう。
ファイル、データベースのバックアップ
ファイル、データベースのバックアップを行います。
アップデート作業中の表示用環境
アップデート作業中の表示用環境 をバックアップから作ります。
バックアップのディレクトリを本番環境のディレクトリ以下に配置します。また、データを入れるデータベースを作り、バックアップのデータをインサートします。もちろんインサート先は本番環境とは別のデータベースです。ここは間違えないよう注意が必要です。
また、wp-config.php でこの環境のデータベースを参照するようにします。これも注意が必要です。
IPによる振り分け
次のような内容を本番環境の blog ディレクトリ内の .htacessに記述します。RewriteEngine や RewriteBase の次くらいです。AAA.AAA.AAA.AAA には自分の接続元IPを入れます。
# 指定IP以外は下の階層を表示。
RewriteCond %{REMOTE_ADDR} !^AAA\.AAA\.AAA\.AAA$
RewriteRule ^(.*)$ /blog-backup/$1 [L]
作業環境確認
スマホ等でLANのWifiを使わずモバイルネットワークで アップデート作業中の表示用環境 がちゃんと表示されているか確認します。
確認のために、本番環境かアップデート作業中の表示用環境 のタイトルを少し変えたり、テンプレートの一部を変えたりしてみます。
ここでバックアップからちゃんと復元が可能かどうかも確認できます。
アップデート実行
表示の振り分けがちゃんと出来ていていずれも正常に動いていると確信できたら本番環境のアップデートを行います。プラグインも全て無効にして本体のアップデート後に有効化しプラグイン自体もアップデートします。
アップデート後
アップデート後は、
- 動作確認
- ドキュメントルートの.htaccessのIPによる振り分けを消す
- 管理画面のアクセス制限を解除
最後に
検証環境用に別のドメイン・サブドメインを用意する必要もなく、問題なければそのまま公開できます。トラブルが起きてもサイトはちゃんと表示されているので多少の余裕はできる点はよいのではないでしょうか。
ただ、.htaccessは記述の間違いがあるとすぐエラー画面になりますし、ワードプレスがファイルを更新することもあるので注意が必要です。
なお、さくらインターネットならSnapUpというバックアップ&ステージング機能があるのでそれを使ったほうがはるかに楽です。
SnapUpは、ワードプレスをデータベースごとステージング(検証)環境にコピーし、そこでアップデート、動作確認を行った後本番環境に戻すことができるという便利な機能です。