ローカル開発環境のためのWebサーバー構築の準備

PHP5.4ビルトインWebサーバーを使う。

PHPの5.4からビルトインWebサーバーが付いており、テスト環境でわざわざApatceをインストールする必要がなくなりました。「開発用としてのみ設計されたものであり、 実運用に使ってはいけません」と思いっきり書いてあるのですが、数台の現場端末から実績収集するくらいなら実運用でも耐えられるんじゃないかとも思います。

というのは一般的に客先サーバー環境でのソフトウェアのインストールは制限が多い。「Webサーバーを立ち上げます」と言うと客側で気持ち的に負担になるのでので、「PCにPHPとMysqlをインストールするだけで、数台のPCから簡単に実績収集と管理ができます」と言えば抵抗がずいぶん少なくなります。

1. PHPプログラムの準備

php-5.4.5-nts-Win32-VC9-x86.zipを解凍してものを適当な場所に作ったフォルダ名C:\php(どこでもOK)の下にコピーする。

2. 環境変数にPHPプログラムのパスを追加

コンピューター (右クリ)-> プロパティー > システムの詳細設定のPathに「c:\php;」を追加。

3. ドキュメントルートの作成

適当な場所にドキュメントルート(C:\www\htdocsみたいなもの)を作成。

4. php.iniの修正

php.iniはwindowsフォルダにコピーする必要なし。
C:\php\php.ini-developmentをphp.iniにリネームしてサーバールートの指定を行う。

5. php.exeのショートカットを作成

プロパティに以下のオプションを追加

デフォルトではドキュメントルートは「c:\php」なので「Start in」に「C:\www\htdocs」を追加。
php.exeを常時起動しておく必要があり、タスクバーにphp.exeのアイコンが表示されるのがウザイが、気軽にWebサーバー立ち上げるには便利だと思う。
phpdir

(注1)php.iniを修正してPHPの稼動確認を行う場合はビルトインサーバーを必ずリスタートさせる。php.iniはビルトインサーバー起動時に1度だけ読み込まれるので、php.ini修正の影響を確認するためにはリスタートが必要になる。

PHPビルトインサーバーはApacheなしで完全にPHP5.4単独で稼動します。
問題はPHP5.4はDoS攻撃防止のため受け付けるパラメータ数に上限をかけていること。php.iniの設定を変えても解消されず。うーん。。。

ちなみに>Dos攻撃(hashdos)とは・・・

PHPなど多くの言語では、文字列をキーとする配列(連想配列、ハッシュ)が用意されており、HTTPリクエストのパラメータも連想配列の形で提供されます。PHPの場合、$_GET、$_POSTなどです。

連想配列の実装には、高速な検索が要求されるためハッシュテーブルが用いられます。ハッシュテーブルは、文字列を整数値(ハッシュ値)に変換するハッシュ関数を用いて、平均的には一定時間に検索・挿入・削除が行えるデータ構造です。しかし、ハッシュ値が一致する(衝突する)キー文字列については、通常ハッシュテーブルは順次的な探索となり、検索・挿入などが遅くなります。

hashdosは、ハッシュ値が同じになるキーを多数POSTパラメータに含ませることにより、CPU資源を枯渇させる攻撃です。

方法は.htaccessに「php_value max_input_vars xxxxx」を追記して対応したい。
ところがPHPビルトインサーバーは.htaccessファイルを認識しない・・・。仕方ないのでApacheをインストールしかないなあ。

Apacheを使う。

1. Apacheのインストール

httpd-2.2.22-win32-x86-openssl-0.9.8t.msiをダウンロードして実行。Network NameとServer Domainはlocalhostにする。
localhost

2. ブラウザからlocalhostにアクセス

itworks
Apacheのホームディレクトリはデフォルトではhttpd.confに以下のように設定されている。
C:\Program Files\Apache Software Foundation\Apache2.2\htdocs

3. ApacheとPHPビルトインサーバーの関係

どっちもWebサーバーだが・・・

Apacheを起動するとlocalhostでApacheのホームディレクトリ「C:\Program Files\Apache Software Foundation\Apache2.2\htdocs」を見に行く。

Apacheを停止してPHPビルトインサーバーを起動するとビルトインサーバーのホームディレクトリ「C:\www\htdocs」を見に行く。

ビルトインサーバーのホームディレクトリはphp.exeのショートカットの「Start in」に設定しているだけ。Apacheをインストールしていないのでhttpd.confなんかないし、php.iniに何か指定する必要もない。

4. httpd.confでドキュメントルートを修正(2箇所)

C:\Program Files\Apache Software Foundation\Apache2.2\conf\にあるhttpd.confを修正

5. 指定のディレクトリがドキュメントルートに変わる

ただしPHPが稼動していないのでフォルダ内のツリーが見える。
localhost2

6. ApacheとPHPのリンク

ApacheとPHPのバージョンの違いによってhttpd.confの設定が異なっていたり、設定ファイル自体が異なっていたりする。
面倒くさいのでXAMPPをインストールしちゃおうかなー。

XAMPPを使う。

XAMPP(ザンプ)とは、apache friendsが公開しているWebサーバ及びWebアプリケーション環境を構築するためのフリーソフトウェア群を一括してインストールすることができるパッケージです。パッケージにはApache, MySQL, PHP, phpMyAdmin, FileZilla FTP Server, Mercury Mail Transport Systemが含まれています。

1. インストール

xampp-win32-1.8.0-VC9-installer.exeをダウンロードして実行するだけ。

ただしXAMPPのインストール前にMysqlのみ単独でインストールしていたりすると、XAMPPからインストールしたMysqlが起動しなくなるので、事前にMysqlを完全にアンインストールしておく必要がある。残す必要のあるDBはバックアップ&リストアでXAMPPインストール後に復旧させればいいし。

2. localhostを確認

デフォルトのドキュメントルートはC:\xampp\htdocsでxamppフォルダにリダイレクトされる。

3. Control Panelからhttpd.conf(Configボタン)を修正(2箇所)

4. Control PanelからApacheを再起動

ドキュメントルートがC:/Users/Hp/Documents/www/htdocsに変更されPHPも問題なく稼動。Apache2.2とPHP5.4の連携で苦労したのは何だったんだ・・・。ちなみにphp.iniはC:\xampp\phpにあります。

5. .htaccessファイルの作成

php_value max_input_vars 50000を記述し無事パラメータ制限を回避できた。

6. phpMyAdminの初期設定

phpMyAdminは初期状態でログインなしで使えてしまうのでC:\xampp\phpMyAdmin\config.inc.phpのauth_typeをhttpに変更する。

この後phpMyAdminにroot(PWDなし)でログインすると、ツールバーメニューに「Users」が表示されるので、ここからlocalhostのrootのパスワードを変更し、phpMyAdminを開き直すと該当するPWDが有効になっている。

7. 64bitのWindowsで32bit用MySQL ODBCドライバーを使う

Windowsが64bitでもアプリケーションが32bitであれば当然ながらODBC Connectorは32bit版を使用する。32bit版のODBCドライバを64bit版Winにインストールすると、コントロールパネルからODBC設定画面を起動してもインストールしたはずのMySQL5.1ドライバが表示されない。よってコマンドプロンプトから以下のコマンドで32bit版のODBCデータソースアドミニストレーター画面を表示させ、ホスト名などの設定を行なう。

上記にてシステムDNSを作成しMySQLとのコネクションを確立したら、アプリケーション側に以下のMySQL5.1のConnectionStringを記述(設定)する。

最新情報
お届けします

Twitter で