OpenCms 設 定 マニュアル ~ 静 的 コンテンツの 管 理 について ~ 株 式 会 社 ジークス (2010 年 10 月 25 日 更 新 )
1 静 的 コンテンツの 管 理 について CMS 導 入 時 に 問 題 となるのが 現 在 の 静 的 に 作 成 されたページの 移 行 です 各 ページが 自 由 なレイアウトで 作 成 され ディレクトリも 構 造 化 されておらず CMS のデータ 構 造 に 当 てはめるのが 難 しい 場 合 がほとんどです かといって コンテンツの 整 理 を 始 めると 膨 大 な 時 間 と 労 力 が 必 要 になります このような 場 合 でも OpenCms の 場 合 サイトのディレクトリ 構 造 をそのまま 厳 守 し 再 現 する 管 理 画 面 の 為 既 存 のページを そのまま 静 的 コンテンツとして 取 り 込 むことが 可 能 です その 上 で ニュ ースリリースなどの 定 型 的 で 更 新 頻 度 の 高 い 一 部 のコンテンツから 徐 々に 構 造 化 コンテンツにして テンプレートを 適 用 し 時 間 をかけて 移 行 していく 方 法 をとる 事 が 出 来 ます また 外 部 の 製 作 会 社 にコンテンツの 作 成 を 依 頼 し FTP などでアップする 運 用 を 今 まで 行 ってきて おり 今 後 もその 運 用 を 続 けたい 場 合 など 無 理 に CMS の 構 造 に 当 てはめない 方 が 良 い 場 合 がありま す そのような 場 合 でも 静 的 コンテンツとしてそのまま OpenCms へ 取 り 込 む 運 用 を 行 えば 簡 易 的 なワークフローや 時 限 公 開 事 前 プレビュー 履 歴 管 理 とロールバック 全 文 検 索 アクセス 権 限 デ ータベース 管 理 ( 保 守 運 用 バックアップ リカバリ)など FTP の 運 用 だけでは 出 来 ない 機 能 を 利 用 することも 自 然 に 出 来 ます このような 静 的 コンテンツのままページを 管 理 していく 運 用 を 行 う 時 に 問 題 となる 事 や 役 に 立 つ 便 利 な 機 能 また 効 率 の 良 い 運 用 方 法 があるので この 資 料 では それらの 一 部 を 紹 介 していきます 2
2 文 字 列 置 換 フィルタ 静 的 コンテンツを 取 り 込 んだときに 問 題 となるのが その HTML のリンクが 絶 対 パスで 記 述 されて いる 場 合 です これは OpenCms 上 での 事 前 プレビューに 悪 影 響 があり CSS や JavaScript がきかな くなることによるレイアウト 崩 れや 画 像 がリンク 切 れになるなどが 発 生 します "http://( 本 番 機 のドメイン)~" で 指 定 されている 場 合 は 本 番 機 にそのファイルがあれば まだ 見 れる かもしれませんが まだ 本 番 機 にアップされていない 場 合 はやはり 正 常 にプレビューできません また "/"からの 絶 対 パスの 場 合 も OpenCms と 同 じドメインで 参 照 されるのですが プレビュー 時 のパスが 本 番 と 違 う 場 合 がほとんど( 恐 らく "/opencms/opencms"が URL の 前 に 付 く)ですので 結 局 全 て 相 対 パスで 書 かれている 事 が 望 ましいという 結 論 になります 全 て 相 対 パスに 直 す 事 が 出 来 ればベストですが そうもいかない 場 合 この 問 題 を 少 しでも 軽 減 する ため 文 字 列 置 換 フィルタを OpenCms のプレビュー 時 に 適 用 する 方 法 があります この 機 能 は 文 字 列 置 換 のルールを opencms-vfs.xml の 以 下 の 箇 所 に 設 定 すると 有 効 になります 設 定 ファイル:./WEB-INF/config/opencms-vfs.xml <resourceloaders> <loader class="org.opencms.loader.cmsdumploader"> <param name="string.replace.ext">html, js, css</param> <param name="string.replace.pattern"> href="/ href="${context_path}/ src="/ src="${context_path}/ url("/ url("${context_path}/ http://www.zyyx.jp ${CONTEXT_PATH} </param> </loader> <loader class="org.opencms.loader.cmsimageloader"> <param name="image.scaling.enabled">true</param> </loader> string.replace.ext パラメータに 文 字 列 置 換 を 行 うファイルの 拡 張 子 をカンマ 区 切 りで 指 定 します ここで 指 定 した 拡 張 子 で 且 つリソースタイプが plain で Offline プレビューの 時 のみ 文 字 列 置 換 が 実 行 されるようになります 3
string.replace.pattern パラメータには 文 字 列 の 置 換 ルールを 記 述 します "( 置 換 対 象 文 字 列 ) ( 置 換 後 の 文 字 列 )"を 改 行 区 切 りで 指 定 します ここで 設 定 した 置 換 ルールは 上 から 順 に 実 行 されます 以 下 のように 置 換 対 象 文 字 列 のみ 指 定 した 場 合 は 空 文 字 に 置 換 します つまり 置 換 対 象 文 字 列 を 消 去 してページを 表 示 します "( 置 換 対 象 文 字 列 )" 尚 前 後 のタブやスペースはトリミングされます 置 換 後 の 文 字 列 に 指 定 されている${CONTEXT_PATH}は コンテキストパスを 表 します 例 えば "/opencms/opencms"といった 文 字 列 に 置 換 されます 単 純 な 文 字 列 置 換 を 行 うフィルターなので この 機 能 は これ 以 外 にも 色 々な 用 途 に 使 えます 4
3 テキストファイルから からフリーテキストページ フリーテキストページの 自 動 変 換 静 的 な HTML ファイルを ブラウザや WebDAV 経 由 でアップロードした 場 合 通 常 は テキストフ ァイル(リソースタイプ:plain)として 登 録 されます しかし 自 動 変 換 機 能 を 利 用 すると アップロードした 時 に HTML ファイルの 本 文 のみを 切 り 取 り フリーテキストページ(リソースタイプ:xmlpage)として 登 録 する 事 が 出 来 ます xmlpage として 取 り 込 まれたファイルであれば 本 文 を HTML エディタで Word 感 覚 で 編 集 する 事 が 可 能 になり また テンプレートが 適 用 されるので ヘッダーやフッタなどは 共 通 のテンプレートを 利 用 できます 自 動 変 換 されるのは 拡 張 子 が html xhtml htm のテキストファイルのみです この 機 能 を 利 用 するには 自 動 変 換 を 有 効 にしたいフォルダの"zx.plain_to_xmlpage"プロパティにパ ラメータを 指 定 します 5
"zx.plain_to_xmlpage"プロパティは 以 下 のフォーマットで 記 述 します (エレメント 名 ) ( 切 り 取 り 開 始 文 字 ) ( 切 り 取 り 終 了 文 字 ) (テンプレートのパス) エレメント 名 は 本 文 の 登 録 先 のエレメント 名 を 指 定 します JSP テンプレート 内 の <cms:include element="(エレメント 名 )" editable="true" /> で 指 定 したエレメント 名 です 切 り 取 り 開 始 文 字 と 切 り 取 り 終 了 文 字 で HTML 内 で 本 文 として 切 り 取 る 箇 所 を 指 定 します この 文 字 でかこまれた 部 分 は HTML エディタで 編 集 できるようになります それ 以 外 の 部 分 は テンプレートが 適 用 される 為 捨 てられます よって この 機 能 を 利 用 するには 切 り 出 す 部 分 を 特 定 できるキーワード(コメントタグ 等 )が HTML 内 にある 事 が 前 提 です 尚 開 始 文 字 と 終 了 文 字 の 指 定 には 正 規 表 現 が 利 用 できます テンプレートのパスは 適 用 する JSP テンプレートをフルパスで 指 定 します フォルダの" template" プロパティに 設 定 しているのであれば 省 略 可 能 です 6
ここでは "zx.plain_to_xmlpage"プロパティに 以 下 の 値 をセットする 事 にします "body <!-- 本 文 開 始 --> <!-- 本 文 終 了 --> /system/modules/jp.zyyx.opencms7_5_1.core/templates/blank.jsp" 次 に 上 記 の 値 がセットされたフォルダに 以 下 の 静 的 な HTML ファイルをアップロードします HTML ファイル: sample.html <html> <body> <h1>タイトルです </h1> <!-- 本 文 開 始 --> 本 文 です <!-- 本 文 終 了 --> </body> </html> このファイルは UTF-8 で 保 存 します すると 以 下 のように " 白 紙 "テンプレートが 適 用 された xmlpage に 変 換 されます <!-- 本 文 開 始 --> ~ <!-- 本 文 終 了 -->で 囲 まれた 本 文 は エディタで 編 集 可 能 になっています そして <h1> ~ </h1>で 囲 まれたタイトルなどは 捨 てられます 7
尚 開 始 文 字 と 終 了 文 字 が 日 本 語 ですが 文 字 コードが 合 わず 文 字 化 けすると 切 り 取 る 部 分 が 判 別 できず その 結 果 plain テキストで 登 録 される 事 になります よって ファイルは UTF-8 でアップ して 下 さい 他 の 文 字 コードでアップロードしたい 場 合 は 次 項 の 4 文 字 化 けの 対 処 方 法 を 参 照 して 下 さい 8
4 文 字 化 けの 対 処 方 法 OpenCms のデフォルトの 文 字 コードは UTF-8 です よって 他 の 文 字 コードのファイルをアップロ ードすると プレビュー 時 に 必 ず 文 字 化 けします そのような 場 合 は UTF-8 以 外 のファイルを 登 録 するフォルダに 対 して "content-encoding"プロパ ティに 文 字 コードを 指 定 してください "/sites/default/"の"content-encoding"プロパティに 文 字 コードを 指 定 すれば"/sites/default"のサイト 全 体 が その 文 字 コードで 管 理 されるようになります サイト 全 体 が UTF-8 ではない 場 合 は このよ うに サイトのルートフォルダに 対 して 設 定 します 管 理 者 権 限 でログインし サイトを"/"に 切 り 替 えて 設 定 して 下 さい ファイルの"content-encoding"プロパティに 文 字 コードを 指 定 すると そのファイルの 文 字 コードの み 変 更 する 事 が 出 来 ます ただ 運 用 上 ファイル 一 つ 一 つに 指 定 していくのは 手 間 がかかるので 文 字 コードが 混 在 するサイ トを 管 理 する 場 合 は 文 字 コードによってフォルダを 分 けて 管 理 した 方 が 良 いでしょう 9
5 フォルダ 構 成 静 的 なファイルを OpenCms では 管 理 せず 直 接 サーバーに 配 置 する 運 用 の 場 合 OpenCms がデプ ロイされているディレクトリ 下 にファイルを 置 く 事 があるかと 思 いますが /export フォルダと /resources の 下 にはファイルを 置 かないで 下 さい このフォルダは OpenCms の 管 理 下 にあり この 下 に 置 いたファイルは OpenCms が 勝 手 に 削 除 したり 上 書 きする 恐 れがあります その 他 /WEB-INF 以 下 でも 既 に 作 成 されているフォルダは OpenCms の 管 理 下 にあるので ファ イルを 置 かない 方 が 安 全 です 以 下 それぞれのフォルダの 用 途 を 簡 単 に 説 明 します./WEB-INF/config OpenCms の 設 定 ファイルが 置 かれています 設 定 ファイルに 変 更 があると 自 動 的 に./WEB-INF/config/backup にバックアップを 作 成 します./WEB-INF/hsqldb データベースに HSQLDB を 使 用 すると そのデータがこのフォルダの 下 に 作 成 されます./WEB-INF/imagecache サムネイル 画 像 を 生 成 した 時 などに その 画 像 をキャッシュとして 一 時 的 に 保 存 します./WEB-INF/index 全 文 検 索 エンジンのインデックスをこのフォルダの 下 に 作 成 します ちなみに OpenCms の 全 文 検 索 エンジンは Apache Lucene を 使 用 しています./WEB-INF/lib jar ファイルが 保 存 されています モジュールのインポート 時 に OpenCms が jar ファイルを 置 く 場 合 があるので Tomcat の 実 行 ユーザーにも このフォルダへの 書 き 込 み 権 限 が 必 要 です./WEB-INF/classes class ファイルと プロパティファイルなどの 設 定 ファイルが 保 存 されています モジュールのイ ンポート 時 に OpenCms が class ファイルを 置 く 場 合 があるので Tomcat の 実 行 ユーザーにも このフォルダへの 書 き 込 み 権 限 が 必 要 です./WEB-INF/ootemp OpenOffice.org や xpdf で Office ファイルのフォーマット 変 換 を 行 う 場 合 に OpenCms が 一 時 ファイルを 保 存 する 為 に 利 用 します 10
./WEB-INF/jsp OpenCms の JSP テンプレートは 一 旦 このフォルダに 展 開 し Tomcat にコンパイルさせてか ら 利 用 されます (コンパイル 後 のクラスは Tomcat の work フォルダの 下 に 置 かれます ) Tomcat を 強 制 終 了 した 時 などで 動 作 がおかしくなる 場 合 は このフォルダの 下 のファイルを 削 除 すると 回 復 するケースがあります おかしくなったままキャッシュされた JSP がクリアされる 為 です Tomcat の work フォルダの 中 を 削 除 して 回 復 させるケースがありますが OpenCms の 場 合 work フォルダ 内 の 一 時 ファイルを 消 しただけでは 効 果 がありません ちなみに jsp フォルダ 内 のデータは OpenCms の 管 理 画 面 から 削 除 する 事 が 出 来 ます 管 理 ツール で キャッシュ 管 理 JSP レポジトリ をクリックし OK ボタンをクリックして 下 さい 11
尚 このフォルダに 対 して Tomcat の 起 動 ユーザーで 読 み 書 き 出 来 ないと OpenCms が 正 常 に 動 作 しなかったり JSP を 変 更 しても 更 新 されないなどの 問 題 が 発 生 します そのような 問 題 が 発 生 したら このフォルダのパーミッションが 問 題 ないか 確 認 して 下 さい./WEB-INF/logs OpenCms のログが 出 力 されます このフォルダに 出 力 されるログは 自 動 的 にローテーションさ れ 古 いログは 削 除 されていきます ( OpenCms が 出 力 するログは このファイルだけではな く Tomcat の catalina.out にも 重 要 なログが 出 る 事 があります ) 尚 このログは OpenCms の 管 理 画 面 から 参 照 したりダウンロードする 事 が 出 来 ます 管 理 ツール で ワークプレースツール ログファイル をクリックしてください 12
./WEB-INF/packages OpenCms でアップロードしたファイルを 一 時 的 に 保 存 するディレクトリです また 管 理 画 面 で データベース 管 理 からコンテンツをエクスポートした 時 その ZIP ファイルが 保 存 されるディレクトリでもあります ファイルのアップロードが 出 来 なくなった 場 合 やデータベース 管 理 のエクスポート 機 能 が 利 用 で きなくなった 場 合 は このフォルダのパーミッションやディスクの 空 き 容 量 を 確 認 してください./WEB-INF/packages/modules OpenCms のモジュールが 保 存 されます ここに 配 置 されたモジュールは OpenCms のモジュール 管 理 の サーバーからモジュールをイン ポート で プルダウンから 選 択 できるようになります HTTP でモジュールをインポート で 新 しいモジュールを 追 加 した 場 合 も このフォルダに 保 存 され 次 回 からは サーバーからモジ ュールをインポート で 選 択 できるようになります./WEB-INF/setupdata OpenCms のセットアップ 時 のログが 保 存 されます 13