このブログはコンテンツマネージメントシステム【Contents Management System:CMS】、通称CMSと呼ばれるシステムによって管理されています。
CMSにはいくつか種類があるのですが、私は「Movable Type」(以下「MT」)を選びました。
※2018年現在は「WordPress」で運用しております。
このMTの記事投稿機能には「日時指定投稿」ができる項目があるのですが、
これを実行するにはサーバー上でcron設定をする必要があります。
cron設定をすることで指定した時間(時刻)でブログの再構築を実行し、その際に記事を投稿させます。
今回の記事では、MTでブログ記事を日時指定投稿する方法を紹介します。
(※さくらインターネットでの解説となります)
この記事を読む前に
このブログはレンタルサーバー内にデータが置いてあります。
契約したサーバー(ホスティング)会社は「さくらインターネット」です。
サービスが豊富で価格も安く、サーバーも安定していると評判でしたのでここと契約しました。
契約したサーバー会社によって設定方法が異なる
今回必要となる「cron(クロン)」ですが、サーバー会社によって設定法が異なります。
cron設定ができないサーバーもあります。
なので、この記事を読む前にご自分が契約しているサーバー会社を確認し、cron設定可能かどうか確認してみてください。
この記事では「さくらインターネット」での方法を紹介していきます。(さくらインターネットはcron設定可能)
cron(クロン)ってなに?
cron(crontab)とは、UNIX系のOSで搭載されている機能です。
コマンドを指定した時間(時刻や曜日、日にち)に実行するための機能です。
要はスケジュール管理をするコマンドですね。Windowsで言う「タスク」に当たる機能です。
レンタルサーバーは一般的にUNIX系のOS(Linuxが多い)を使用しているのでこのcronが利用できます。
さくらインターネットでcron設定をする
▲さくらインターネットのサーバーコントロールパネルへログインします。
ドメイン名やパスワードはサーバー契約時に設定されたものを入力してください。
▲サーバーコントロールパネルへログインしたら、左のメニュー「アプリケーションの設定」にある「CRONの設定」を選択します。
▲CRONの設定が表示されるので「新規項目の追加」を選択し項目を追加します。
▲「CRON スケジュール設定」が表示されるので「実行コマンド」に以下のコマンドを入力します。
cd /home/●/www/○/mt/; ./tools/run-periodic-tasks
●にはアカウント名、○にはMTをインストールしたパス(www以下、mtフォルダまで)を入力します。
アカウント名は サーバーコントロールパネル 左上の「お客さま情報」に書いてあります。
ここでつまずく人が多いのですが、要は「mt.cgi」のあるディレクトリまでのパスを入力すればOKです。
MTをwww以下の「blog」というフォルダにインストールしたのならば「cd /home/●/www/blog/mt/; ./tools/run-periodic-tasks」となります。www直下にある場合は○の部分は入りません。
もし、コマンドが何らかのエラーで実行できなかった旨をメール(postmaster宛)で受け取りたい場合は、
以下のように「 1> /dev/null」をコマンドの最後に入力します。
cd /home/●/www/○/mt/; ./tools/run-periodic-tasks 1> /dev/null
時刻の指定について
実行日時に「月」「日」「時」「分」「曜日」が選択できます。
詳しい解説はこのページの<参考資料>に記載されているので、これを読めば問題ありません。
「*」はワイルドカードですので、これを指定すると「すべて」という意味が付きます。
(例:「日」の項目に「*」と入力すると「毎日」実行されます。)
「~おきに」と指定したい場合は「*/○」と入力します。
(例:「時」の項目に「*/6」と入力すると「6時間おき」に実行します。)
決まった時刻に実行したい場合は各項目に具体的な数値を入れます。
負荷はできるだけ少なく、余裕のある設定で!
同じページの<注意事項>にも記載されていますが、あまりに実行時間の間隔が短いとサーバーに大きな負荷がかかるため他のユーザーに迷惑がかかります。絶対にやめましょう。(毎分や30分ごとなど)
これが自宅サーバーでご自身が管理しているのならばご自由にということになりますが、レンタルサーバーはあくまで共有物です。自分以外のユーザーも同じサーバーを利用しています。
そんな中に強烈な負荷をかけるユーザーがいると他の人が借りている部分にまで影響を与えてしまいます。
「レンタルサーバーはみんなで利用するもの」という意識を忘れずにこの設定を行ってください。
実行頻度が1時間以内に連続する場合や、CPU処理時間が60秒以上連続で利用される場合、予告なく設定が削除される場合があります。
さくらインターネットは以上のように警告しています。最低でも3時間以上の間隔をあけた方がよろしいかと思います。
因みに私は「1日おき、毎日0時」に実行するよう指定しました。
パーミッション設定
タスクを実行するため「run-periodic-tasks」のパーミッションを「755」に設定します。(初期状態では「644」かな?)
さくらインターネットでは「705」が推奨されていますが、確実に実行したいので少し権限を広げました。
設定方法は、利用しているFTPソフトごと異なるので各自調べておいてください。
▲パーミッションを「755」に設定(Dreamweaver)
さくらのサーバーコントロールパネルに標準搭載されている「ファイルマネージャー」で設定する場合は、「run-periodic-tasks」を右クリックし「プロパティ」から設定してください。
パーミッションとは
MTをインストールできる知識がある方々なら今更なことですが一応簡単に解説。
パーミッションとは、あるディレクトリやファイルに対するユーザーのアクセス権のことです。
主にUNIXシステムで用いられる言葉です。
ディレクトリやファイルのアクセスをどこまで認めるか設定できます。アクセス権のないユーザーはそのディレクトリやファイルにアクセスできません。「755」なら以下のようなアクセス権となります。
- その所有者は「読み込み」「書き込み」「実行」が可能。
- そのグループは、「読み込み」「実行」が可能。
- その他のユーザーは、「読み込み」「実行」が可能。
Movable Typeで日時指定
最後にMTのブログ投稿画面で投稿日時を指定します。(以下の画像はMovable Type 5の画面)
「ステータス」を「日時指定」にし、「公開日」を指定すれば完了です。
設定した時間にcronがコマンドを実行し、記事を投稿してくれます。(私のは0時に実行されるのでそれ以前に投稿設定)
正常動作した場合
正常に動作した場合、MTのシステムログで以下のログが残っています。
[ 日時 ] 以下のタスクを実行しました: 日時指定されたブログ記事を再構築, サマリー監視タスクをキューに追加
どういった動作をするのか
この「run-periodic-tasks」ですが、実行するとどういった動作をするのでしょうか。
気になったので公式サイトを見てきました。
指定日投稿や公開キュー等のスケジュール処理の設定 – Movable Type
http://www.movabletype.jp/documentation/schedule_task_framework.html
run-periodic-tasks スクリプトを実行すると、指定日投稿などのスケジュールタスクと、公開キューによる再構築が行われます。お使いのサーバーにあわせた方法で定期的に「run-periodic-tasks」が実行されるように設定してください。
http://www.movabletype.jp/documentation/schedule_task_framework.html
Q.公開キューとは何ですか
A.
「公開キュー」は、バックグラウンドで再構築をおこなうための機能です。バックグラウンドでの再構築はサーバーへの負荷の分散に役立ちます。例えば、複数人で集中的に記事を公開した場合、再構築処理も集中するため、サーバーへの負荷が大きくなります。「公開キュー」の利用により再構築のタイミングをずらし、サーバーの負荷が小さくなる時間帯などに実行することができます。
https://www.movabletype.jp/faq/about-publish-queue.html – Movable Type
なるほど、どうやら公開キューで再構築待ちをしている状態のようです。なので、これを実行(「キックする」とも言います)すればブログ記事が投稿されたときと同様の動作が実行されるようです。
cronがうまく動作しない場合の対処法
これは実行コマンドで「 1> /dev/null」を追加して「postmaster」宛のメールを読めば大体原因が分かります。
ファイルが見つからない(not found)エラーはパスを再確認
cd: can't cd to /home/●/www/○/mt/; ./tools/run-periodic-tasks not found
以上のようなメールが来ていた場合は「not found」ということなので「指定されたファイル(run-periodic-tasks)が見つからなかった」という意味です。
原因の大半は「パスのミス」ですので、「run-periodic-tasks」までのパスが正しいのか再確認しましょう。
パーミッションエラーは「パーミッション」の変更で対処
cd: can't cd to /home/●/www/○/mt/; ./tools/run-periodic-tasks Permission denied
「Permission denied」というエラーなので「実行が拒否された」という意味です。アクセス権がないため実行できなかったことが原因です。
これはパーミッションを「705」あるいは「755」に変更することで解決します。
このcron設定で発生するエラーと言えばこの2つがほとんどです。
よく分からないエラーがでた場合はエラーメッセージを検索してみると解決法が見つかるかもしれません。
まとめ
以上、長くなりましたがこれによりcron設定によるMTのブログ記事 日時指定投稿が可能になりました。
(2011年12月3日 0:15 追記:この記事も日時指定した記事です。0時にcronがrun-periodic-tasksをキックし、正常に記事が公開されました。動作を確認して追記しています。)
cron設定が可能なサーバーでのみ、以上と似た方法で日時指定投稿が可能になります。
もう一度言いますが、cron設定ができないサーバーも多くありますので注意してください。
その場合はプラグインを導入するとcron設定せずとも日時指定投稿が可能になるかもしれません。
ほぼ指定日投稿 – The blog of H.Fujimoto
http://www.h-fj.com/blog/archives/2010/01/20-094755.php
コメント
コメント欄を開く