2018年09月20日
Copy2Publicの同期処理を自動化するには
Copy2Publicの同期処理指定は管理画面上で指定するもの
Copy2Public プラグインは、弊社製品 PowerCMS の中でも、問い合わせの多い部類に入ります。
このプラグインの仕様については、すでに何本か記事になっていますので、そちらをご覧ください。
Copy2Public の基本は管理画面上の操作です。
管理画面上で該当ディレクトリを一覧し、対象を指定したあとで、「今すぐ実行」もしくは日時指定を設定します。
同期が予約された場合は、次にスケジュールタスクが実行されるときに同期処理が行われます。
管理画面操作を経ずに定期的に同期を実行したい
しばしばいただくご質問に、「同期の操作を行わせたくないので、自動で同期するようにできないか」というものがあります。
上記説明のように、同期の実行はスケジュールタスクで定期実行されますので、同期対象の予約のみ自動化することが出来るならば、一連の処理の自動化が可能になります。
以下のスクリプトを実行することで、同期予約の作成を行うことができます。
reserve-copy2public
./tools/reserve-copy2public --stage or --public [--delay=] [--class=<*|website|blog>] [--blog_id= ] [--dry-run] [--mailto=sample@example.com,sample2@example.com]
スクリプトは引数を指定して実行し、指定できる引数は下記になります。
引数 | 指定例 | 説明 |
---|---|---|
--stage | --stage | ステージ環境への同期を予約したい場合に指定します。--stage と --public のどちらかを指定する必要があります。 |
--public | --public | 公開環境への同期を予約したい場合に指定します。--stage と --public のどちらかを指定する必要があります。 |
--class | --class=website | 予約したいウェブサイト/ブログの種類を、website か blog で指定します。指定しなかった場合はウェブサイト/ブログの両方が対象になりますが、--blog_id が指定されている場合は --blog_id の指定が優先されます。 |
--delay | --delay=30 | 予約した同期の開始時間をスクリプトの実行時から何秒後にしたいか指定します。指定しなかった場合の初期値は 30 です。 |
--blog_id | --blog_id=45 | 予約したいウェブサイト/ブログの ID を指定します。指定しなかった場合はすべてのウェブサイト/ブログで同期の予約を行い、--blog_id の指定は --class より優先されます。 |
--dry-run | --dry-run | テスト実行を行います。実際に予約を行わずに、同期対象のパスをコンソール画面へ出力します。 |
--mailto | --mailto=user@example.com | 同期の完了をお知らせするメールアドレスを指定します。メールアドレスはカンマ区切りで複数の指定が可能です。 |
Copy2Public はオプションプラグインとなっております。(製品パッケージのデフォルト状態ではインストールされておらず、必要によりインストールを行うもの)
以下 Copy2Public に関連するファイルですが、いずれも製品パッケージの options ディレクトリ以下に存在します。
options/plugins/Copy2Public | プラグイン本体です。 |
options/plugins/Abs2Rel | HTML内部のリンクを相対指定に変更するプラグインです。 |
options/tools/reserve-copy2public | タスク実行で同期予約を行うためのスクリプトです。 |
options/do-synchronize | FTP/SFTP転送されたファイルを解凍・配置する為のスクリプトです。外部転送利用時に転送先サーバー上で定期実行します。 |
options/sftp-test.pl | 外部転送でSFTP接続を利用する時のテストスクリプトです。 |
同期処理を定期実行タスクとして登録する
スケジュールタスクを実行する run-periodic-tasks などと同じく、MTの設置ディレクトリから ./tools/reserve-copy2public
の様に実行するよう登録します。
実行時点に存在している、ファイル・ディレクトリが同期対象として登録されます。
公開キュー処理などでスケジュール公開するファイルは、同期予約時点に存在していないファイルは、実際の同期処理時に存在していても同期は行われません。
ファイルの生成処理後に同期予約が実行されるよう、スクリプトの実行順を調整するなどしてください。
コメントを投稿する