System i用のPHPオープンソース・ウェブ・アプリケーションの導入
System iでPHPが使用できるようになったのは単に新しいウェブ開発ツールが使用できるようになったということ以上の意味があります。System iのユーザーは何千というオープンソースのアプリケーションをすぐに無償で選択することができるようになるのです。
本稿では、IBMのオフィシャルPHPディストリビューションであるZend Core for i5/OSをインストール、設定することで、オープンソース・ソフトウェアを有効に利用するためのヒントをご紹介します。特にSystem iの観点に重きをおき、ウェブのコンテンツ、データベース、バグなどを管理するために、選択したアプリケーションをどのようにインストールするかをご説明します。オープンソースのPHPプログラムのほとんどはデータベースにMySQLを使用していますので、MySQLをインストールするのに必要な情報もご紹介します。
本稿を読むに当たってはPHPの使用経験はなくても構いません。ただし、WindowsワークステーションからIFSに接続できる程度にIFSを知っていて、IFSにファイルをコピーしてEDTFやテキスト・エディタでファイルを編集し、ファイルやフォルダのアクセス権を変更できる程度の知識は必要です。また、zipやtar.gzなどのフォーマットで圧縮されたファイルを解凍する方法についてもご存知であることを前提としています。便利なフリーの解凍プログラムにZipGenius (zipgenius.it)があります。
本稿でご紹介するアプリケーションはいずれもGNU General Public License (GPL - gnu.org/copyleft/gpl.html)の下で無償で利用できます。このライセンスでは、アプリケーションの使用に制限はありません。ただしプログラムを修正して一般に公開した場合は、GPLの下で無償でリリースしなければなりません。こうしたソフトウェアを単に利用してみたいというだけならば、この規約は特に影響を及ぼしません。
PHP自体のインストールからはじめる
以下の手順で始めればミスを防ぐことができます。
- System i上でTCP/IPを設定する。
- 最新のPASE (Portable Application Solutions Environment)用PTF
(www-03.ibm.com/servers/enable/site/porting/iseries/pase
/misc.html)をインストールする。Zend CoreおよびMySQLの機能を問題なく動作させる上で、この手順は不可欠です。 - Zend Coreのリリースノートに記載されている前提条件を確認する。
Zend Core for i5/OSのページの「リリースノート」というリンク(zend.com/products/zend_core/zend_for_i5_os)をクリックしてください。Crypto Access Provider 128 bit/5722ac3 という上書きされたプログラムが前提条件に記載されている場合には、これを無視してください。 - Zend i5/OSのページからZend Coreをインストールします。[Download]をクリックしZend Networkに登録してからダウンロードし、説明指示に従ってZend Coreをインストールします。
- 以下のように選択してZend Coreソフトウェアを更新します。
- GO ZENDCORE/ZCMENU
- Zend Networkメニューで更新(オプション2)
- Zend Networkに登録した値を使用してNetworkのIDのユーザー名とパスワードを変更します(オプション1)
- Zend Coreのコンポーネントを更新します(オプション5)
両方のApacheサーバーをテストする
Zend Coreには2つのApacheウェブ・インスタンスが含まれていて、1つはポート8000番を、もう1つはポート89番をリッスンしています。この両方ともテストしてください。GO ZENDCORE/ZCMENUとした後にStart Zend Core Subsystem (オプション1)と入力して、Zend Coreと付随のPASEベースのApacheサーバーを起動してください。PASE内のPHPが利用可能なZendのApacheインスタンスは、サブシステムZENDで起動します。このインスタンスはポート8000番をリッスンし、ジョブ名はZENDCOREAPです。ウェブ・ブラウザが自分のIPアドレスまたはドメイン名(たとえばhttp://www.example.org:8000/ZendCore)を介してZendの管理GUIにアクセスができるか確認してください。
次に、Apache ILE (ネイティブのi5/OS) Zend ウェブ・サーバーを起動します。
STRTCPSVR SERVER(*HTTP) HTTPSVR(ZENDCORE)
このApacheインスタンスは標準のIBM i5ウェブ・サーバーで、ILE環境内にあります。このインスタンスはポート89番をリッスンし、ジョブ名はZENDCOREです。Zend社のIBM System iプロジェクト・マネージャのサム・ピンカソフ氏によれば、IBMとZendがこの2つ目のインスタンスを作成したのは、SSL暗号化などといった既存のSystem i機能とPHPをユーザーが統合できるようにという理由だそうです。このインスタンスはリバース・プロキシを介してPHPが利用できるサーバーに接続します。ウェブ・ブラウザが自分のIPアドレスまたはドメイン名(たとえばhttp://www.example.org:89)からサンプルのホームページにアクセスができるか確認してください。
設定を変更する
Zend Coreの構成をいくつか変更してオープンソースのアプリケーション用に備えておくことを強くお勧めします。図1に私のお勧めを、図2にZend Coreに関連した主な構成の名前およびエラー・ファイルの位置を示します。
PmWiki:協調型Wikiソフトウェア
PmWiki (pmwiki.org)はwikiのテクノロジを利用してカスタマイズされたウェブ・サイトを構築しています。wikiのテクノロジを利用すると、ウェブ・ページ上にある「編集」リンクをクリックすることで誰もがそのページを編集することができます。そのようなウェブ・サイトの1つがWikiPublisher (wikipublisher.org)です。wikiを利用した他のサイトと同様に、PmWikiも変更履歴を保存しています。また、ユーザーが任意の文字列を使用して検索ができるようにもなっています。Wikiはドキュメントを協働で作成したり、プロジェクト管理をしたりするのはもちろん、その他の用途にも有用なツールです。
PmWikiはすべてのデータをデータベース中にではなくフラットなファイルに保存しているので、比較的容易にインストールできます。
- pmwiki.orgで[Download]をクリックして最新の安定したリリースまたはベータ版を選択します。私の場合はpmwiki-2.2.0-beta15.zipを選択しました。
- System iのIFS上の/www/zendcore/htdocs/ ディレクトリにpmwikiというフォルダを作成します。
- zipファイルの中身を解凍します。1つか2つ下の階層のサブ・ディレクトリにcookbook、docs、その他のファイルやフォルダがあります。この中身を/www/zendcore/htdocs/pmwikiにコピーします。
- ブラウザからPmWikiにアクセスできることを確認します。http://www.example.org:89/pmwiki/pmwiki.phpにアクセスしてみてください。
エラーが発生した場合は、デフォルトのユーザー(NOBODY)にもっと強い権限を与える必要があるかもしれません。デフォルトのPmWikiのホームページを表示することができたら、おめでとうございます。PmWikiが正常にインストールされました。
これで自分のPmWikiサイトのページを編集する準備ができました。編集を開始する際のヒントを以下にいくつか挙げておきます。
- 三重引用符で囲むと「太字」になります。
- 波括弧とプラス記号で囲むと下線付きのテキストになります。
- パーセント記号に色の名前を付けると文字にその色が付きます。
- 二重鍵括弧で囲むとその部分をクリックしたときに新しいページを作成するリンクを生成します。
図3に編集後のPmWikiのページの例を示します。
オープンソース・データベースMySQL
本稿でご紹介する他のアプリケーションをインストールする前に、MySQLデータベース・サーバーをインストールしておかなければなりません。PHPはDB2 for i5/OSなど一般的なデータベースのほとんどと一緒に動作します。オープンソースの世界ではMySQLの評判が良く、フリーな使用を許可しているライセンスでもあるため、オープンソースのPHPアプリケーションのほとんどがMySQLを使用しています。
ZendもIBMもMySQLをサポートしていませんが、共にMySQL用の便利な環境を提供しています。Zend Core for i5/OSにはMySQLの拡張があり、PHPがMySQLを使用できるようにしています。ZendはMySQLをZend Platform用の内部データベースとして使用しています。Zend PlatformはPHPのパフォーマンスと信頼性を強化するためのアドオンツールとしてZendが開発、販売しているものです。
MySQLのセキュリティ
DB2/i5はそのセキュリティのスキーマをオペレーティング・システムから継承していますが、MySQLはオペレーティング・システムとは別に独自の権限ユーザー集合を持っています。MySQLのスーパー・ユーザーはi5/OSのQSECOFRに相当するもので「root」と呼ばれています。rootにはデフォルトではパスワードがありません。MySQLアプリケーションにサイン・インする際にこのパスワードが必要になりますので、パスワードを設定して覚えておかなければなりません(設定方法はインストールの途中で提示されます)。
Zend CoreでMySQL拡張を有効にする
Zend CoreにはPHP拡張と呼ばれる多数のオプションのコンポーネントがあります。MySQL拡張はデフォルトでは無効になっています。PHPがMySQLのデータにアクセスできるようにするためには、以下の手順でMySQL拡張を有効にしておかなければなりません。
- サーバー上で起動している管理サイトをブラウザから起動します(http://www.example.org:8000 /ZendCore)。
- [Configuration/Extensions]をクリックします。
- 「MySQL」が現れるまで下にスクロールします(図4)。電球と赤か緑のスイッチの形をした小さなイメージが見えるはずです。電球の色が黄色の場合、MySQL拡張は有効になっています。電球が白色の場合、赤いスイッチをクリックしてスイッチを緑色にしてください。[Save settings]をクリックします。
- コマンドラインでGO ZENDCORE/ZCMENUと入力してApache再起動し、ReStart Apache server instances (オプション6)を選択します。
MySQLをインストールする
PASEのコマンドラインで作業をしたい管理者のために、MySQLのインストールは容易です。ただしILE (i5/OS)環境からMySqlを管理する(つまり起動、停止する)にはこれ以外に作業が必要となります。幸いなことにこの作業をショートカットする方法があります。
PHPとMySQLをSystem i上で使用できるようにしたパイオニアの1人であるロブ・ウォード氏がMySQLのインストレーション・ラッパーを作ってくれました。ウォード氏は注文服製造および刺繍業のM-C Industries社のIT部門役員で、このラッパーをi5php.netから無償でダウンロードできるよう提供してくれました。このラッパーはMySQL v4 on i5/OS V5R3あるいはそれ以後のバージョンをインストールしてくれます。主なインストール手順は以下の通りです。
- www-03.ibm.com/servers/enable/site/porting/iseries/pase
/misc.htmlから最新のPASE PTFをインストールします。 - i5php.netのサイトに行きます。[Download|MySQL]をクリックします。[MySQL Server for i5/OS v4.x]をクリックし(xはマイナーのバージョン番号)、[Download Now]をクリックします。
- zipファイルを自分のPCにダウンロードします。私がダウンロードしたファイルはi5os-mysql-4.1.21-32bit.zipというものでした。
- zipファイルの中身i5osmysql.savf and ReadMe.txtを解凍します。
- ReadMe.txtを開き、その指示に従ってFTPを使用します。保存ファイルをSystem iに保存してコマンドをいくつか実行してください。
上記の処理の最後でMYSQLLIB/STRMYSQLコマンドとENDMYSQLコマンドが利用可能になります。不明な点があったらi5php.netにあるMySQLフォーラムで尋ねてみてください。
MySQL v5の機能(たとえばストアード・プロシージャ)が必要な場合は、PASE環境で作業するとその便利さがわかるでしょう。もしくはMySQLの機能についてより詳しく勉強し、マニュアルでインストールすると良いかもしれません。詳細はZend Developer Zone (devzone.zend.com/node/view/id/609)にある「MySQL On i5/OS Example」を参照してください。
MySQLで何か問題が発生したらそのエラーログを見てください。エラーログは/usr/local/mysql/[datadir]/[hostname].err にあります。ここで[datadir]は「data」または「var」で、[hostname]は適切なホスト名(たとえばmyi5.example.org)です。セキュリティに関するヒントはkitebird.com/articles/ins-sec.htmlに記載されています。
phpMyAdmin: ウェブ・ベースのMySQL管理
phpMyAdmin (phpmyadmin.net)はMySQL用のウェブ・ベースの管理ツールです。phpMyAdminはデータベースの追加、ドロップ、名前の変更、データベース中の特定のテキストの検索、データの表示、テーブル構造の変更、接続に関する統計情報の表示などといったタスクを使いやすいグラフィカル・インタフェースで提供します。
phpMyAdminのインストール手順は以下の通りです。
- phpmyadmin.netでインストールしたいバージョンの[Download]をクリックします。
- /www/zendcore/htdocsディレクトリにphpmyadminというフォルダを作成します。
- ダウンロードしたファイルの中身を解凍します。解凍したファイルは新しく作成したphpmyadminフォルダにコピーします。
- 構成ファイルを作成します。phpMyAdminにはセットアップ用のスクリプトがありますが、ファイルをマニュアルで作成した方が簡単のようです。config.sample.inc.phpをconfig.inc.phpにコピーします。
- 認証方法を選択します。クッキーを使った方法はまだSystem iでは動作しないようです。これはおそらく暗号タイプがサポートされていないためと思われます。私はHTTP認証を選択しました。私のconfig.inc.phpファイルは編集して以下のようになっています。
$cfg['Servers'][$i]['auth_type'] = 'http';
// comment out the next two lines
because user will log in each time//$cfg['Servers'][$i]['user'] = '
//$cfg['Servers'][$i]['password'] = '; - config.inc.phpを保存します。
- http://www.example.org:89/phpmyadmin/を表示して、ご自分のMySQLユーザー名(おそらく「root」)とパスワードでログインします。するとphpMyAdminのメイン・ページが表示されるはずです(図5)。「Wrong permissions on configuration file, should not be world writable!」というメッセージが表示されたら、config.inc.phpへのアクセス権限を緩和する必要があります。WRKLNKを使用し、オプション9 (権限)を選択して*PUBLICの権限を*R (読み込みのみ)に変更します。
これでphpMyAdminがインストールできました。新しいアプリケーション・データベースをインストールする前後でphpMyAdminのさまざまな有用なオプションをいろいろ使ってみてください。
Mantis Bug Tracker
Zendのソリューション・コンサルタントであるエド・キエトリンスキー氏によれば、ウェブ・ベースのバグ・トラッキング・システムであるMantis Bug Tracker (mantisbugtracker.com)は、最も人気があり、ドキュメントの整備度も抜群のオープンソースPHPヘルプデスク・アプリケーションだそうです。非常に広く受け入れられているMantisはPHP環境をテストするベンチマークとして一般的に使用されている、とキエトリンスキー氏は述べています。
Mantisはバグのトラッキングとそれに対する強化方法をビジュアルに提示することでIT部門の人を支援します。Mantisのウェブ・サイトbugs.mantisbugtracker.comではMantis自体のバグのトラッキング状態も公開されています。Mantis Bug Trackerのインストールは以下の手順で行ないます。
- mantisbugtracker.comを表示して[Download]をクリックします。ダウンロードするファイルの名前はmantis-1.0.6.tar.gzなどのような形をしています。
- /www/zendcore/htdocsにmantisというフォルダを作成します。
- tar.gzファイルの中身を解凍します。mantis-1.0.6フォルダの中にはファイルやフォルダが複数作成されています。それらを上記で作成したmantisフォルダ下にコピーします。
- http://www.example.org:89/mantis/admin/install.phpを表示させます。type of database =MySql、hostname = localhost、username = rootの値はそのままにしておきます。MySQLのルート・ユーザー用に設定した(データベース用の)パスワードがあればそれを入力します。データベース名は「bugtracker」のままにしておきます。管理者ユーザー名と管理者パスワードには(ここでも)「root」とrootのパスワードを使用してください。Print SQL Queries instead of Writing to the Databaseのチェック・ボックスが外れていることを確認してください。Install/Upgrade Databaseをクリックします。
- データベースをチェックしてインストールします。うまくいけば次の頁に緑色の背景に対して各項目の一番下のページまで「GOOD」という単語を繰り返し表示するはずです。
- 頁の一番下に「Install was successful」と表示されているはずです。[Create]をクリックして管理者としてログインし、最初のプロジェクトを作成します。ユーザー名はadministratorでパスワードはrootです。
- セキュリティの観点から、/www/zendcore/htdocs/mantis/adminディレクトリを削除し、administratorに対して新しいパスワードを設定してください。
Mantisをインストールする際のURLはhttp://www.example.org:89/mantisなどのような形をしているはずです。Mantisでプロジェクトを作成する方法については、ferdychristant.com/blog/articles/DOMM-6TGGY4にあるチュートリアルを参照すれることをお勧めします。
Dragonfly CMSのContentManagementシステム
Dragonfly CMS (dragonflycms.org)はPHPで記述されたコンテンツ管理システムの1つで、ロブ・ウォード氏の有名なPHP/System iのサイトであるi5php.netにあるソフトウェアです。ウォード氏がDragonflyを選択した理由は、彼のサイトでそれまで利用可能だったCPGNukeのPHP5互換の後継ソフトウェアだったからです。DragonflyとCPGNukeは一般のメンバーがコンテンツをポストできる場合に鍵となる高レベルのセキュリティを目指しています。
私の場合、最新の安定したバージョン(9.0.6.1)をインストールしようとしましたが、このバージョンのクッキー/セッションの処理が私の設定ではうまくいかないことがわかりました。Dragonflyのユーザー・フォーラムで検索したところ、並列バージョンシステム(CVS: concurrent versions system)にある新しいバージョンの方が、コードはまだ開発中ですが、うまく動作する可能性があるとのことでした。そしてその通り、CVSにあったVersion 9.1.0.9ではクッキーの問題は発生しませんでした。このバージョンは構成ファイルも自動的に作成してくれます。本稿をお読みになっている時点で、もし安定したバージョンがレベル9.1.0.9またはそれ以上になっていれば、そのバージョンをダウンロードしてインストールすることをお勧めします。ただし本稿ではCVS上のバージョンをベースにご紹介します。Dragonfly CMSのインストールは以下の手順で行ないます。
- dragonflycms.orgで[Downloads]-[Core]-[CVS Snapshots]をクリックします。 HTML [.tar.gz]をクリックします。エントリーの日付がSun May 01, 2005 2:05 a.mとなっていて最近の日付になっていなくても、ソフトウェア自体は新しくなっていました。
- [Download Now]をクリックし、html-latest.tar.gzをローカルのハードディスクに保存します。
- /www/zendcore/htdocsにdragonflyという名前のフォルダを作成します。
- html-latest.tar.gzの中身を解凍します。サブフォルダにはファイルやフォルダが複数個解凍されているはずです。これらをdragonflyフォルダにコピーしてください。ダウンロードしたモジュールが「安定した」リリースであれば、public_htmlの中身だけをコピーすればよいでしょう。
- ウェブ・ブラウザでhttp://www.example.org:89/dragonfly/install.phpを表示させます。
すべてが正しく設定されていれば、Dragonflyのライセンスとインストーラが表示されるはずです。次々と表示される画面で[Next]をクリックして、エラーとならないことを確認してください。Database Configurationの頁でSQL layer: MySql、Hostname: localhost、Database name: dragonfly、Table prefix: cms、Users table prefix: cmsなどの値をデフォルトのままにしておいて下さい。ログイン名を「root」に更新し、ログイン・パスワードはMySQLのrootユーザーのパスワードに変更してください。[Next]をクリックします。 - スクリプトがdragonfly という名前のMySQLデータベースを追加します。万が一追加に失敗しても、phpMyAdminで作成することが可能です。データベースが追加されたら、「Database connection succeeded.」というメッセージが表示されるはずです。[Next]-[ Let's build the database]をクリックします。「The database has been properly installed, now let's set up some necessary information!」というメッセージが表示されるまでは画面上の値をデフォルトのままにして進みます。[Necessary info]をクリックします。「Let's set up the necessary info:」で始まる、設定の一覧が表示されます(図6)。変更しなければならない設定はSite Name (好きな名前に設定してください)、Administrator E-mail (有効なメール・アドレス)とCookie domainで、デフォルトがexample.org:89のような値になっているはずです。:89を削除してexample.org は残しておきます。
- 設定をテストします。特にクッキーの設定についてテストしてください。テストがうまくいけば、管理者用のアカウントを作成するように指示されます。管理者用のユーザー名とパスワードを選択します。パスワードには少なくとも大文字の英字が1つ、小文字が1つ、数字が1つそれぞれ含まれていなければなりません。タイムゾーンを選択し、[Yes, create regular user with data]を選択します。
- 画面上に表示されるセキュリティに関するアドバイスに続き、install.phpとinstallフォルダを削除します。次に[Enter my site to set everything up]をクリックして管理用ページ(http://www.example.org:89/dragonfly/admin.php)を表示させます。
これで自分のサイトをカスタマイズできる準備ができました。詳細な説明はcpgnuke.com/News/article/sid=213.htmlにあるDragonflyのチュートリアルを参照してください。
優秀なオープンソースを探す
オープンソースのソフトウェアを選択するときは、更新が頻繁に行なわれ、活発で大規模なコミュニティーに支えられているものを探すようにしてください。
hotscripts.comやsourceforge.netから探し始めると良いでしょう。
この機会を利用して、System iの信頼性と豊富で柔軟性に富んだPHPオープンソース・アプリケーションを組み合わせて使ってみてください。ソフトウェアを使って、そこから学び、活気に溢れたコミュニティーに参加してください。