本連載は、これからWebアプリケーション開発を習得しようとする方や本格的なプログラミング経験の少ない方を対象にしています。連載途中から始まるサンプルWebアプリケーション(簡単なショッピングサイト)開発を進めていきながら、基本事項や注意点などについて詳しく解説していきます。
連載第1回目では、MySQL+PHP+Apacheのインストールと動作確認までを解説します。
はじめに、PHP(Personal Home Page tool)について簡単に紹介します(注)。ご存じのように、PHPはWebアプリケーションの定番として定着しています。また、Strutsのような大規模開発向けフレームワークがもてはやされる一方で、PHPをはじめPerlやRuby、Pythonといったスクリプト系言語に代表される「Lightweight Language」が手軽さと機能の豊富さから近年再注目されています。特にDBやWebとの相性がいいPHPは、初歩的なWebアプリケーションから本格的な用途まで幅広く利用されています。
注:快速MySQLでデータベースアプリ! 第5回 PHPで実用アプリケーションを作ろう(前編)でPHP4までの歴史を紹介していますので、ここではそれ以降の動きについて説明します。
PHP 4.1まではおおむね順調にリリースされていたのですが、PHP 4.2で「register_globals問題」が大きく取りざたされました(コラム1)。ちなみに、快速MySQLでデータベースアプリ!の第5、6回で紹介しているPHPサンプルもこの被害を受けています。こうした混乱の後に発表されたのが、PHP 5.0です。PHP 5.0にはZend Engine 2.0が採用され、オブジェクト指向やWebサービス機能を強めるなど時勢が強く反映されています。
また、現在ではMySQL、PostgreSQL、Oracle、Microsoft SQL Serverなど対応するDBMSも多くなり、PHP 5.0においては軽量データベースSQLiteをアプリケーションに組み込むことができます。特にMySQLに関しては、PHP/FIのころからかかわりが深く、MySQL 4.1で可能になったトランザクション機能にも拡張ライブラリでいち早く対応しています(コラム2)。
「register_globals問題」とは、セキュリティ上の観点からPHPの動作設定項目の1つ「register_globals」のデフォルト値を「On(PHP 4.1まで)」から「Off(PHP 4.2以降)」に変更したことによる一連のトラブルを指します。デフォルト値が変更になったためコードの互換性が損なわれ、意図的に「register_globals=On」とするか、コードの修正が必要になりました。
PHPは、MySQLネイティブAPI以外にもPEAR::DBやPDO(PHP Database Object)といった抽象化レイヤを使用できます。抽象化レイヤを利用することでDBMS製品による機能差をAPIで吸収し、DBMSに依存するコードを極力排除できます。その一方「多くの抽象化レイヤが存在する」「パフォーマンスで劣る場合がある」などの点を考慮して、本連載では普遍的な操作が可能なMySQLネイティブAPIを使って解説します。
PHP4で作るWeb-DBシステム
http://www.atmarkit.co.jp/flinux/php4/php4_1/php1.html
オブジェクト指向言語に生まれ変わるPHP5[前編]
http://www.atmarkit.co.jp/flinux/special/php5/php5a.html
オブジェクト指向言語に生まれ変わるPHP5[後編]
http://www.atmarkit.co.jp/flinux/special/php5/php5c.html
多くのディストリビューションではApache、MySQL、PHPをほぼ標準で用意しています。こうした構成は「LAMP(Linux+Apache+MySQL+PHP)」といわれ、高い人気を集めています。また、最近では「LAPP(Linux+Apache+PostgreSQL+PHP)」のような組み合わせも見られます。ちなみに、Windows環境でもXAMPPを利用すれば、各ソフトウェアを一括でインストールできます。
表1に、本連載で使用するソフトウェア構成を示します(注)。
Linuxプラットフォーム | Fedora Core 6(以下、FC6) |
---|---|
DBMS | MySQL 5.0 |
httpdデーモン | PHP 5.1を組み込んだApache HTTPD 2.2 |
表1 本連載で使用するソフトウェア構成 |
注:本連載では、すべてのサービスを1台のサーバにインストールしています。また、インストールに関しては極力提供されているRPMパッケージを利用しています。
インストールは1.MySQL、2.Apache、3.PHPの順で行います(注)。また、以降の作業はすべてrootユーザーで行ってください。ちなみに、Fedora Core以外のディストリビューションでも利用できるようにバイナリアーカイブやソースファイルからのインストールについてもコラム形式で紹介していきます。
注:Apache、PHPをインストールする際に、MySQLのパッケージに含まれるクライアントライブラリが必要になるので、この順番でインストールしてください。
MySQLとは、MySQL ABが開発・サポートするGPLなリレーショナルデータベース管理システム(RDBMS)です。MySQL 4.1で採用されたトランザクションに加えて、MySQL 5.0以降ではビューやストアドプロシージャが使用できるようになり、従来の高速動作に加えエンタープライズ色がさらに強調されています。
MySQLをインストールする前に、念のためMySQLがインストール済みかどうかをrpmコマンドで確認します。
# rpm -qa mysql* mysql-server-5.0.27-1.fc6 mysql-5.0.27-1.fc6 mysql-devel-5.0.27-1.fc6 (省略)
MySQLの新規インストールや関連パッケージの追加インストールは、以下のようにyumコマンドで実行します。
# yum install mysql*
サービスの起動/停止は、以下のようにinitスクリプトを利用します。
# /etc/init.d/mysql start
# /etc/init.d/mysql stop
MySQL ABが提供しているRPMファイルやtarバイナリアーカイブからインストールする場合は コラム3、4を参考にしてください。
RPMファイルは、MySQL ABのWebサイトhttp://dev.mysql.com/downloads/mysql/5.0.html#downloadsにあります。CPUタイプ、ディストリビューションなど自分の環境に合ったものをダウンロードしてください(注)。また、必要なファイルは単一ではないので、表2を参考に、それぞれ取得してください。
注:もし、該当するものがない場合は「Linux x86 generic RPM」からダウンロードしてください。
Server | MySQLサーバの本体 |
---|---|
Client | クライアントプログラム |
Shared libraries | 共有ライブラリ |
Headers and libraries | ライブラリやインクルードファイル |
表2 インストールするファイル |
各RPMファイルが用意できたら、rpmコマンドに「-ivh」オプションを指定してそれぞれインストールします(注)。ちなみに「-i」はインストールの実行、「-v」はインストール過程の詳細情報を表示、「-h」はインストールの進行状況を出力します。
注:すでにMySQLがインストールされている場合は、「-Uvh」オプションでアップデートをするか、既存パッケージを削除してからインストールしてください。
# rpm -ivh MySQL-server-5.0.27-0.i386.rpm # rpm -ivh MySQL-client-5.0.27-0.i386.rpm # rpm -ivh MySQL-devel-5.0.27-0.i386.rpm # rpm -ivh MySQL-shared-5.0.27-0.i386.rpm
# /usr/bin/mysqld_safe --user=mysql &
各プラットフォームに合わせて最適化されたビルド済みtar.gzバイナリアーカイブファイルが、MySQL ABから提供されており、RPMを利用できないディストリビューションでもインストールできます。
tar.gzバイナリアーカイブは、http://dev.mysql.com/downloads/mysql/5.0.html#downloadsにある「Linux (non RPM packages) downloads」からダウンロードできます。CPUタイプやglibcのバージョンなど自分の環境に合ったものを選択してください。
Standard | 標準的なパッケージ |
---|---|
Max | NDBクラスタや多くのストレージエンジンに対応したパッケージ |
Debug | デバッグ用途向けパッケージ |
表3 パッケージの種類 |
ダウンロードしたら、下記の手順でインストールします。
# tar xvfz mysql-standard-5.0.27-linux-i686.tar.gz ←tar.gzの展開 # mv mysql-standard-5.0.27-linux-i686 /usr/local/mysql ←/usr/localへ移動 # groupadd mysql ←グループの追加 # adduser -g mysql -d /usr/local/mysql/data mysql ←ユーザーを追加 # cd /usr/local/mysql ←ディレクトリの移動 # ./scripts/mysql_install_db --user=mysql ←初期データベースの作成
# /usr/bin/mysqld_safe --user=mysql &
MySQL AB
http://www.mysql.com/
エンタープライズ市場に向かうMySQL 5.0[前編]
http://www.atmarkit.co.jp/flinux/special/mysql5/mysql5a.html
エンタープライズ市場に向かうMySQL 5.0[後編]
http://www.atmarkit.co.jp/flinux/special/mysql5/mysql5d.html
Copyright © ITmedia, Inc. All Rights Reserved.