静的ファイル同期機能 (SiteSyncプラグイン)

2021年4月13日追記 : ver.2.0をリリースしました。新機能についてはこちらをご覧ください。

概要

SiteSync プラグインは、静的ファイルの同期機能を提供する、別売りのプラグインです。

CMS で生成したファイルを、ステージング環境、本番環境へ、2段階で同期可能です。本番環境への同期の際、ミラーリング機能 (Mirroring プラグイン) と合わせて、別サーバーに同期可能です。同期予約機能で、日時を指定して同期することも可能です。

作成 → 確認 → 公開の各環境を分けた運用とすることで、コンテンツ公開前の確認を行いやすくなります。FTP クライアント (ファイル転送ソフト) の操作をしなくても、 CMS の管理画面から対象のディレクトリやファイルを選択して、ボタンで簡単に同期できます。

スクリーンショット: SiteSync プラグインの「ステージングへの同期」管理画面

プラグインが必要とする外部コマンド(ミラーリング機能利用時のみ)

事前準備

事前に、 Mirroring プラグインを有効化し、設定してください。

参照: サーバー配信機能について(Mirroringプラグイン)

確認点

  • PHP から LFTP が実行できる (同期実行に利用)
  • 管理画面からミラーリング機能を実行できる (同期実行に利用)
  • 定期実行タスクを設定している (同期予約に利用)
    参照: インストール
    例: 記事の公開予約ができる
  • 管理画面からメールを送信できる (同期通知に利用)
    例: ログイン画面の [パスワードをお忘れですか?] からメールアドレスを指定すると、「パスワードの再設定」メールが届く

設置とインストール

  • サーバーのアプリケーションディレクトリの plugins に、 SiteSync ディレクトリを設置します。
  • 管理画面のシステムメニューの、 [ツール] - [プラグイン管理] の画面で、 SiteSync にチェックを入れて有効化します。

スクリーンショット: プラグイン「SiteSync」の有効化

環境変数

変数名 説明 初期値
sitesync_staging_root_path ステージング環境のルートパスを指定する (前方一致) (なし)
sitesync_production_root_path 本番環境 (公開環境) のルートパスを指定する (前方一致) (なし)
sitesync_workspaces_in_system TRUE の場合、システムのツリービューに、スペース内のファイルも表示する FALSE

環境変数は、アプリケーションディレクトリの config.json の config_settings に追記します。

参照: 環境変数リファレンス

例:

"sitesync_staging_root_path": "/var/www/staging",

"sitesync_production_root_path": "/var/www/production",

※環境変数を指定していない場合、設定画面は次のように表示されます。

スクリーンショット: プラグイン「SiteSync」の設定。「環境変数 'sitesync_staging_root_path' が指定されていません。」「環境変数 'sitesync_production_root_path' が指定されていません。」

プラグイン設定

  • ステージング環境のパス: ローカルディスク上の一時ディレクトリに同期してから本番ディレクトリへ同期する場合に指定してください。 (例: /var/www/staging)
  • 公開環境のパス: 本番ディレクトリへ同期する場合に指定してください。 (例: /var/www/production)
  • 削除の同期 (削除されたファイルを同期先から削除): 同期元で削除されたファイルを、同期先においても削除する場合、チェックを入れます。
  • 隠しファイル (隠しファイル('.'から始まるファイル名)を除外する): 隠しファイルを同期の対象から除外する場合、チェックを入れます。
  • 除外パターン: 同期の対象から除外するディレクトリやファイルがある場合、除外パターンをカンマ区切りで入力してください。 (例: ^\/var\/www\/html\/assets\/,\.php$)
  • ミラーリング
    • 本番環境への同期実行後にミラーリングを実行する: [本番環境への同期] の実行に合わせて、ミラーリングを利用して同期先サーバーにも同期する場合、チェックを入れます。
    • ミラーリングメニューを隠す: ミラーリング機能単体で使用せず、 [ツール] のメニューから非表示とする場合、チェックを入れます。
  • 通知 (通知を送信する): 同期されたことを通知する場合、チェックを入れます。
    • メールの From: メールの From アドレスを指定します。省略した場合は、システムのメールアドレスが利用されます。
    • メールの To: 同期されたことを通知するメールアドレスを指定します。省略した場合は、予約実行ユーザーに通知されます。カンマ区切りで複数のメールアドレスを指定できます。
    • メールの件名: 同期通知の件名を指定します。
    • メールの本文: 同期通知の本文を指定します。

スクリーンショット: プラグイン「SiteSync」の設定画面1 スクリーンショット: プラグイン「SiteSync」の設定画面2

通知内容は、テンプレート・タグと予約変数を利用して設定できます。

例: メールの件名

<mt:if name="sync_target" eq="Production">
  <mt:trans phrase="Synchronization to the production has been executed.">
<mt:else>
  <mt:trans phrase="Synchronization to the staging has been executed.">
</mt:if>

例: メールの本文

<mt:if name="sync_target" eq="Production">
  <mt:trans phrase="Synchronization to the production has been executed.">
<mt:else>
  <mt:trans phrase="Synchronization to the staging has been executed.">
</mt:if>(<mt:trans phrase="Reserved User"> : <mt:var name="user_name"><mt:if name="change_note"> / <mt:trans phrase="Change Note"> : <mt:var name="change_note"></mt:if>)

<mt:if name="synchronization_files">
  <mt:trans phrase="Synchronization Files"> :
  <mt:var name="synchronization_files">
</mt:if>

<mt:if name="removed_files">
  <mt:trans phrase="Removed Files"> :
  <mt:var name="removed_files">
</mt:if>

<mt:if name="mirroring_results">
  <mt:trans phrase="Mirroring Results"> :
  <mt:var name="mirroring_results">
</mt:if>

予約変数

変数名 説明
user_name 予約したユーザーの表示名
user_email 予約したユーザーのメールアドレス
sync_target 'Staging' または 'Production'
change_note 予約時に入力した変更メモ
synchronization_files コピーされたファイル
removed_files 削除されたファイル
errors コピー・削除実行中に発生したエラー
mirroring_results Mirroring の実行結果
mirroring_error Mirroring 実行中のエラー

同期の実行

ステージング環境への同期方法

  1. 管理画面のメニューの、 [ツール] – [ステージングへの同期] をクリックします。
  2. [すべて開く] をクリックして、 CMS 環境のファイル一覧を表示できます。 (※ファイル数が多い場合、ツリービューの表示に時間がかかります。)
  3. ステージング環境へ同期したいディレクトリやファイルを選択します。
  4. [ステージングへの同期] をクリックして、同期を実行します。

スクリーンショット: システムメニューのツールの表示 スクリーンショット: SiteSync プラグインの「ステージングへの同期」管理画面

本番環境への同期方法

  1. 管理画面のメニューの、 [ツール] – [本番環境への同期] をクリックします。
  2. [すべて開く] をクリックして、ステージング環境のファイル一覧を表示できます。
  3. 本番環境へ同期したいディレクトリやファイルを選択します。
  4. [ステージングへの同期] をクリックして、同期を実行します。

同期の予約

  • [ステージングへの同期] または [本番環境への同期] 画面で、日付と時間を指定し、 [予約する] をクリックします。
  • 予約した同期は、設定日時を超えてから、定期実行タスク (tools/worker.php) が実行されるタイミングで、同期されます。
  • 同期の予約や実行のログは、 [読み取り専用] - [ログ] 画面で確認可能です。

スクリーンショット: 同期のログ

備考

※CMS で管理していないファイルは、同期の対象外です。 (例: サーバーに直接アップロードされたファイル)