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もう少し触ってみて、なにかあればまたブログにまとめます。

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark