記事の投稿予約時間を過ぎても公開されないと思ったら、サーバーの時計が遅れてた

注意: この記事は1年以上前に掲載されたものです。情報が古い場合がありますのでお気を付け下さい。

UpdraftPlusで簡単にデータをバックアップの記事公開の際に、19:30になっても公開されず ((当ブログでは予約投稿している記事は通常19:30に公開するようにしている)) に「予約済み」の状態のまま、一旦20:00に設定して20:00に待っても「予約済み」のままになっている上に、その時間帯に公開予定時間を19:30に戻したら公開状態になっているという謎の現象に遭遇した。ここでは今回わかった原因と対処法について書いてみたい。

今回記事の公開までに試した方法

一旦ブログの公開予定時間を変更する(失敗)

まずは、一旦、当該記事の公開予定時間を20:00に設定した上で、20:00になるまで待機した。これは失敗に終わった。

WordPressのタイムゾーンを確認する(失敗)

次に、『WordPressで予約投稿に失敗する。「予約済み」からステータスが変わらない時 – 株式会社アドベン』を参考にタイムゾーンを確認した。当然ながら当ブログではタイムゾーンはしっかりと「東京」に設定されていた。当然ながら日本時間をベースとするのであれば正しい状態であり、この方法では解決しなかった。

再起動する(失敗)

次の対策法として、サーバーにSSH接続して、「sudo reboot」コマンドをかけて再起動を行った。これも特に効果はなかった。

投稿予定時間を本来予定したものに戻した(公開に成功、根本解決にもつながった)

最後に20:10頃になった状態で当該記事の公開予定時間を19:30に設定して更新した。すると今度は「公開済み」状態になった。

ここで「予約済み」状態のままになっていた原因がサーバー時間に問題があるのではという推測に至った。そこでサーバーの時刻を確認する作業に移った。

サーバーの時刻を確認・修正する

一旦、サーバーの時刻を確認する

一旦、SSHでサーバーの時間を確認する。これは「date」コマンドで確認することができる。

確認したところ、サーバー時間がおよそ30〜35分ほど遅れていたことが確認できた。

この対策として、サーバーの時刻合わせを行うようにした。

NTPのインストール・設定・時刻合わせ

まず、現在使っているサーバーではNTPがインストールされていなかったことを確認したため、まずはNTPをインストールした。Debian GNU/Linuxではパッケージのインストールにaptを使うため、まずは「aptitude install ntp」コマンドを入れた。これでNTPのインストールは完了した。

次に、/etc/ntp.confの編集を行う。当方の場合は、以下のように編集をした。

(略)

# You do need to talk to an NTP server or two (or three).
# 以下を追加(ntp1.sakura.ad.jpはさくらVPSを使っているため)
server ntp1.sakura.ad.jp
server ntp.nict.jp
server ntp.jst.mfeed.ad.jp

(略)

# pool.ntp.org maps to about 1000 low-stratum NTP servers.  Your server will
# pick a different set every time it starts up.  Please consider joining the
# pool: <http://www.pool.ntp.org/join.html>
# ↓以下をコメントアウト
#server 0.debian.pool.ntp.org iburst
#server 1.debian.pool.ntp.org iburst
#server 2.debian.pool.ntp.org iburst
#server 3.debian.pool.ntp.org iburst

(略)

その後、「sudo service ntp restart」でNTPを再起動して、しばらく経てばdateコマンドでは正しい時刻に戻った。

しかしながら、ハードウェアクロックはずれた時間のままであったため、dateで正しい時刻になったことを確認した上で「sudo hwclock -w」コマンドを入れて時刻合わせを行った。

これで問題は解決しただろう。

最後に

今回、投稿予約を行った記事が指定の時刻になっても公開しないという問題に直面して気づき、いろいろ確認と対応を行って、最終的にはサーバーの時計が30分も遅れていたことが根本的な原因だったことがわかった。

今回は共有サーバーなどを使ってWordPressを利用しているのであれば通常は発生することのないはずのことだが、VPSあるいは専用サーバーを使っている場合は設定が適切でないと同様の現象が発生しうることであるため、もし記事の予約投稿を行って、指定された時刻になっても公開されていないという問題に直面したとき、サーバーの時刻を確認すると良いだろう。

タイトルとURLをコピーしました