CMSのポテンシャルを引き出す─MODxで作る商用サイト

第2回MODxの基本操作とリソースを理解する

はじめに

まずはじめに、東日本大震災により、被害を受けられました皆様に、心からお見舞い申し上げます。ささやかですが、前回を含め、本連載の全ての原稿料は全て復興支援のために寄付させていただくことに決めました。連載100回を目指してがんばります!!

さて、前回の記事では前置きやインストールにページを割いてしまい、MODxの具体的な設定や操作については触れることが出来ませんでしたので、今回からは少しずつMODx管理画面の基本操作に慣れていきましょう。具体的には、今回「リソース」というものについて解説します。

なお、前回はEvoやRevoという表記を行ってきましたが、これからは基本的に2.x系であるRevoのみの紹介となりますので、今後はMODxという表記に統一し、MODxが動作するURLも http://www.example.com/ や http://www.example.com/manager/ と表記するようにします。

前回記事への補足:MODxのインストールについて

前回の内容では、sshやtelnet経由でのMODxインストールを想定していましたが、場合によってはそれらのシェルアクセスが制限され、FTPのみ利用可能という環境も考えられます。その場合には、zipファイルをいったんローカルPC上に展開した後、各フォルダやファイルをFTPで転送、必要なディレクトリを作成し、パーミッションを設定する、という形でも導入は可能です。

ただし、後々のメンテナンスや拡張性などを考慮すると、sshなどのシェルアクセスやcrontabの設定権限があったほうが便利です。実際「なかみつ園」トップページ下部の「人気ページランキング」は、crontab経由でApacheのアクセスログを解析する形で実現しています。

図1 人気ページランキング部分
図1 人気ページランキング部分

MODxとリソース

MODx Japanで公開されている「MODXを30分で理解する!簡易チュートリアル」にも記されていますが、MODxを使用する上で「リソース」という言葉をよく耳にします。MODxにおける「リソース」とはコンテンツの基本単位で、商用サイトにおける1ページとも読み替えることができます。

表1 MODxで扱うことのできるリソース
リソースの種類意味
ドキュメント一般的なドキュメント
Webリンクコンテンツを持たない外部リンクなど
シムリンク他リソースへのシンボリックリンク
静的リソース静的なファイル

リソース作成の練習

解説するよりも、実際に触った方がわかりやすいと思います。http://www.example.com/manager/ より管理用IDでログインし、左ウインドウの「リソース」タブより、⁠コンテキスト」とよばれる家の形のアイコンを右クリックして「作成」より、表2~5に挙げる4種類のリソースを作成してみてください。

表2 ドキュメントの作成
作成方法「作成⁠⁠→⁠ここにドキュメントを作成」
タイトル会社概要
公開するチェック
長いタイトルなかみつ園の会社概要です
リソースコンテンツここに会社概要の説明が入ります
表3 ウェブリンクの作成
作成方法「作成⁠⁠→⁠ここにウェブリンクを作成」
タイトルgihyo.jpへのリンク
公開するチェック
ウェブリンクhttp://gihyo.jp/
表4 シムリンクの作成
作成方法「作成⁠⁠→⁠ここにシムリンクを作成」
タイトル会社概要へのシムリンク
公開するチェック
シムリンク2(会社概要のリソースID)
表5 静的リソースの作成
作成方法「作成⁠⁠→⁠ここに静的リソースを作成」
タイトル静的ファイルのインクルード
公開するチェック
静的リソースファイルブラウザより、外部ファイルであるht.accessを指定
コンテンツの渡し方インライン(通常出力)

念のためリソース作成後のスクリーンショットも貼り付けておきます。ちなみに、各リソースの右側に表示される数字は「リソースID」と呼ばれています。

図2 リソース作成後の画面
図2 リソース作成後の画面

これらの作成済みリソースは

  • http://www.example.com/index.php?id=リソースID

として参照することができるのですが、現時点では目次のようなコンテンツの一覧ページが無いため、いろいろと面倒です。そこで、トップページである「Home」ドキュメントの「リソースコンテンツ」リスト1のHTMLを記述、保存し、コンテンツの一覧を作成しておきましょう(本当はスニペットという機能を使えばドキュメントの一覧を簡単に作成できるのですが、次回以降紹介します⁠⁠。

リスト1 リソースコンテンツに記述するHTML
<a href="index.php">Home</a><br />
<a href="index.php?id=2">会社概要</a><br />
<a href="index.php?id=3">gihyo.jpへのリンク</a><br />
<a href="index.php?id=4">シムリンク</a><br />
<a href="index.php?id=5">静的ファイル</a><br />

では、http://www.example.com/より、それぞれのリンクをクリックして、挙動の違いを確かめてください。

「ドキュメント」⁠ウェブリンク」の挙動はいわずもがなですが、⁠シムリンク」は既存ドキュメントへのシンボリックリンクのようなもので、実用的な使い方としては、⁠ドキュメント」「シムリンク」では、コンテンツ自体を共有させることができる一方、次回以降解説予定の「テンプレート」をそれぞれに割り当てできるため、PC用やモバイル用のサイトを作成する場合に有効です。

また、⁠静的リソース」ではサーバ側のファイルシステム中に存在するファイルを読み込ませ、パーミッションなどはMODx経由でコントロールしたい場合に有効です。それぞれのリソースでアイコンにも微妙な違いがあるため、見た目でも判別できるようになっています。

以上でリソースの簡単な解説はおしまいです。リソースを作成する場合には、今回紹介したパラメータ以外にも「テンプレート変数」「アクセス許可」などさまざまな設定を行うことができるのですが、このあたりの高度な設定についても後々紹介していきます。

さて、このあたりで読者の皆さんの一部は「んん?現状のリソースのURLはSEO的に不利だし、「なかみつ園」の各ページのURIは*.htmlになっているじゃないか。本当に簡単に商用サイトができるの?」と思われるかもしれませんが、このあたりも後々の解説とさせてください。気になる方は「フレンドリーURL」をキーワードとして予習しておいてください。

管理画面のアクセス制限

MODxに限らず、CMSを活用する上で十分に注意したいのが、システムのセキュリティです。MODxの管理画面からはさまざまなコンテンツの追加や削除ができ、これこそがCMSの醍醐味ではあるのですが、デフォルトのURLが http://www.example.com/manager/と固定されているため、万が一MODxに


SQLインジェクションにより、ユーザ名とパスワードを知らない攻撃者でもログイン画面から認証をバイパスできてしまう

といった深刻な脆弱性が見つかってしまうと大変です。

もちろん現時点で、これほどの脆弱性が放置されているわけではありませんが、管理画面のURLを全世界に公開するよりは、一部の関係者のみに制限しておいた方が得策ですので、ここではそのための対策を3点紹介しておきます。

①追加でBasic認証を行う

これは、⁠Basic認証をパスしなければ、管理画面のログインページを表示することすらできない」という対策です。この場合、/var/www/html/以下で.htaccessが設定できることが条件となるため、CentOS-5.5の場合は、次のように/etc/httpd/conf/httpd.confの320~327行目を編集し、

Options -Indexes FollowSymLinks
--略--
AllowOverride ALL

としたあと、Apacheを再起動しておきます。次に、/var/www/html/manager/.htaccessというファイルを作成し、リスト2のような内容にします。

リスト2 .htaccessの内容

AuthUserFile   /var/www/.htpasswd 
AuthGroupFile  /dev/null 
AuthName       "User and Password" 
AuthType       Basic 
require        valid-user

最後に、次のようにパスワードファイルを作成します。

図3 パスワードファイルの作成
# htpasswd -c /var/www/.htpasswd admin 
New password: (パスワードを入力)
Re-type new password: (パスワードを再入力)
Adding password for user admin 
# chown apache:apache /var/www/.htpasswd
# chmod 600 /var/www/.htpasswd

コンテンツを管理するためには、二重のパスワード認証をパスする必要があり面倒ですが、ログイン画面経由の攻撃を高い確率で防止することが出来ます。

②管理画面にアクセス可能なIPアドレスを指定する

「社内からのみ管理画面へのアクセスを許可する」ような場合は、IPアドレスによる認証が効果的です。こちらも前述のように、managerディレクトリ内に.htaccessファイルを作成し、リスト3のような中身にしておきます。

リスト3 .htaccessの内容

order deny,allow 
deny  from all 
allow from x.x.x.x(社内のIPアドレス)
allow from y.y.y.y(社内のIPアドレス)

接続元のアドレスが固定されている場合には、積極的に活用したい設定です。

③管理画面のURLを変更する

「セキュリティを高めつつ、複数のIPアドレスから管理画面を参照させたいし、複雑な認証を用いたくない」場合には、管理画面のURLを変更してしまうのも効果的です。

サイトのURLの末尾にmanagerという文字列をつけてログイン画面が表示されれば、⁠このサイトはMODxを使っている」というのがバレバレですが、⁠Not Found」と表示されれば、一見MODxを使っているかどうかもわかりません⁠。

管理画面のアドレスを変更するためには、SSHなどでMODxサーバにログインした後、次のようにmanagerディレクトリ自体をリネームしたうえで、設定ファイルであるconfig.inc.phpを更新します。

図4 管理画面のアドレスをhttp://www.example.com/adm/に変更
# cd /var/www/html
# mv manager adm
# vi core/config/config.inc.php
(35, 36行目付近の$modx_manager_path, $modx_manager_urlの右辺に含まれるmanagerという文字列をadmに変更して保存)

あとは、http://www.example.com/adm/よりこれまで通りログインしてください。おそらくキャッシュの関係上、

Could not find action file at: /var/www/html/manager/controllers/default/welcome.php

といったエラーが表示されると思いますので、⁠サイト⁠⁠→⁠キャッシュをクリア」を選択し、古いキャッシュを削除しておきます。

注意点として、この変更を行った場合、将来的にMODxをアップグレードする手順が通常と異なってしまいます。MODxのアップグレード方法についても、次回以降で機会があれば解説していきます。

※)
あくまでも「一見」であって、それ以外のファイルをくまなくチェックされてしまえば、MODxを使っている可能性があると想像することができます。

最後に

今回はリソースの概念について解説しましたが、これだけでは

  • リッチテキストエディタが無くてHTML直打ちなのでCMSの意味がない!!
  • コンテンツのアドレスが「index.php?id=リソースID」となるのは格好悪い
  • チャンクやスニペットって何?
  • 商用サイトには程遠い!!

といった数々の不満があるはずですが、都合良く忘れているわけではなく、後々じっくり解説していきますので、楽しみにしていてください。

さて、最後に恒例(?)「なかみつ園」アピールの時間です。3月に入り、町中やニュースで「花粉」という文字を目にするようになりました。前回も少し触れさせていただきましたが、「べにふうき」というお茶には抗アレルギー作用、つまり花粉症の症状を軽減する効果があるため、毎年この時期に人気が出ます。

何を隠そう筆者も約20年間花粉症に悩まされているのですが、べにふうきを日々摂取することで、症状が緩和されるのを実感しています(個人的な感想で、筆者の場合完全に症状が解消されるわけではありません。目や鼻に花粉症の違和感が残るものの、ずいぶん楽になる感じです⁠⁠。

理系のエンジニアの皆さんは、根拠の薄い情報を鵜呑みにすべきではありませんので(笑⁠⁠、少しでも興味のある方は、独立行政法人 農業・食品産業技術総合研究機構 野菜茶業研究所の研究結果をご覧ください。

皆さんのお茶の購入が筆者のモチベーション=寄付にもつながっていきますので、ぜひよろしくおねがいします!

おすすめ記事

記事・ニュース一覧