投稿日 2010年2月22日 月曜日 カテゴリ FastCGI, IIS 投稿者 omaeComments Off 

こんにちわ。omae です。

さて、前回では IIS7 + FastCGI で PHP 5.3 を実行できるようにしました。

少し試しているうちに php のプロセス自体は 4 つまで増えるようになっている…ということに気づきました。 また当然ながらこの設定を変更する方法が用意されており、一つは %WINDIR%\system32\inetsrv\appcmd コマンドを用いるもので、もう一つは IIS マネージャから行うものです。

ここでは IIS マネージャから行う方法をやってみます。

手順

1. IIS 7.0 Administration Pack をインストール

Administration Pack : The Official Microsoft IIS Site からインストーラをダウンロードします。右のほうに Or, download x86 / x64 のような表記があるので実行環境に合ったものをダウンロードします。

ダウンロードしたらその MSI を実行してインストールします。

2. IIS マネージャを起動

IIS マネージャを起動すると FastCGI Settings アイコンが増えているのが確認出来ると思います。

3. FastCGI Settings を開く

FastCGI Settings アイコンを開くと設定されている FastCGI アプリケーションの一覧が表示されます。 一覧から設定したいアプリケーションのところで double click すると設定が変更出来るようになっています。

主に変更するのは MaxInstances (FastCGI ワーカープロセスの数) と InstanceMaxRequests (各ワーカープロセスの最大のリクエスト処理数。この値に到達するまでプロセスが再利用される) だと思います。

それ以外の設定の詳細は IIS 7.0 コンフィギュレーション リファレンス – FastCGI アプリケーション <application> に解説がありますので、これを確認しつつ必要であれば設定を行います。

参考

ソフトウェアエンジニアのためのバグトラッキングシステム : Ciklone

ソフトウェアエンジニアのためのバグトラッキングシステム

ソフトウェアエンジニアのためのバグトラッキングシステム

投稿日 2010年2月22日 月曜日 カテゴリ FastCGI, IIS, PHP 投稿者 omaeComments Off 

こんにちわ。omae です。

今回は IIS 7 で PHP 5.3 を実行する環境が必要になったのでその手順を残しておきたいと思います。

作業しようとしてから気づいたのですが PHP 5.3 から isapi モジュールが廃止されていました。PHP 5.2 以前までは isapi モジュールで環境を作成していたのですが、廃止されてしまったものはしょうがありません。IIS 7 からは FastCGI が正式に対応しているので、こちらで設定することにします。

手順

1. PHP 5.3.1 をインストール

PHP For Windows: Binaries and sources Releases より今回は VC6 x86 Thread Safe (ZIP) を使うことにしました。この zip ファイルを C:\php に展開します。

ここでコマンドプロンプトを起動して C:\php\php-cgi.exe -h が実行できることを確認しておきます。実行すると以下のようなエラーが上がる場合は php.ini から extension=php_mssql.dll をコメントアウトします。SQL Server に接続する予定があるなら ntwdblib.dll を準備します。

無事に実行出来た場合:

C:\>C:\php\php-cgi.exe -h
Usage: php [-q] [-h] [-s] [-v] [-i] [-f <file>]
       php <file> [args...]
  -a               Run interactively
  -b <address:port>|<port> Bind Path for external FASTCGI Server mode
  -C               Do not chdir to the script's directory
  -c <path>|<file> Look for php.ini file in this directory
  -n               No php.ini file will be used
  -d foo[=bar]     Define INI entry foo with value 'bar'
  -e               Generate extended information for debugger/profiler
  -f <file>        Parse <file>.  Implies `-q'
  -h               This help
  -i               PHP information
  -l               Syntax check only (lint)
  -m               Show compiled in modules
  -q               Quiet-mode.  Suppress HTTP Header output.
  -s               Display colour syntax highlighted source.
  -v               Version number
  -w               Display source with stripped comments and whitespace.
  -z <file>        Load Zend extension <file>.
  -T <count>       Measure execution time of script repeated <count> times.

2. IIS で FastCGI が使えるように設定します

サーバーマネージャを起動して「Web サーバー (IIS)」の機能に「CGI」がインストール済みになっていることを確認します。 インストールされていない場合は「役割サービスの追加」からインストールします。

3. php.ini に fastcgi のための設定を行う

php.ini を開いて次の設定に変更します。

fastcgi.impersonate = 1
fastcgi.logging = 0
cgi.fix_pathinfo = 1
cgi.force_redirect = 0

4. IIS マネージャから PHP のハンドラを設定する

a. IIS マネージャを起動し、ハンドラマッピングを開きます。

b. 「モジュールハンドラの追加」を選択し、以下の要領で *.php に対して fastcgi による php の実行を設定します。

5. phpinfo.php にアクセスして確認

C:\inetpub\wwwroot\phpinfo.php などに <?php phpinfo(); と書いたファイルを用意して、このファイルにブラウザからアクセスしてみます。

無事に phpinfo() が参照できれば、設定は完了です。

ついでにタスクマネージャを起動して FastCGI なので php-cgi.exe プロセスがいるか確認してみましょう。

ちゃんといますね。

参考

ソフトウェアエンジニアのためのバグトラッキングシステム : Ciklone

ソフトウェアエンジニアのためのバグトラッキングシステム

ソフトウェアエンジニアのためのバグトラッキングシステム

投稿日 2010年1月25日 月曜日 カテゴリ ソフトウェア開発, テスト 投稿者 syojiComments Off 
あなたの開発チームはバグ管理をどのようにやっていますか?

組込みシステムエンジニアやWebアプリケーションエンジニア、多くのソフトウェア開発に携わる開発者達。 製品開発やシステム開発の現場で「バグ管理」はどのようにおこなっているでしょうか。

  • 「ワープロソフトやスプレッドシート?」
  • 「オリジナルのツール」
  • 「高いライセンス料を払ったシステム?」
  • 「オープンソースで構築」

様々な方法でプロジェクトのバグを管理していると思います。

この記事を見てくださった方達はバグ管理の重要性を知っていて、今のやり方になにかしらの課題があって改善したいとお考えだと思います。

プログラムを開発するとき、複雑で大量にある課題・タスク・バグをきちんと漏れなく管理し、 データベース化しておくことは重要なことです。プロジェクトの成果物やリソース、活動状況をすべて追跡できる仕組みを導入することで、 問題を発見しやすく、製品の品質向上に繋がります。

複雑で大規模化しているソフトウェア開発にとって、バグ管理システムは必須のツールです。

ここで、バグ管理の必要性(メリット)について書き出してみたいと思います。

  • バグデータベースが用意されることで障害についてチーム内の意思疎通がスムーズになる
    • 標準化されたレポートは、自由形式の電子メールや机越しの話よりも正確に内容を伝えることが出来ます
  • データベース化することで、バグの通番管理(追跡と参照)が自動化され、レポートのための分析や報告が提供できる
  • 開発チームは、プロジェクトチーム、マネージャ、顧客、ユーザのそれぞれにとって重要な観点から考え修正を進めることができる。
    • バグ管理システムを使わない場合、開発者やテスターの声が大きい担当者の報告したバグほど早く修正されがちになる
  • バグの発見→レポート→担当者割当→解決について、全てのライフサイクルを通じたバグ管理が出来る。
    • バグがどこかのライフサイクルに潜り込み、早期修正が必要なバグから注意がそれることがない。
  • 開発チームやプロジェクトチーム、テスターの全員が最新の状況を簡単に入手できる。
  • 解決したバグはナレッジとなる。
    • これらのバグ情報は、出荷される製品に紛れ込み、サポート部隊のコストを上げる原因、売上の伸び悩み、使えないシステムという辛らつな評価につながる傾向を見つけることが出来るかも知れない。

参考資料:基本から学ぶテストプロセス管理 – コンピュータシステムのテストを成功させるために -


Webベース バグ管理&バージョン管理システム「Ciklone」
60秒ではじめることが出来る、ソフトウェアエンジニアのためのバグ管理システム

投稿日 2010年1月14日 木曜日 カテゴリ ZABBIX 投稿者 sugimotoコメント(0) » 

sugimotoです。

ZABBIX agent をWindowsにいれて、Windowsサーバーの監視をしているんですが、イベントログのエラー監視をしたくなりました。

ログ監視によるフィルタリングはうまくできそうになかったので次のような UserParameter を zabbix_agentd.conf で設定するとエラー数がカウントできました。

UserParameter=eventlog.count[*],c:\windows\system32\cscript 
    c:\windows\system32\eventquery.vbs /FI "type eq $1" 
    /L application /FO csv /NH | find /c ","

eventquery の各パラメーターは以下の通りです。

  • /FI : イベントログをフィルタします – type er xxx でログタイプを指定
  • /L : イベントログの種類を指定します – 今回はアプリケーションログでした(system|security)など指定
  • /FO : アウトプットの形式 – 余計な行をフィルタしたいのでCSVを指定しました
  • /NH : ヘッダを表示しない – カウントするのでヘッダはいらないですね

すべてのオプションを確認するには、コマンドプロンプトで以下のコマンドを実行します

c:\windows\system32\cscript c:\windows\system32\eventquery.vbs /?

あとはWebインターフェイスで item に eventlog.count[error] とか指定するとエラーをカウントします。eventlog.count[warn] とかも指定可能

ただし、期間を指定してないので、itemのほうでDiffをとるように設定しましょう。

ソフトウェアエンジニアのためのバグトラッキングシステム : Ciklone

ソフトウェアエンジニアのためのバグトラッキングシステム

ソフトウェアエンジニアのためのバグトラッキングシステム

投稿日 2009年12月9日 水曜日 カテゴリ ZABBIX, サーバーインフラ 投稿者 sugimotoコメント(0) » 

sugimotoです。

昨日、ZABBIX 1.8 をインストールしていたところ、Web UIのインストールではまりました。 環境は CentOS でPHPなど、必要なライブラリは yum でインストールしていました。

サーバーの設定確認をするステップ、次の画面で、MB string supportfalseになっていました。

zabbix_install

php-mbstring をインストールしていなかったことに気がつき、mbstring をインストールしたけど、OKにならず。。

しばらく悩んだあと、Googleで調べるとこんなエントリがありました。

mbstring ライブラリのチェックでPHP 5.2 から導入された関数をチェックしているため、PHP5.1以前のバージョンをインストールした環境の場合、mbstringが設定されててもチェックが通らないらしい。

includes/locales.inc.php

     39 function mbstrings_available(){
     40         $mbstrings_fnc_exist =
     41                 function_exists('mb_strlen') &&
     42                 function_exists('mb_strtoupper') &&
     43                 function_exists('mb_strpos') &&
     44                 function_exists('mb_substr') &&
     45                 function_exists('mb_stristr') &&
     46                 function_exists('mb_strstr');
     47
     48 return $mbstrings_fnc_exist;
     49 }

対応として、44-46行目を変更

includes/locales.inc.php

     39 function mbstrings_available(){
     40         $mbstrings_fnc_exist =
     41                 function_exists('mb_strlen') &&
     42                 function_exists('mb_strtoupper') &&
     43                 function_exists('mb_strpos') &&
     44                 function_exists('mb_substr'); # &&
     45  #               function_exists('mb_stristr') &&
     46  #               function_exists('mb_strstr');
     47
     48 return $mbstrings_fnc_exist;
     49 }

これでうまくとおりました。めでたしめでたし。

よくみたら、ZABBIX1.8の “known problems” に書いてました。。マニュアルはよくみましょう。。

ソフトウェアエンジニアのためのバグトラッキングシステム : Ciklone

ソフトウェアエンジニアのためのバグトラッキングシステム

ソフトウェアエンジニアのためのバグトラッキングシステム

次のページ »