PowerCMS™
[ブログ] PowerCMS 6 でのアップデートまとめ を追加しました。
[ブログ] 人事・教育担当より アルファサードのメンバーに求めていること を追加しました。
[ブログ] PowerCMS サポートの実績 (2024年2月) を追加しました。
[よくあるご質問] スケジュールタスクが実行されているか確認する方法はありますか? を追加しました。
ホーム > ドキュメント > PowerCMS > 5 > プロフェッショナル版 > オプションプラグイン >

こちらは旧バージョン PowerCMS 5 のマニュアルです。最新版のマニュアルにつきましては PowerCMS ドキュメント を参照してください。

ステージ環境から公開環境へのデータのコピー・転送

※ この機能はプロフェッショナル版以上のライセンスをご購入の場合のみご利用可能です

管理画面(以下 CMS)で生成された静的ファイルをステージ環境、公開環境へコピーする機能です。また、公開環境へのコピーの際に FTP/FTPS/SFTP 転送によりリモートサーバに転送することが可能です。このプラグインを利用することにより、承認フロー→ステージ環境でのテスト公開→公開環境への反映、といったワークフローを実現することができます。

ステージングサーバー機能の転送イメージ

  • 静的生成されたファイルの転送・同期を行うため、コミュニケーション機能 (コメント/トラックバック/フォーム機能) や検索機能がそのままでは利用できないことに注意してください。
  • ファイルのコピーや削除、リモートサーバへのアクセスを伴うため、プラグインのインストール後には必ず設定を行ってください。また、運用の前に十分なテストを行ってください。
  • ステージ環境、公開環境でのリンク切れを防ぐため、Abs2Rel プラグイン (リンクを相対パスに変換) をあわせて有効にしてください。
  • コンテンツのファイルは ZIP アーカイブして FTP サーバに転送され、展開ツールによって解凍、配置が行われるため、転送先サーバで以下が可能である必要があります。
    • Perl モジュール Archive::Zip がインストールされていること
    • Perl モジュール Archive::Zip を使ってアーカイブを展開する Perl スクリプトを設置し、実行できること
    • アーカイブの展開を行い、ファイルの配置を行うスクリプトを cron またはタスクスケジューラによって定期的に実行することができること

よりセキュアな転送を行うために

よりセキュアな FTPS 転送、ユーザー名とパスワードでの認証による SFTP 転送に対応しています。これらをご利用いただくには、上記に加え、下記の条件を満たす必要があります。

Windows サーバからの SFTP 転送には対応していません。

  • FTPS 転送を行う場合、Net::FTPSSL がインストールされている必要があります
  • SFTP 転送を行う場合、以下のいずれかを満たす必要があります
    • Perl モジュール Net::SFTP がインストールされ、Net::SFTP::Foreign::ConstantsNet::SFTP::Foreign::Buffer が利用可能であること
    • Perl モジュール Net::SFTP::Foreign および IO::Pty がインストールされていること
  • 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 テスト用にアップロードされる転送先サーバーのファイルの種類に対応する値を指定してください。
  • 1(バイナリファイル)
  • 0 (アスキーファイル)

※ 値は引用符で囲み、行の最後に ; を入力してください

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

お問い合わせ

お問い合わせフォームがご利用できない場合は、以下のメールアドレスからも受け付けております。
contact@alfasado.jp

製品資料ダウンロード

パンフレットデータ、提案用資料などがダウンロードできます。