サイト管理人Blog

cloudfreeで「さぁ始めましょう♪」

WordPressのバックアップ(BackWPup)設定とcronでの定期実行

2023-11-14 記載
概要 : WordPressの定期バックアップをサーバーのcronで行う
Keyword : WordPress, BackWPup, cron,

WordPressのバックアップをとるためにプラグイン BackWPup をいれました。

https://ja.wordpress.org/plugins/backwpup/

私の設定 (個人的な備忘録)

■BackWPup › 設定
フォルダーを保護:チェックoff

URL で外部からジョブを開始するキー:
ログファイル用フォルダー:uploads/backwpup-logs/

■BackWPup › ジョブ
daily-wp-journal

一般 > このジョブは …:
データベースのバックアップ
ファイルのバックアップ
インストール済みプラグイン一覧

スケジュール > ジョブの開始方法
リンク https://web.cloudfree.jp/…

DBバックアップ > バックアップするテーブル
すべて

ファイル >
WordPress をインストールしたフォルダーをバックアップ
除外ページ: wp-admin wp-includes

コンテンツフォルダーをバックアップ
除外ページ: languages updraft upgrade upgrade-temp-backup

プラグインのバックアップ チェックoff

テーマのバックアップ
除外ページ: twentytwentyfour
twentytwentyfour-child はBackup

uploads フォルダーをバックアップ
除外ページ: wp-statistics backwpup-*

プラグイン > プラグイン一覧のファイル名
cloudfree-journal-wp.pluginlist.%Y-%m-%d

宛先フォルダー > バックアップを格納するフォルダー
uploads/backwpup-journal1-backups/

※公式サイトからDownloadして再生できるファイルは省くのと
 おもに見て疲れるハッシュ値を省く変更
※ただしフォルダーを保護せず、かつハッシュ値を省きすぎると、
 類推されてDownloadされてしまうので注意。
 なのでハッシュ値ではなく自分固有の文字列に置換がよい。

ジョブの開始方法をリンクとしましたので
これを呼ぶphpファイルを造ります。
仮にphpファイル名を”cron_each10min.php”とします。

<?php
    try {
        // test
        // https://cfsid.cloudfree.jp/cron_each10min.php

        // cron設定
        // /usr/bin/php8.2 /home/cfsid/cfsid.cloudfree.jp/public_html/cron_each10min.php
        // /usr/bin/php7.4 /home/サーバーID/ドメイン名/public_html/xxx.php

        mb_language('Japanese');
        mb_internal_encoding('UTF-8');
        date_default_timezone_set("Asia/Tokyo");
        setlocale(LC_ALL, 'ja_JP.UTF-8');

        // job
        if (条件が一致したら ※codeは省略) {
            //ジョブの開始方法リンクのURL
            fopen('https://cfsid.cloudfree.jp/***/wp-cron.php?...&backwpup_run=runext&jobid=n', 'r');
        }
    } catch (exception $e) {
        file_put_contents('cron_error.log', var_dump($e));
    }
?>

file_put_contents でURLはphp.iniの設定で許可されているかを確認必要。
cloudfreeはOK(2023.11現在)
後のサーバのcron設定で、このphpファイルは10分ごとに呼ばれるようにします。それを想定して(条件が一致したら ※codeは省略) を記載するのですが、ここは各自の設定次第なので省略。

public_html配下においた場合、実行させるurlは
https://cfsid.cloudfree.jp/cron_each10min.php
になります。この段階でデバッグを終わらせておかないといけません。

バグがないなら、サーバーの管理パネルで[ Cron設定 ]を行います。

『シン・クラウド for Free』の嬉しいところはCron設定ができることです。
破格のサービスだと思います。
10分置きに先のphpファイルを処理するように設定しました。
ロジックを手持ちのファイルに置くようにすれば、サーバー引っ越し時の苦労が減ります。

Cronの設定は、PHPバージョンによって変わってきます。

/usr/bin/php8.2 /home/web/web.cloudfree.jp/public_html/cron_each10min.php
/usr/bin/php7.4 /home/サーバーID/ドメイン名/public_html/abc.php

という感じです。Cron設定は6本のみであとは cron_each10min.php 内部のロジックがすべて受け持つ、という構想です。

$dtNOW = new DateTime(‘now’);
$sYmd = $dtNOW->format(‘Y/m/d’);
$sHis = $dtNOW->format(‘H:i:s’);

などから条件一致を導きだして判定します。そこはゴソっと省略しています。
前回の実行時間を記録するなら実行ログが必要になります。



投稿へのコメントは コチラ(掲示板) へお願いします。

サイト管理人Blog