WordPress

Human MadeのCavalcadeをAMIMOTOにインストールする

WP Cronがたまに不安定なので、Human Madeチームが利用しているCavalcadeを勝手に触ってみました。 WPは基本的にAMIMOTOで利用するので、AMIMOTOのEC2で動かしてみます。 セットアップ […]

広告ここから
広告ここまで

WP Cronがたまに不安定なので、Human Madeチームが利用しているCavalcadeを勝手に触ってみました。

WPは基本的にAMIMOTOで利用するので、AMIMOTOのEC2で動かしてみます。

セットアップ

SSHでEC2インスタンスに接続した状態で作業します。

# WordPressのルートディレクトリへ移動
$ cd /var/www/vhosts/i-xxxx

# mu-pluginsに移動
$ cd wp-content/mu-plugins

# プロジェクトをClone
$ git clone https://github.com/humanmade/Cavalcade.git

# ロード用mu pluginを作成
$ vim cavalcade.php

cavalcade.phpのコード

説明文とソースを読み込むコードだけ記述しています。

<?php
/**
 * Plugin Name: Cavalcade
 * Plugin URI: https://github.com/humanmade/Cavalcade
 * Description: A better wp-cron. Horizontally scalable, works perfectly with multisite.
 * Author: Human Made
 * Author URI: https://hmn.md/
 * Version: 1.0.0
 * License: GPLv2 or later
 */
require_once __DIR__ . '/Cavalcade/plugin.php';

成功すれば以下のように管理画面にCavalcadeが表示されます。

WP Cronの停止

Cavalcadeでcronジョブを実行しますので、wp-cronは停止します。

wp-config.phpに以下の1行を追加しましょう。

define( 'DISABLE_WP_CRON', true );

Runnerをインストールする

Cavalcadeを実行するためのランナーを追加します。

公開領域に置くものでもありませんので、今回はユーザーのディレクトリへ置いておきます。

$ cd ~/
$ git clone https://github.com/humanmade/Cavalcade-Runner.git

Runnerを実行する

最後にrunnerをnohupで実行させます。

$ sudo touch /var/log/cavalcade.log
$ sudo chown ec2-user:ec2-user /var/log/cavalcade.log
$ nohup ./Cavalcade-Runner/bin/cavalcade  /var/www/vhosts/i-xxxxxxxx/ > /var/log/cavalcade.log &

実行されていることを確認しましょう。

$ ps aux | grep Cavalcade
ec2-user  7350  0.0  2.1 379852 21380 pts/0    S    04:10   0:00 php ./Cavalcade-Runner/bin/cavalcade /var/www/vhosts/i-xxxx/
ec2-user  7353  0.0  0.2 110516  2124 pts/0    S+   04:11   0:00 grep --color=auto Cavalcade

/var/log/cavalcade.logで記録も見れます。

$ tail -f /var/log/cavalcade.log 
    [stopped] => 
    [exitcode] => 0
    [termsig] => 0
    [stopsig] => 0
)

[13] Worker shutting down...
[13] Worker out: 
[13] Worker err: 
[13] Worker ret: 0



[14] Running wp cavalcade run 14 (publish_future_post a:1:{i:0;i:5;})
[14] Started worker
[14] Worker status: Array
(
    [command] => wp cavalcade run 14
    [pid] => 7399
    [running] => 
    [signaled] => 
    [stopped] => 
    [exitcode] => 0
    [termsig] => 0
    [stopsig] => 0
)

[14] Worker shutting down...
[14] Worker out: 
[14] Worker err: 
[14] Worker ret: 0

WP CLIで情報を見る

Cavalcadeの情報はWP CLIのwp cavalcadeコマンドで見れます。

ジョブの一覧

$ wp cavalcade jobs
+----+------+------------------------------------+---------------------+---------------------+---------+
| id | site | hook                               | start               | nextrun             | status  |
+----+------+------------------------------------+---------------------+---------------------+---------+
| 7  | 1    | wp_privacy_delete_old_export_files | 2019-07-31 09:02:26 | 2019-07-31 09:02:26 | waiting |
| 8  | 1    | wp_version_check                   | 2019-07-31 20:02:26 | 2019-07-31 20:02:26 | waiting |
| 9  | 1    | wp_update_plugins                  | 2019-07-31 20:02:26 | 2019-07-31 20:02:26 | waiting |
| 10 | 1    | wp_update_themes                   | 2019-07-31 20:02:26 | 2019-07-31 20:02:26 | waiting |
| 11 | 1    | wp_scheduled_delete                | 2019-08-01 08:02:26 | 2019-08-01 08:02:26 | waiting |
| 12 | 1    | delete_expired_transients          | 2019-08-01 08:02:26 | 2019-08-01 08:02:26 | waiting |
| 13 | 1    | wp_scheduled_auto_draft_delete     | 2019-07-31 08:11:39 | 2019-08-01 08:11:39 | waiting |
| 14 | 1    | publish_future_post                | 2019-07-31 08:15:39 | 2019-07-31 08:15:39 | waiting |
+----+------+------------------------------------+---------------------+---------------------+---------+

実行ログ

–formatオプションで出力をいろいろ変えれます。

$ wp cavalcade log
+-----+--------------------------------+---------------------+-----------+
| job | hook                           | timestamp           | status    |
+-----+--------------------------------+---------------------+-----------+
| 13  | wp_scheduled_auto_draft_delete | 2019-07-31 04:11:41 | completed |
+-----+--------------------------------+---------------------+-----------+

$ wp cavalcade log --format=yaml
---
- 
  job: "13"
  hook: wp_scheduled_auto_draft_delete
  timestamp: 2019-07-31 04:11:41
  status: completed

$ wp cavalcade log --format=csv
job,hook,timestamp,status
13,wp_scheduled_auto_draft_delete,"2019-07-31 04:11:41",completed

$ wp cavalcade log --format=json
[{"job":"13","hook":"wp_scheduled_auto_draft_delete","timestamp":"2019-07-31 04:11:41","status":"completed"}]

手動実行

$ wp cavalcade jobs
+----+------+------------------------------------+---------------------+---------------------+-----------+
| id | site | hook                               | start               | nextrun             | status    |
+----+------+------------------------------------+---------------------+---------------------+-----------+
| 7  | 1    | wp_privacy_delete_old_export_files | 2019-07-31 09:02:26 | 2019-07-31 09:02:26 | waiting   |
| 8  | 1    | wp_version_check                   | 2019-07-31 20:02:26 | 2019-07-31 20:02:26 | waiting   |
| 9  | 1    | wp_update_plugins                  | 2019-07-31 20:02:26 | 2019-07-31 20:02:26 | waiting   |
| 10 | 1    | wp_update_themes                   | 2019-07-31 20:02:26 | 2019-07-31 20:02:26 | waiting   |
| 11 | 1    | wp_scheduled_delete                | 2019-08-01 08:02:26 | 2019-08-01 08:02:26 | waiting   |
| 12 | 1    | delete_expired_transients          | 2019-08-01 08:02:26 | 2019-08-01 08:02:26 | waiting   |
| 13 | 1    | wp_scheduled_auto_draft_delete     | 2019-07-31 08:11:39 | 2019-08-01 08:11:39 | waiting   |
| 14 | 1    | publish_future_post                | 2019-07-31 08:15:39 | 2019-07-31 08:15:39 | completed |
| 15 | 1    | do_pings                           | 2019-07-31 08:15:41 | 2019-07-31 08:15:41 | completed |
+----+------+------------------------------------+---------------------+---------------------+-----------+

$ wp cavalcade run 7

cavalcadeのDBアップグレード

$ wp cavalcade upgrade 
Success: Database upgrade not required.

おわりに

wp cronをcronで実行する方法はいろいろと紹介されていますが、alternativeなライブラリというのはあまり無い気がします。

Cavalcadeもう少し触ってみて、なにかあればまたブログにまとめます。

ブックマークや限定記事(予定)など

WP Kyotoサポーター募集中

WordPressやフロントエンドアプリのホスティング、Algolia・AWSなどのサービス利用料を支援する「WP Kyotoサポーター」を募集しています。
月額または年額の有料プランを契約すると、ブックマーク機能などのサポーター限定機能がご利用いただけます。

14日間のトライアルも用意しておりますので、「このサイトよく見るな」という方はぜひご検討ください。

広告ここから
広告ここまで

Related Category posts