※ この機能はプロフェッショナル版以上のライセンスをご購入の場合のみご利用可能です
管理画面(以下 CMS)で生成された静的ファイルをステージ環境、公開環境へコピーする機能です。また、公開環境へのコピーの際に FTP/FTPS/SFTP 転送によりリモートサーバに転送することが可能です。このプラグインを利用することにより、承認フロー→ステージ環境でのテスト公開→公開環境への反映、といったワークフローを実現することができます。
- 静的生成されたファイルの転送・同期を行うため、コミュニケーション機能 (コメント/トラックバック/フォーム機能) や検索機能がそのままでは利用できないことに注意してください。
- ファイルのコピーや削除、リモートサーバへのアクセスを伴うため、プラグインのインストール後には必ず設定を行ってください。また、運用の前に十分なテストを行ってください。
- ステージ環境、公開環境でのリンク切れを防ぐため、Abs2Rel プラグイン (リンクを相対パスに変換) をあわせて有効にしてください。
- コンテンツのファイルは ZIP アーカイブして FTP サーバに転送され、展開ツールによって解凍、配置が行われるため、転送先サーバで以下が可能である必要があります。
- Perl モジュール
Archive::Zip
がインストールされていること - Perl モジュール
Archive::Zip
を使ってアーカイブを展開する Perl スクリプトを設置し、実行できること - アーカイブの展開を行い、ファイルの配置を行うスクリプトを cron またはタスクスケジューラによって定期的に実行することができること
- Perl モジュール
よりセキュアな転送を行うために
よりセキュアな FTPS 転送、ユーザー名とパスワードでの認証による SFTP 転送に対応しています。これらをご利用いただくには、上記に加え、下記の条件を満たす必要があります。
Windows サーバからの SFTP 転送には対応していません。
- FTPS 転送を行う場合、
Net::FTPSSL
がインストールされている必要があります - SFTP 転送を行う場合、以下のいずれかを満たす必要があります
- Perl モジュール
Net::SFTP
がインストールされ、Net::SFTP::Foreign::Constants
、Net::SFTP::Foreign::Buffer
が利用可能であること - Perl モジュール
Net::SFTP::Foreign
およびIO::Pty
がインストールされていること
- Perl モジュール
- SFTP 転送を行う場合、転送先サーバに /sbin/.ssh が生成できる必要があります
同期する対象ファイルの判別について
同期するファイルについては CMS 環境の公開パス以下のファイル、ステージ環境以下のファイル、公開環境以下のファイルそれぞれのファイルのタイムスタンプ (更新日時) を比較し、同期先のファイルより同期元のファイルの方が新しい場合に同期対象となります。また、同期先に存在し、同期元に存在しないファイルは同期先から削除されることに注意してください。
何らかのエラーにより同期処理が途中で終了してしまった場合などは、同期先のファイルを一度クリアするか手動で同期を行ってから再度処理を実行してください。
環境変数
環境変数 | 解説 | 初期値 |
---|---|---|
AllowCopy2PublicStagingRoot | Copy2Public プラグインでのステージ同期先に指定可能なパス(前方一致)を指定します。ここに設定しているパスと前方一致しないパスへの同期を行うことはできません。 | /tmp |
AllowCopy2PublicPublishRoot | Copy2Public プラグインでの公開同期先に指定可能なパス(前方一致)を指定します。ここに設定しているパスと前方一致しないパスへの同期を行うことはできません。 | /tmp |
AllowCopy2PublicDirectSync | Copy2Public プラグインで、1を指定すると同期の際に ID/パスワード を要求しません。magic_tokenによるチェックと権限があれば即時に同期を実行します。 | 0 |
同期に関する設定
設定は各ウェブサイト/ブログの [設定] 内 [プラグイン] 内 [Copy2Public] の設定で行います。
設定項目 | 解説 | 設定例 |
---|---|---|
ステージ環境のパス | ステージ環境のフルパスを設定します。設定するパスには、ウェブサーバーから書き込み可能である必要があります。 パスが指定されてない場合や、指定したパスが環境変数 AllowCopy2PublicStagingRoot の設定値と前方一致しない場合は「ステージ環境に同期」を実行できません。 |
/var/www/stage/html |
公開環境のパス | 公開環境のフルパスを設定します。設定するパスには、ウェブサーバーから書き込み可能である必要があります。リモートサーバへの転送のみで運用する場合も一次保存場所として指定してください。 パスが指定されてない場合や、指定したパスが環境変数 AllowCopy2PublicPublishRoot の設定値と前方一致しない場合は「公開環境に同期」を実行できません。 |
/var/www/public/html |
コピー対象外の拡張子 | 同期対象外とするファイルの拡張子をカンマ区切りで指定します。 | 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/ |
送信元 | メール通知の際の送信元となるメールアドレスを指定します。 | from@example.com |
件名 | メール通知の際の件名を指定します。 | 日時指定された同期処理が完了しました |
本文 | メール通知の際の本文を指定します。 |
以下のテンプレート変数が利用可能です。 <mt:var name=”cp_stage”><mt:var name=”cp_label”><mt:var name=”cp_ts”> |
結果を含める | 同期先に反映された内容をメール本文に含める場合にチェックします。同期対象となったファイルが多い場合、本文が非常に長くなることがあります。 | |
転送 | 公開環境への同期時にリモートサーバへの転送を行う場合にチェックを入れてください。 | /var/www/htdocs/ |
以下の設定はリモートサーバーへの転送を行う場合に設定します | ||
転送先サーバーの公開環境のパス | リモートサーバーに転送した ZIP アーカイブの展開先(サーバーの公開パス)をフルパスで記述します。 | /var/www/html |
サーバ設定 | ウェブサイト/ブログごとに個別の設定を行わずシステム全体で同じアカウント、サーバーを利用する場合はチェックを入れてください。 共通アカウント設定はシステムプラグイン設定で指定します。 | |
サーバー名 | リモートサーバーのホストまたは IP アドレスを記述します。合わせて、Unix OS または Windows OS を選択してください。 | ftp.example.cpm |
ユーザー名 | リモートサーバーヘのログイン ID を指定します。 | ftpuser |
パスワード | リモートサーバーヘのログインパスワードを指定します。入力した内容はマスク表示されるため注意してください。 | ******** |
アップロードディレクトリのパス | リモートサーバ内の、ファイルをアップロードするディレクトリのパスをフルパスで指定します。ここに設定したパスは do-synchronize の $upld_dir にも設定します。 | /var/www/upload |
ホームディレクトリからのパス | リモートサーバにログインするユーザにチェンジルートが設定されている場合、「アップロードディレクトリのパス」に対応するパスを指定してください。 | /upload |
パッシブ・モードで転送する | FTP転送でパッシブ・モード転送を行う場合にチェックします。 |
転送の実行について
転送はウェブサイト/ブログごとに行います。「同期」メニューから「ステージ環境に同期」または「公開環境に同期」を選択して実行します。同期の実行にはそれぞれに対応する権限が必要です。
今すぐ同期を実行する場合は「今すぐ実行する」を、日時を指定して同期予約をする場合には「日時を指定」を選択して実行日時を指定します。日時を指定した場合、同期は指定した日時を経過後の最初のスケジュールタスクで処理されます。
日時を指定する場合、同期予約を管理するためのラベルと、実行時にメール通知するための通知先メールアドレスを設定することができます。
「次へ」を押すとウェブサイト/ブログ公開パス以下のアイテムのリストが表示されますので、同期する対象をチェックします。リンク切れ等を防ぐために通常は全てにチェックを入れてください (すべてにチェックを入れた場合にも同期は常に差分ファイルのみが対象になります)。
※ 同期実行の前にはユーザー名とパスワードの入力を求められますが、環境変数 AllowCopy2PublicDirectSync 1
を指定している場合は認証なく実行することができます。
リモートサーバでのファイルの同期について
リモートサーバにアップロードした ZIP アーカイブを、リモートサーバーに設置した Perl スクリプトの実行によって公開パスに展開・配置することができます (options/tools/do-synchronize、以下 do-synchronize スクリプト)。do-synchronize スクリプトはアップロードされたログファイルを確認して公開パスへの反映を行います。公開サーバーで cron やタスクスケジューラに設定してください。
do-synchronize スクリプトでは、リモートサーバに転送されたログを見て配置するファイル・削除するファイルを判断します。ログが転送されるのは ZIP アーカイブがアップロードされた後ですので、リモートサーバへの転送が途中でエラーとなった場合などに意図しない状態でサイトが公開されることを防ぐことができます。
crontab への登録の例 (20分おきのタスク実行)
0,20,40 * * * * /usr/bin/perl /var/www/cgi-bin/do-synchronize
do-synchronize スクリプト設置の際には、テキストエディタ等で以下の項目を設定してください。
設定項目 | 解説 | 設定例 |
---|---|---|
1行目 | サーバーのPerlのパスにあわせて適宜変更してください。 | #!/usr/bin/perl -w |
5行目($upld_dir) | データのアップロードパスを指定します。 | /var/www/tmp |
6行目: $backup_dir | 処理が終わった ZIP アーカイブとログファイルをバックアップしたい場合、バックアップ先のディレクトリのパスを指定します。下記のように空を指定するとバックアップを行いません。
my $backup_dir = ''; |
/var/www/backup |
7行目($sync_log) | do-synchronize スクリプトの実行結果をファイルに保存したい場合、ログファイルのパスを指定します。下記のように空を指定するとログを保存しません。
my $sync_log = ''; |
/var/www/log/sync.log |
9行目($delete_tree) | ディレクトリを削除したい場合に 1 を指定します。 (※ PowerCMS 5.20 以降で利用可能) | 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 での転送を行う場合、以下の環境変数を設定してください。
設定項目 | 解説 | 設定例 |
---|---|---|
Copy2PublicTransferProtocol | ftps を指定することで FTPS による転送を行うことができます。 | ftps |
SFTP でのファイル転送について
ユーザー名とパスワードでの認証による SFTP 転送に対応しています。ご利用にあたっては、冒頭の「よりセキュアな転送を行うために」に記載の内容が満たされているかご確認ください。
テストスクリプトでの実行チェック
$MT_DIR/tools/sftp-test.pl
を実行すると、指定したファイルをアップロードするテストを行うことができます。実行前にテキストエディタ等で以下の項目を設定してください。
設定項目 | 解説 | 設定例 |
---|---|---|
13 行目: $HOSTNAME | アップロード先のサーバのホスト名もしくは IP アドレスを指定します。 | 192.0.2.123 |
14 行目: $USERNAME | アップロード先のサーバのログインに必要なユーザ名を指定します。 | admin |
15 行目: $PASSWORD | アップロード先のサーバのログインに必要なパスワードを指定します。 | ******** |
16 行目: $LOCAL_FILE | テスト用にアップロードするローカルファイルを指定します。 | /path/to/file.txt |
17 行目: $REMOTE_FILE | テスト用にアップロードするファイルのリモートでのパスを指定します。 | /remote_path/to/file.txt |
環境変数の設定
SFTP 転送を行う場合、以下の環境変数を設定してください。
設定項目 | 解説 | 設定例 |
---|---|---|
Copy2PublicTransferProtocol | sftp を指定することで SFTP による転送を行うことができます。 | sftp |