容易な統合開発のために XAMPP をインストールする

オープン・ソースで多重階層のソフトウェア開発に革命をもたらし得るミドルウェア・スタック

Apache Friends にある XAMPP のようなオープン・ソース・スタックを使用すると、安定で標準化された環境でアプリケーションを書いたり配布したりすることが容易になるため、オープン・ソース開発を単純化することができます。これまで伝統的に AMPP(つまり Apache、MySQL、PHP そして Perl)は、別々の製品としてインストールされ、設定されてきました。これらを統合したミドルウェア・スタックとして組み合わせる傾向によって、少なくともローエンドのアプリケーションでは、オープン・ソース開発が J2EE アプリケーション開発に対抗できるだけのものとなります。この記事では、Mandrake Linux 10.0 に XAMPP をインストールし、設定し、バックアップする方法と、XAMPP の設定管理方法、また XAMPP 環境に自分のアプリケーションをインストールする方法について学びます。

Nils-Erik FrantzellComputer Science Department, UC Santa Cruz

Nils-Erik Frantzell は現在、カリフォルニア大学サンタ・クルズ校でコンピューター・サイエンスを学んでいます。彼の関心対象は Web プログラミング (特に PHP) やネットワーク、オープン・ソース技術、そしてコンピューターのハードウェアをいじり回すことです。コンピューターから離れている時には、電子音楽を聴きながら肉食魚の世話をしています。



2004年 11月 30日

Java 2 Enterprise Edition の登場によって、Java アプリケーションを書き、展開する作業を大幅に簡素化する統合されたミドルウェア・スタックが提供されたことにより、ソフトウェアを取り巻く状況が劇的に変化しました、オープン・ソースのコミュニティーにはそれに似た統合アーキテクチャーが無かったため、しばらくの間、取り残された状態になっていました。

最近、Apache Friends が提供する XAMPP のような、統合されたオープン・ソース・スタックが導入されたことよって、この状況が変わり始めています。このスタックは J2EE に比べればまだ非常に単純で基本的なものですが、それでも、より完全なシステム統合に向けての重要なステップと言えます。PHP 5.0(PHP を完全にオブジェクト指向にします)は、この傾向が加速することを示す良い指標と言えるでしょう。

この記事では、統合されたオープン・ソース・スタックの一つであり、Apache Friends が提供する、XAMPP を取り上げます。

XAMPP の紹介

XAMPP は完全機能の AMPP (Apache、MySQL、PHP、Perl)パッケージであり、Linux で利用できる、数少ない非商用 AMPP ミドルウェア・スタックの一つです。堅固に統合されているため、XAMPP を使用すると、個人用のホーム・ページから完全機能の実稼働サイトまで、何でも実行することができるようになります(ただし開発目的に限ります。XAMPP はセキュリティーの問題から、実稼働のサーバーで使われることは意図していません)。

XAMPP の強みは下記のような点です。

  • インストールや設定が容易
  • トラフック・レポートを生成したり PHP コンテンツを加速したりすることが容易になるような、便利なパッケージを幾つか含んでいる
  • SUSE や Red Hat、Mandrake それに Debian などの Linux ディストリビューション上で、また Windows や Solaris 上でも完全にテストされている

この記事では、XAMPP を Mandrake Linux 10.0 にインストールします。まず、XAMPP に含まれてくるデフォルトのパッケージを見るところから始めましょう。

基本パッケージ

基本パッケージには次のような、システムやプログラミング・ソフトウェア、それにサーバー・ソフトウェアが入っています。

  • Apache - 有名な Web サーバー
  • MySQL - 素晴らしい、無料のオープン・ソース・データベース
  • PHP - プログラミング言語 (この記事の執筆時点では 4.3.8 と 5.0.1)
  • Perl - プログラミング言語
  • ProFTPD - FTP サーバー
  • OpenSSL - セキュア・ソケット・レイヤーのサポート用

グラフィックス・パッケージ

XAMPP にはグラフィックス関係として、次のパッケージが含まれています。

  • GD - 「Graphics Draw」ライブラリー
  • libpng - 正式な PNG 参照ライブラリー
  • libjpeg - 正式な JPEG 参照ライブラリー
  • ncurses - キャラクター・グラフィックス・ライブラリー

データベース・パッケージ

そして、統合スタックと言うからには、下記のようなデータベース・パッケージが含まれています。

  • gdbm - 標準 UNIX dbm ライブラリーの GNU 実装
  • SQLite - 超小型で設定不要の SQL データベース・エンジン
  • FreeTDS - UNIX や Linux プログラムを Microsoft SQL や Sybase データベースにアクセスできるようにするデータベース・ライブラリー

XML パッケージ

XAMPP には XML 開発用に下記が含まれています。

  • expat - XML パーサー・ライブラリー
  • Salbotron - XML ツールキット
  • libxml - GNOME 用の XML C パーサーとツールキット

PHP パッケージ

XAMPP には PHP 開発用に下記が含まれています。

  • PEAR - PHP ライブラリー
  • PHP で動的 PDF 文書を生成する pdf クラス
  • TURCK MMCache - PHP パフォーマンス・エンハンサー

その他のパッケージ

そして最後に、次のようなパッケージが含まれていることで XAMPP の多様性が分かります。

  • zlib - 圧縮ライブラリー
  • mod_perl - 実行可能形式の Perl インタプリターを Apache に埋め込む
  • gettext - GNU パッケージで複数言語のメッセージ生成を補助するツールセット
  • mcrypt - 暗号化プログラム
  • Ming - Flash (SWF) 出力ライブラリー
  • Freetype2 - ソフトウェア・フォント・エンジン
  • IMAP C-Client - メール・プログラムの API

今度は XAMPP のインストールについて説明しましょう。


インストールとデーモン化

XAMPP をインストールするには、Apache Friends の Web サイト(参考文献にリンクがあります)から最新のバイナリーをダウンロードします。これを、次のコマンドを使って /opt に展開します。

tar xvfz xampp-linux-1.4.7.tar.gz -C /opt

それだけで終わりです! これで XAMPP が /opt/lampp にインストールされました。それまで /opt にインストールされていたものは、全て上書きされます。もし皆さんが古いバージョンの XAMPP を実行していて、再度全パッケージをインストールしたくない場合には、Apache Friends からアップグレード用のパッケージをダウンロードすることができます。

これで全てがインストールできたので、新しいデーモンを開始しましょう。カレントのワーキング・ディレクトリーを /opt/lampp (cd /opt/lamp) に変更し、次を入力します。

./lampp start

そうすると下記が見えるはずです。

Starting XAMPP for Linux 1.4.7...
XAMPP: Starting Apache with SSL (and PHP5)...
XAMPP: Starting MySQL...
XAMPP: Starting ProFTPD...
XAMPP for Linux started.

これで XAMPP が動作するようになりました。これを検証するのに一番良い方法は、ブラウザーを開き、アドレス・バーに localhost と入力して Enter キーを押します。そうすると、XAMPP の先頭ページが開きます。

図 1. XAMPP の先頭ページ
XAMPP の先頭ページ

必要なサービスが正しく起動しているかを見るために、左側のナビゲーション領域にある Status リンクをクリックします。全てが正常であれば、次のようなページが見えるはずです。

図 2. サービス・ステータス・ページ
サービス・ステータス・ページ

おめでとうございます! これで完全動作する AMPP 開発環境のインストールと設定が終わりました。では簡単なアプリケーションをインストールして、この環境をどのように使うかをお見せしましょう。


簡単なアプリケーションをインストールする

XAMPP の基本機能を利用するためには、簡単なアプリケーションが必要です。一番良いのはデータベースのバック・エンドを利用するアプリケーションです。比較的単純なデータベースで、一つだけテーブルを含むようなもので充分です。

テスト用のデータベースには、一つだけカラムのあるテーブルが一つだけあります。(コンピューター時代の)テスト・プログラムの伝統に従い、このテーブルが一つのレコード「Hello World!」を保持するようにしましょう。このデータベースに、Perl スクリプトと PHP スクリプトの両方を使ってアクセスします。どちらのスクリプトもデータベースをアクセスして一つの行を取得し、それを画面に出力します。

ツール

このデータベースを、PHP で書かれた Web ベースの MySQL 管理ツールである phpMyAdmin を使って生成、管理することにします。phpMyAdmin には素晴らしいユーザー・インターフェースがあり、簡単なことから複雑なことまで、例えばデータベースやテーブルの生成/削除/変更からデータのエクスポートやキー管理、SQL ファイルの処理まで、様々なことに使用することができます。phpMyAdmin の素晴らしさは下記のように表現することができます。

  • 尻込みしたくなるようなコマンドライン・インターフェースによらなくても、初心者が MySQL に馴染めるようになる
  • 上級ユーザーであれば、単純な繰り返し作業を容易に素早くできるようになる
  • 何でもできてしまうシェル・アクセスを許すことなく、データベースの管理権限を誰かに与える必要のある場合に便利

データベースを作る

phpMyAdmin でテスト用のデータベースを作るには、次のようにします。

  1. XAMPP のスタート・ページ(localhost)に行く
  2. Tools の下にある左側のナビゲーターにある phpMyAdmin を選択する
  3. phpMyAdmin ホーム・ページの Create New Database フィールドで hello_world を入力し、Create をクリックする

今度はこのデータベースの中にテーブルを作り、そのテーブルがいくつのフィールド(フィールドとカラムは同じです)を持つのかを規定する必要があります。このテーブルを「hello_table」と呼ぶことにし、「Hello World!」というレコードを保持する一つのフィールドを持つようにします。Name テキスト・フィールドに hello_table と入力し、Fields テキスト・フィールドに 1 と入力します。終わったら Go をクリックします。

今度はデータベース生成の最後のステップです。このカラムに対して、名前とデータ・タイプ定義を選択します。「hello」というテーマに固執することにし、カラムの名前を「hello_column」とします。Field テキスト・フィールドに hello_column と入力します。

このカラムには「Hello World!」という文字列を保存するので、そのタイプは長さ 12(文字列「Hello World!」の長さ)の char である必要があります。デフォルトのタイプ varchar で充分です。Type の隣にある Length/Values テキスト・フィールドに、最大長さ 12 文字として 12 を入力します。このページの他のフィールドに関しては気にする必要はありません。Save をクリックして先に進みます。

全てが正しく行われれば、次のようなものが見えるはずです。

図 3. Hello World データベースのサマリー
Hello World データベースのサマリー

では、レコード「Hello World!」を挿入しましょう。Insert タブをクリックし、Value テキスト・フィールドで「Hello World!」を入力します。この場合は Function ドロップダウン・リストはそのままにしておきます。Go をクリックして、データベースに「Hello World!」レコードを挿入します。

レコードが正しく挿入されたかどうかを確認するには、Browse タブをクリックします。リストされている「hello world」が表示されるはずです。

スクリプト

これでバック・エンドが動作するようになったので、今度はスクリプト部分を処理します。ここでは、一つは Perl、一つは PHP という、2 つのスクリプトを使います。それぞれのスクリプトに対する要求は、一つのデータベース接続、一つのデータベース・アクセス、そして取得した行を画面に表示する一つの出力です。

リスト 1. PHP で PEAR::DB を使った、単純なデータベース接続とデータ取得
require_once 'DB.php'; // must be included in any script that uses PEAR::DB
// it is a huge security risk to store your database connection information
// in the same file as your code. We have done it here solely for the purpose
// of this example. Please store your database connection information in another
// file that is not in your document root directory and adequately protected.
// database connection information
$db_host    = "localhost";  	  // hostname of the database server
$db_user    = "root";           // database user's username
$db_pass    = "";      		  // database user's password, nothing by default
$db_name    = "hello_world";    // the name of the database to connect to
$db_type    = "mysql";          // the type of database server.
// your data source name string. This contains the connection
// information for your database.
$dsn = "$db_type://$db_user:$db_pass@$db_host/$db_name";
// creates a database connection object or a database error
// object based on the success of the database connection.
$db = DB::connect($dsn, TRUE);
// if an error was encountered, the script exits with an error message
if (DB::isError($db)) {
    die($db->getMessage());
}
// SQL query that you wish to use to query the database
$sql = "SELECT * FROM hello_table";
// query the database, store result in $result
$result = $db->query($sql);
// exits with an error message if the query was unsuccessful
if(DB::isError($result)){
		 die($result->getMessage());
}
// fetch rows from the database until no more rows exist.
// output the "hello_column" field of each row to the screen.
// once no more rows exist, exit with an error message.
while($row = $result->fetchRow(DB_FETCHMODE_OBJECT)){
		 if(DB::isError($row)){
		 		 die($row->getMessage());
		 }
		 print("<H1>$row->hello_column</H1>");
		 $result->free();
}
$db->disconnect(); //disconnect from the database

それぞれのスクリプトがデータベースに接続し、一行のデータを取得し、その行を画面に出力します。PHP のデータベース・アクセスは PEAR::DB を使って行われます。PEAR::DB は手軽なデータベース抽象化レイヤーであり、どのようなデータベースが実装されているかによらず、同じデータベース・アクセス・コードを使用できます。残念ながら XAMPP にはまだ、Perl 用のデータベース抽象化レイヤーはありません。

スクリプトを置く

さて、これで必要なものが全て揃いました。データベースは動作するようになり、テスト用に 2 種類のスクリプトがあります。あとはこのスクリプトを適切な場所に置くことだけです。ハード・ドライブ上で XAMPP がどのように配置されているかをリスト 2でちょっと見てみましょう。

ここで私達に関心のあるディレクトリーは、Apache Documents ディレクトリーである /opt/lampp/htdocs/です。誰かがその Web サイトのルート・アドレスにアクセスした時に表示したい Web ページや関連ファイルは全て、ここに置かれます。XAMPP の先頭ページを見ることはできたので、このディレクトリーには既に幾つかのファイルがあります。それを確認するために、ディレクトリー・リストをちょっと覗いてみましょう(ls /opt/lampp/htdocs とタイプします)。

drwxr-xr-x 2 root root 4096 Jan 24 2003 apache
-rwxr-xr-x 1 nobody root 163 Oct 31 2003 index.html
drwxr-xr-x 2 nobody root 4096 Sep 12 21:54 webalizer
drwxr-xr-x 5 root root 4096 Jun 15 06:24 xampp

ご覧の通り、ここには既に中身があります。私達のスクリプトを保存するために、hello_world という新しいディレクトリーを作りましょう(mkdir hello_world)。これから後は、localhost/hello_world をタイプすることで、hello_world ディレクトリーにある全てのものにアクセスできるようになります。さて、2 つのスクリプトをこのディレクトリーに保存しましょう。それで全部終了です!

アプリケーションをテストする

アプリケーションをテストするために、好みのブラウザーから localhost/hello_world と入力します。そうすると、次のようなものが見えるはずです。

図 4. Hello World!
Hello World!

おめでとうございます! XAMPP 上にアプリケーションが設定できています。


セキュリティーの強化

XAMPP は開発環境であることが目的です。ですから XAMPP は、プログラマーが何ら制限無くツールセットを自由に使用できるように構成されています。その自由さの結果として、デフォルトの XAMPP インストールは非常にセキュリティーが低くなっています。例えば、何をするにもログインがほとんど必要ありません。

XAMPP 0.9.5 とそれ以降では、次のコマンドを実行することでセキュリティーを強化することができます。

/opt/lampp/lampp security

そうすると、そこに存在している、セキュアでない様々な部分に対する警告が表示され、それを修正するかどうかを選択するように促されます。これによって XAMPP のインストールはよりセキュアになりますが、XAMPP を実稼働のサーバー上で実行するのはやはり避けるべきです。リスト 3 はセキュリティー・プロンプトを示しています。

リスト 3. XAMPP で表示されるセキュリティーの問題
XAMPP: Quick security check...
XAMPP: Your XAMPP pages are NOT secured by a password.
XAMPP: Do you want to set a password? [yes] yes
XAMPP: Password:
XAMPP: Password (again):
XAMPP: Password protection active. Please use 'lampp' as user name!
XAMPP: MySQL is accessable via network.
XAMPP: Normaly that's not recommended. Do you want me to turn it off? [yes] yes
XAMPP: Turned off.
XAMPP: Stopping MySQL...
XAMPP: Starting MySQL...
XAMPP: The MySQL/phpMyAdmin user pma has no password set!!!
XAMPP: Do you want to set a password? [yes] yes
XAMPP: Password:
XAMPP: Password (again):
XAMPP: Setting new MySQL pma password.
XAMPP: Setting phpMyAdmin's pma password to the new one.
XAMPP: MySQL has no root passwort set!!!
XAMPP: Do you want to set a password? [yes] yes
XAMPP: Write the password somewhere down to make sure you won't forget it!!!
XAMPP: Password:
XAMPP: Password (again):
XAMPP: Setting new MySQL root password.
XAMPP: Setting phpMyAdmin's root password to the new one.
XAMPP: The FTP password is still set to 'lampp'.
XAMPP: Do you want to change the password? [yes] yes
XAMPP: Password:
XAMPP: Password (again):
XAMPP: Reload ProFTPD...
XAMPP: Done.

バックアップを実行する

さてこれで XAMPP のインストールは何週間か動作を続け、かなり大きなサイズのデータ・セットを蓄積しました。これをハード・ディスクのクラッシュで失うリスクは避けたいものです。バックアップはどうすれば良いでしょう?

XAMPP では非常に簡単です。カレント・ディレクトリーを /opt/lampp (cd /opt/lamp) に変更し、次のコマンドをタイプします

./lampp backup

ルート・パスワードをそのコマンドの最後にするように設定してある場合は、ルート・パスワードを MySQL に追加します。そうすると下記が表示されるはずです。

Backing up databases...
Backing up configuration, log and htdocs files...
Calculating checksums...
Building final backup file...
Backup finished.
Take care of /opt/lampp/backup/xampp-backup-15-09-04.sh

バックアップをリストアするには、ルートとして次のコマンドを実行します。

sh backupfilename

全てがうまく行けば、下記のような表示が出るはずです。

Checking integrity of files...
Restoring configuration, log and htdocs files...
Checking versions...
Installed: XAMPP 1.4.7
Backup from: XAMPP 1.4.7
Restoring MySQL databases...
Restoring MySQL user databases...
Backup complete. Have fun!
You may need to restart XAMPP to complete the restore.

XAMPP を再起動 (cd /opt/lampp, ./lampp restart) すると、リストアされたデータが使えるようになっているはずです。


統合 AMPP ソリューションを使い込む準備はできていますか?

統合ソリューション・スタックが J2EE によるソリューションと全面的に競合するかどうかは何とも言えません。ただ、最近の PHP 5.0 のリリース(主な追加として、完全にオブジェクト指向になったことが含まれています)と MySQL データベースの急速な成長とを合わせて考えると、開発者の間で統合 AMPP ソリューション・スタックがより一般的になりつつあるようです。これは XAMPP のようなオープン・ソースのミドルウェア・スタックが、ローエンドのソフトウェア・マーケットでは充分な存在価値があることを示していると思います。

参考文献

  • Apache Friendsから XAMPP をダウンロードしてください。Apache Friends は Apache Web サーバーを普及させるための非営利組織で、ここには XAMPP の最新情報と最新リリースがあります。
  • Road to better programmingシリーズ(developerWorks)は皆さんの Perl の技能向上に役立つ実践的なシリーズです。developerWorks のサイトを探せば、他にも Perl に関する豊富な資料が見つかります。
  • 2 つの記事Connecting PHP Applications to Apache Derby (developerWorks, 2004 年 9 月)とDevelop Perl applications with Apache Derby (developerWorks, 2004 年 10 月) は、PHP や Perl のアプリケーション開発を行う人には必読です。
  • phpMyAdmin projectには、この恐ろしいほど強力な MySQL 管理ツールに関して、豊富な情報やダウンロードがあります。
  • Practical Unix & Internet Security (1996 年 O'Reilly & Associates 刊)は、ユーザー管理からセキュリティー・ポリシーの立案まで、システム・セキュリティーのあらゆる側面に関して非常に参考になります。
  • PHP.netではオンラインで検索できるファンクション・ライブラリーを提供しており、PHP メソッドに関する詳細情報を探したり、PHP 言語のビルドを見つけたりする上で非常に役に立ちます。
  • The PHP Extension and Application Repository (PEAR)では、永遠に人気のあるPEAR::DBを含めて、PHP のプログラミングが簡単になるコンポーネントを提供しています。
  • MySQL に関するヘルプとしては、MySQL reference manualが MySQL のあらゆる側面に関して詳細な情報を提供しています。
  • Apache HTTP Server Projectを見ると、Web で最も一般的なこの http サーバーの最新のビルドと情報を得ることができます。
  • developerWorks のLinux ゾーンには Linux 開発者のための資料が他にも豊富に用意されています。
  • Linux 上で実行する、IBM ミドルウェア製品の無料試用版をダウンロードしてください。developerWorks のSpeed-start your Linux appセクションから WebSphere Studio Application Developer や WebSphere Application Server、DB2 Universal Database、Tivoli Access Manager そして Tivoli Directory Server が入手できます。また、ハウ・ツー記事や技術サポートもご覧ください。
  • developerWorks blogsに参加して、developerWorks コミュニティーに加わってください。
  • Developer Bookstore の Linux セクションではLinux 関係の技術書が値引きして購入できますので、ご利用下さい。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux, Open source
ArticleID=231488
ArticleTitle=容易な統合開発のために XAMPP をインストールする
publish-date=11302004