※ PowerSync プラグインを利用するためには PowerCMS とは別にライセンスを購入する必要がございます。
概要
PowerSync プラグインは、PowerCMS Professional 版以上に同梱されている Copy2Public プラグインをベースとした、CMS で生成・削除された静的ファイルをステージ環境、公開環境に反映する機能です。また、公開環境へのコピーの際に FTP/FTPS/SFTP 転送によりリモートサーバに転送することが可能です。 このプラグインは、静的生成されたファイルの転送・同期を行うため、コミュニケーション機能 (コメント/トラックバック/フォーム機能) や検索機能がそのままでは利用できないことに注意してください。 このプラグインはファイルのコピーや削除、リモートサーバへのアクセスを伴うため、プラグインのインストール後には必ず設定を行ってください。また、運用の前に十分なテストを行ってください。 ステージ環境、公開環境でのリンク切れを防ぐため、同梱されている Abs2Rel プラグイン (リンクを相対パスに変換) をあわせて有効にしてください。 コンテンツのファイルは ZIP 形式でアーカイブされた状態で FTP サーバに転送され、アーカイバによって展開、配置が行われるため、転送先サーバで以下が可能である必要があります。
PowerSync 1.28 から変更点
- 削除するファイルを手動で指定する機能 を追加しました
- 予約時点のファイルを同期する機能 を追加しました
- リモートサーバへ転送した Zip アーカイブの展開日時を指定する を追加しました
- do-synchronize スクリプトを do-synchronize-time-reserved へ変更しました
- PowerSync 1.27 以下から PowerSync 1.28 以降へアップグレードする場合はリモートサーバーの do-synchronize スクリプトを do-synchronize-time-reserved へ置き換え、設定を行ってください
- 本ドキュメントの内容は最新版がベースになっています。旧バージョンをご利用の場合、do-synchronize-time-reserved と記載所部分は do-synchronize へ読み替えてください
動作環境
- PowerCMS 4.0 もしくは Movable Type 6.0 以降がインストールされ、正常に動作している環境
リモートサーバーへの転送を行う場合、下記の条件も必要です。
- CMS サーバーからリモートサーバーへ FTP,FTPS,SFTP いずれかの標準ポートを使った通信が行える
- Perl と Perl モジュールがインストールされている
- cron やタスク スケジューラなど定期的な実行を行う仕組みで、Perl スクリプトを実行できる
※ Windows 環境からの SFTP 転送には対応していません。
Perlモジュール
FTP / FTPS / SFTP 転送を行う場合、下記の Perl モジュールが必要です。
- Archive::Zip
- CMSサーバとリモートサーバーの両方に必要です
- Net::FTPSSL
- FTPS での転送を行う場合に必要です。
- Net::SFTP
- SFTP での転送を行う場合に必要です。
- Net::SFTP::Foreign
- SFTP での転送を行う場合に必要です。
Net::SFTP のインストールには関連モジュールが多く必要です。
サポート情報
サポートサイト
最新バージョンはサポートサイトからダウンロードすることができます。
https://www.powercms.jp/members/powersync/
PowerCMS を導入いただいている場合は、「PowerSync-(バージョン番号)-forPowerCMS.zip」を、そうでない場合は「PowerSync-(バージョン番号)-forMT.zip」をダウンロードしてご利用ください。
サインアップについて
初めてサポートサイトをご利用いただく前にまずサインアップを行ってください。
本ユーザーガイドで使用する約束事
本ユーザガイドではコードの例を示すことが多くありますが、そのほとんどは部分的なものです。また、いくつかのコード例は UNIX 系 OS のシェルにログインしてコマンドラインとして入力する形になっており、そのような例ではシェルのプロンプトとしてドル記号 ($) を併せて記載しています: $ /usr/bin/perl /var/www/cgi-bin/tools/run-periodic-tasks
用語
- MT_DIR
- Movable Type/PowerCMS をインストールした MT ディレクトリのパスを表します。通常はここに mt.cgi や mt-config.cgi などが含まれています。
この他、PowerCMS と共通の用語もありますので下記ページも参照してください。
パッケージ構成
PowerSync パッケージは以下のディレクトリで構成されています。
- mt/plugins/PowerSync : PowerSync プラグイン一式
- mt/plugins/Abs2Rel : Abs2Rel プラグイン一式
- mt/plugins/Copy2PublicPlus : Copy2PublicPlus プラグイン一式
- mt/mt-static : PowerSync プラグイン一式
- mt/tools : CMS サーバーおよび公開サーバーで利用するスクリプト群
インストール
- mt ディレクトリ内の各ファイルおよびディレクトリをご利用環境の $MT_DIR にコピーします。
- リモートサーバーへの転送を行う場合、tools/do-synchronize-time-reserved をリモートサーバーの任意のディレクトリにコピーし、実行権 限を付与した上で cron もしくはタスクスケジューラを設定します。具体的な設定については後述します。
- ブラウザで CMS 管理画面へアクセスし、アップグレードを実行する
Copy2Public プラグインを運用されていた環境へ導入する場合
Copy2Public プラグインは削除してから、PowerSync プラグインをインストールしてください。両方が設置されていると不具合を起こす可能性があります (無効化ではなく、サーバ上から取り除く必要があります)。
- プラグインの設置完了後、管理画面にアクセスするとアップグレードが行われます。アップグレード処理によって Copy2Public プラグインの設定が引き継がれますので、Copy2Public へ行っていたプラグイン設定を再度行う必要はありません。
- Copy2Public 用の環境変数がそのまま使えます。環境変数の設定を再度行う必要はありません。
- 予約済みの同期タスク、Copy2PublicPlus との組み合わせもそのまま動作します。
- PowerCMS 導入済みの環境では Abs2Rel プラグイン、Copy2PublicPlus プラグインが上書きとなる場合があります。これらのプラグインは PowerCMS に同梱されているものと同じものですので、上書きしていただいてかまいません。上書きせず、設置済みのものをそのままご利用いただいてもかまいません。
同期する対象ファイルの判別について
同期するファイルについては CMS 環境の公開パス以下のファイル、ステージ環境以下のファイル、公開環境以下のファイルそれぞれのファイルのタイムスタンプを比較し、同期先のファイルより同期元のファイルの方が新しい場合に同期対象となります。また、同期先に存在し、同期元に存在しないファイルは同期先から削除されることに注意してください。 何らかのエラーにより同期処理が途中で終了してしまった場合などは、同期先のファイルを一度クリアするか手動で同期を図ってから再度処理を実行してください。
環境変数
以下の環境変数を設定することができます。
環境変数 | 解説 | 初期値 |
---|---|---|
AllowPowerSyncStagingRoot (※ AllowCopy2PublicStagingRoot) |
ステージ同期先に指定可能なパス(前方一致)を指定します。ここに設定しているパスと前方一致しないパスへの同期を行うことはできません。 | /tmp |
AllowPowerSyncPublishgRoot (※ AllowCopy2PublicPublishRoot) |
公開同期先に指定可能なパス(前方一致)を指定します。ここに設定しているパスと前方一致しないパスへの同期を行うことはできません。 | /tmp |
AllowPowerSyncDirectSync (※ AllowCopy2PublicDirectSync) |
1を指定すると同期の際に ID/パスワード を要求しません。magic_token によるチェックと権限があれば即時に同期を実行します。 | 0 |
PowerSyncScheduledIsDefault (※ Copy2PublicScheduledIsDefault) |
0を指定することで、同期を行う際に「今すぐ実行」がデフォルトになります。 | 1 |
PowerSyncFollowSymLinks (※ Copy2PublicFollowSymLinks) |
1を指定すると同期処理の中でシンボリックリンクのリンク先を含めて同期を行います。 | 0 |
PowerSyncTransferProtocol (※ Copy2PublicTransferProtocol) |
FTP, FTPS, SFTP 転送を行う場合に設定します。ftp,ftps,sftp のいずれかを指定できます。 | FTP |
※ Copy2Public の環境変数が使えます。
プラグイン設定
設定はシステム/各ウェブサイト/ブログの「設定」→「プラグイン」→「PowerSync」の設定で行います。
設定項目 | 解説 | 設定例 |
---|---|---|
ステージ環境のパス | ステージ環境のフルパスを設定します。 パスが指定されてない場合や、指定したパスが環境変数 AllowPowerSyncStagingRoot の設定値と前方一致しない場合はステージ環境への同期が行えません。 この欄にウェブサイト/ブログの公開パスを設定することで、ステージ環境への同期をスキップすることができます。 |
/var/www/stage/ (ウェブサーバーから書き込み可能である必要があります) |
ステージ環境のURL (PowerSync 1.27 以降) |
「ステージ環境のパス」に対応する URL を指定すると同期結果の画面でリンクを表示できます |
https://stage.example.com/ |
公開環境のパス | 公開環境のフルパスを設定します(リモートサーバへの転送のみで運用する場合も一次保存場所として指定してください)。 パスが指定されてない場合や、指定したパスが環境変数 AllowPowerSyncPublishRoot の設定値と前方一致しない場合は PowerSync を実行できません。 |
/var/www/htdocs/ (ウェブサーバーから書き込み可能である必要があります) |
公開環境のURL (PowerSync 1.27 以降) |
「公開環境のパス」に対応する URL を指定すると同期結果の画面でリンクを表示できます | https://www.example.com/ |
コピー対象外の拡張子 | 同期対象外とするファイルの拡張子をカンマ区切りで指定します。 | cgi,php,fcgi,ini,pm |
コピー対象外のパス | ワークスペース/スペースの公開パス以下のファイルでステージ,公開環境に同期対象外としたいファイル/ディレクトリのパスをフルパス(改行区切り)で指定します。前方一致でチェックします。 | /var/www/cms/mt/ /var/www/cms/templates_c/ /var/www/cms/mt/cache/ |
削除対象外のパス | 公開環境/ステージ環境から削除したくないファイル/ディレクトリのパスを指定します(フルパス/前方一致/改行区切り)。 | /var/www/htdocs/cgi/ /var/www/htdocs/cms/ |
同期先から削除するファイルを選択する (PowerSync 1.28 以降) |
選択したファイルのみが削除されるようにします。 | |
日時指定した時点のファイルを同期する (PowerSync 1.28 以降) |
日時指定した時点でのファイル/ディレクトリをアーカイブして保存しておき、同期時にコピーします。 この設定を利用する場合は「同期先から削除するファイルを選択する」も有効になります。 |
|
ページタイトルの表示文字数 (PowerSync 1.28 以降) |
ページタイトルは、ファイルを選択する画面で表示されます。 | |
送信元 | メール通知の際の送信元となるメールアドレスを指定します。 | from@example.com |
件名 | メール通知の際の件名を指定します。 | 日時指定された同期処理が完了しました |
本文 | メール通知の際の本文を指定します。以下のテンプレート変数が利用可能です。 cp_stage cp_label cp_ts”> |
|
結果を含める | 同期先に反映された内容をメール本文に含める場合にチェックします。同期対象となったファイルが多い場合、本文が非常に長くなることがあります。 | |
通知先の既定値 | 同期完了時のメールを送信する通知先のメールアドレスをします。指定したアドレスは同期画面の通知先に既定値として入力されています | |
転送 | 公開環境への同期時にリモートサーバへの転送を行う場合にチェックを入れてください。 | /var/www/htdocs/ |
以下の設定はリモートサーバーへの転送を行う場合に設定します | ||
転送先サーバーの公開環境のパス | リモートサーバーに転送した ZIP アーカイブの展開先(サーバーの公開パス)をフルパスで記述します。 | /var/www/html |
サーバ設定 | ワークスペース/スペースごとに個別の設定を行わずシステム全体で同じアカウント、サーバーを利用する場合はチェックを入れてください。 共通アカウント設定はシステムプラグイン設定で指定します。 | |
サーバー名 | リモートサーバーのホストまたは IP アドレスを記述します。合わせて、Unix OS または Windows OS を選択してください。 | ftp.example.cpm |
ユーザー名 | リモートサーバーヘのログイン ID を指定します。 | ftpuser |
パスワード | リモートサーバーヘのログインパスワードを指定します。入力した内容はマスク表示されるため注意してください。 | ******** |
アップロードディレクトリのパス | リモートサーバ内の、ファイルをアップロードするディレクトリのパスをフルパスで指定します。ここに設定したパスは do-synchronize-time-reserved の $upld_dir にも設定します。 | /var/www/upload |
ホームディレクトリからのパス | リモートサーバにログインするユーザにチェンジルートが設定されている場合、「アップロードディレクトリのパス」に対応するパスを指定してください。 | /upload |
パッシブ・モードで転送する | FTP転送でパッシブ・モード転送を行う場合にチェックします。 |
権限について
ロールに権限を設定することで、ウェブサイト/ブログごとに同期についての権限を設定することができます。
ロール編集画面から「ステージ環境に同期」「公開環境に同期」を設定してください。
この権現が設定されていないユーザは同期を行うことができません(システム管理者を除く)。
転送の実行について
転送はウェブサイト/ブログごとに行います。「同期」メニューから「ステージ環境に同期」または「公開環境に同期」を選択することで開くダイアログの中で操作します。 今すぐ同期を実行する場合は「今すぐ実行する」を、日時を指定して同期予約をする場合には「日時を指定」を選択してください。日時を指定した場合、同期は run-periodic-tasks の実行時に (指定した日時を過ぎて実行される最初のタスク実行で) 実行されます。
続いて、ウェブサイト/ブログ公開パス以下のフォルダ/ファイルのリストが表示されますので、同期する対象をチェックします。フォルダを開いて下層のフォルダ/ファイルを個別に指定することも可能です。
同期元でファイルが削除されている場合
- 同期元環境のフォルダ/ファイルが一覧表示されるため、削除されているファイルは表示されません。ファイルが削除されていることを同期する場合、削除されたファイルの上位のフォルダを指定してください。
- 第一階層について削除されていることを同期する場合、「第一階層のファイルが削除されていた場合、同期先からも削除する」のチェックボックスにチェックを入れてください。 ファイル名の先頭に「.」があるファイルは、同期する対象のファイル一覧には表示されません。 同期実行の前には再度ログイン ID とパスワードを求められますが、環境変数 AllowPowerSyncDirectSync 1 を指定している場合は認証なく実行することができます。
削除するファイルを手動で指定する機能 (PowerSync 1.28 以降)
PowerSync プラグイン設定オプション内の「同期先から削除するファイルを選択する」をチェック入れる事で、同期先環境からファイルを削除することが可能になります。
同期先環境からファイルを削除する場合、これまでは、対象を内包するディレクトリを同期対象として指定する必要があったため、対象の削除だけでなく、それ以外のファイルがコピーされる可能性があることに注意が必要でした。
次回のアップデートにより、同期先環境から削除するファイルを手動で選択することができるようになります。
※ 設定により従来の動作を維持することも可能です
予約時点のファイルを同期する機能 (PowerSync 1.28 以降)
PowerSync プラグイン設定オプション内の「日時指定した時点のファイルを同期する」をチェック入れる事で、予約時点のファイルを同期することが可能になります。
日時指定による同期の予約を行う場合、これまでは、同期処理時点で同期元環境と同期先環境のファイルの更新日の比較を行い、同期元環境のほうが新しい場合のみファイルがコピーされていました。更新日の比較は自動で行われるので、対象として毎回全体を指定するような運用では CMS 任せにできるのですが、その反面、リビジョンを駆使して同じファイルを何度も同期する場面では、同期処理時点でファイルがどういう内容になっているか注意が必要でした。
※ 設定により従来の動作を維持することも可能です
※ この機能によって同期を行う場合、ファイルの更新日の新旧に関わらず、必ずファイルのコピーが行われ、同期先環境のファイル更新日は同期実行時点のものになります
※日時指定した時点のファイルを同期するだけのチェックは入れることはできません
リモートサーバへ転送した Zip アーカイブの展開日時を指定する (PowerSync 1.28 以降)
これまで、リモートサーバーにおいては、cron 登録された do-synchronize が動作するタイミングで即時に Zip アーカイブが展開されることを考慮して同期の日時を指定する必要がありましたが、同期操作の際に Zip アーカイブを展開する日時を指定することができるようになります。これにより、安全な事前同期が可能になります。
※リモートサーバーへは、展開日時を指定する機能をご利用の場合は do-synchronize-time-scheduled の設置が必要になります
リモートサーバでのファイルの同期について
リモートサーバにアップロードした ZIP アーカイブを、リモートサーバーに設置した Perl スクリプトの実行によって公開パスに展開・配置することができます.(PowerSync/tools/do-synchronize-time-reserved、以下 do-synchronize-time-reserved スクリプト)。do-synchronize-time-reserved スクリプトはアップロードされたログファイルを確認して公開パスへの反映を行います。スクリプトの実行は、公開サーバーで cron や Windows タスク・スケジューラを利用してください。 do-synchronize-time-reserved スクリプトでは、リモートサーバに転送されたログを見て配置するファイル・削除するファイルを判断します。ログが転送されるのは ZIP アーカイブがアップロードされた後ですので、リモートサーバへの転送が途中でエラーとなった場合などに意図しない状態でサイトが公開されることを防ぐことができます。
crontab への登録の例 (20分おきのタスク実行):
0,20,40 * * * * /usr/bin/perl /var/www/cgi-bin/do-synchronize-time-reserved
do-synchronize-time-reserved スクリプト設置の際には、テキストエディタ等でファイル中の冒頭、下記の部分を修正して設定を行ってください。
設定項目 | 解説 | 設定例 |
---|---|---|
1行目 | サーバーのPerlのパスにあわせて適宜変更してください。 | #!/usr/bin/perl -w |
5行目: $upld_dir | CMS サーバーから転送される ZIP アーカイブとログファイルをアップロードするディレクトリのパス、プラグイン設定「アップロードディレクトリのパス」に指定したパスを指定します。 | /www/sites/test/upload |
6行目: $backup_dir | 処理が終わった ZIP アーカイブとログファイルをバックアップしたい場合、バックアップ先のディレクトリのパスを指定します。下記のように空を指定するとバックアップを行いません。
my $backup_dir = ''; |
/var/www/backup |
7行目: $sync_log | do-synchronize-time-reserved スクリプトの実行結果をファイルに保存したい場合、ログファイルのパスを指定します。下記のように空を指定するとログを保存しません。
my $sync_log = ''; |
/var/www/log/sync.log |
9行目: $delete_tree | ディレクトリを削除したい場合に 1 を指定します。 | 1 |
※ 値は引用符で囲み、行の最後に ;
を入力してください
予約された同期タスクの確認
「ツール」メニューから「同期タスクの管理」を選択することで、予約された同期タスクの一覧を表示することができます。タスクを取り消すには対象のタスクを選択して「削除」ボタンをクリックしてください。
FTP でのファイル転送について
テストスクリプトでの実行チェック
$MT_DIR/tools/ftp-test.pl
を実行すると、指定したファイルをアップロードするテストを行うことができます。実行前にテキストエディタ等で以下の項目を設定してください。
設定項目 | 解説 | 設定例 |
---|---|---|
13 行目: $HOSTNAME | アップロード先のサーバのホスト名もしくは IP アドレスを指定します。 | 192.0.2.123 |
14 行目: $USERNAME | アップロード先のサーバのログインに必要なユーザ名を指定します。 | admin |
15 行目: $PASSWORD | アップロード先のサーバのログインに必要なパスワードを指定します。 | ******** |
16 行目: $LOCAL_FILE | テスト用にアップロードする CMS サーバーのファイルのパスを指定します。 | /path/to/file.txt |
17 行目: $REMOTE_FILE | テスト用にアップロードされる転送先サーバーのファイルのパスを指定します。 | /remote_path/to/file.txt |
18 行目: $PASSIVE | アップロード先のサーバの接続にパッシブ・モードが必要な場合に 1 を指定してください。 | 1 |
19 行目: $BINARY | テスト用にアップロードされる転送先サーバーのファイルの種類に対応する値を指定してください。 |
|
※ 値は引用符で囲み、行の最後に ; を入力してください
FTPS でのファイル転送について
FTPS での転送を行う場合、以下の環境変数を設定してください。
環境変数 | 解説 | 初期値 |
---|---|---|
PowerSyncTransferProtocol (※ Copy2PublicTransferProtocol) |
ftps を指定することで FTPS による転送を行うことができます。 | ftps |
※ Copy2Public から移行した場合、Copy2Public の環境変数が機能します。
SFTP でのファイル転送について
ユーザー名とパスワードでの認証による SFTP 転送に対応しています。
SFTP 転送を行う場合、以下のいずれかを満たす必要があります。
Perl モジュール Net::SFTP がインストールされ、Net::SFTP::Foreign::Constants、 Net::SFTP::Foreign::Buffer が利用可能であること
Perl モジュール Net::SFTP::Foreign および IO::Pty がインストールされていること
MT_DIR/tools/sftp-test.pl をコマンドラインから実行することにより、SFTP による転送が可能であるかどうかを確認することができます。
Windows 環境からの SFTP 転送には対応していません。
テストスクリプトでの実行チェック
MT_DIR/tools/sftp-test.pl を実行すると、指定したファイルをアップロードするテストを行うことができます。実行前にテキストエディタ等で以下の項目を設定してください。
設定項目 | 解説 | 設定例 |
---|---|---|
13 行目: $HOSTNAME | アップロード先のサーバのホスト名もしくは IP アドレスを指定します。 | 192.0.2.123 |
14 行目: $USERNAME | アップロード先のサーバのログインに必要なユーザ名を指定します。 | admin |
15 行目: $PASSWORD | アップロード先のサーバのログインに必要なパスワードを指定します。 | ******** |
16 行目: $LOCAL_FILE | テスト用にアップロードする CMS サーバーのファイルのパスを指定します。 | /path/to/file.txt |
17 行目: $REMOTE_FILE | テスト用にアップロードされる転送先サーバーのファイルのパスを指定します。 | /remote_path/to/file.txt |
※ 値は引用符で囲み、行の最後に ; を入力してください
環境変数の設定
SFTP 転送を行う場合、以下の環境変数を設定してください。
PowerSyncTransferProtocol (※ Copy2PublicTransferProtocol) |
sftp を指定することで SFTP による転送を行うことができます。 | sftp |
---|
Abs2Rel プラグイン (相対パス変換)
Abs2Rel プラグインは出力する HTML ファイル内のリンク (src/href/action 属性) をそのファイルを起点とした相対パスに変換します。リンク先が相対パスになっていることで同期先から同期元へリンクしたりリンク切れとなることを回避できます。
PowerSync に同梱している Abs2Rel は PowerCMS に同梱しているものと同じですので、機能や使い方については下記 PowerCMS のドキュメントを参照してください。
Copy2PublicPlus プラグイン(転送先リモートサーバの追加)
ステージングサーバー機能によって実行される転送先リモートサーバをひとつ追加することができます。
PowerSync に同梱している Copy2PublicPlus は PowerCMS に同梱しているものと同じですので、機能や使い方については下記 PowerCMS のドキュメントを参照してください。